The Lafontaine Park Noise Monitor is a client-side React application that provides real-time visualization of noise pollution data correlated with electric vehicle adoption rates in Montreal.
- Monolithic Page Component: Currently using a single
Index.tsxcomponent (458 lines) - Shared UI Components: Leveraging shadcn/ui component library
- Data-Driven Rendering: Components respond to data changes from
evData.ts
noise_ev_data.ts → unifiedDataAdapter.ts → evData.ts → Index.tsx → UI Components
↓
Persistent time series with sliding window approach
↓
Real-time updates every 3 seconds with continuous data
↓
Chart rendering with realistic variations
- Local State: Using React
useStatefor component state - No Global State: Currently no Redux/Zustand implementation
- Future: Ready for @tanstack/react-query integration
// Real DRSP/SAAQ data (June 2023 - May 2025)
noiseSeries: Historical monthly noise measurements (LAeq24)
evSeries: Historical monthly EV registrations// Connects real data with UI visualization
generateRealisticNoise(): Multi-factor noise pattern generation
initializeTimeSeries(): Creates initial time series with variations
addNewDataPoint(): Sliding window approach for continuous updates
getDataStrategy(): Determines data source (REAL vs ESTIMATED)// Core data structures
EVAdoptionDataPoint: Historical EV adoption data
NoiseDataPoint: Real-time noise measurements
currentEVData: Live statistics and targets
// Key functions
generateNoiseData(): Creates realistic noise patterns
getCurrentEVAdoption(): Simulates real-time EV data
calculateNoiseReduction(): Correlates EV adoption to noise reduction- Charts: Recharts library for responsive data visualization
- Real-time Updates: 3-second intervals for data refresh
- Interactive Elements: Hover states, tooltips, and responsive design
const translations = {
en: { /* English translations */ },
fr: { /* French translations */ }
}- GDPR Compliance: Modal consent system
- Data Protection: Anonymized data collection only
- Quebec Bill 64: Specific privacy regulation compliance
- Client-Side Rendering: No SSR/SSG
- Data Generation: Client-side simulation (3-second intervals)
- Memory Management: Limited to last 20 data points
- Component Splitting: Break down 458-line Index.tsx
- Memoization: React.memo for expensive components
- Data Caching: Implement react-query for data management
- Code Splitting: Route-based code splitting
// Current: Simulated data
const noiseData = generateNoiseData(evAdoption);
// Future: API integration
const noiseData = await fetchRealTimeNoiseData();- Supabase Ready: Consent storage and user tracking
- API Endpoints: Prepared for real sensor data integration
- Database Schema: Designed for time-series data storage
npm run dev # Vite dev server with hot reloadnpm run build # Production build
npm run preview # Preview production build- TypeScript: Strict type checking
- ESLint: Code quality enforcement
- Prettier: Code formatting (implicit through Lovable)
- Automatic Deployment: Git-based continuous deployment
- Preview URLs: Instant preview for each change
- Custom Domains: Production domain support
- Bidirectional Sync: Lovable ↔ GitHub automatic sync
- Version Control: Full Git history and branching support
- Collaboration: Standard GitHub workflows
- No Sensitive Data: All data is anonymized
- HTTPS Only: Secure data transmission
- Content Security Policy: Standard web security headers
- Minimal Data Collection: Only environmental noise data
- Explicit Consent: Clear user consent mechanisms
- Data Retention: Limited client-side data retention
- Sensor Data Service: Real-time noise data ingestion
- Analytics Service: EV correlation and trend analysis
- User Management: Consent and preference management
- WebSocket Integration: Live data streaming
- Edge Computing: Sensor data processing
- CDN Optimization: Global data distribution
- Montreal Open Data: Real EV registration data
- Sensor Networks: IoT noise monitoring devices
- Weather APIs: Environmental correlation data
- Google Analytics: User behavior tracking
- Custom Analytics: Environmental data insights
- Reporting Dashboard: Administrative data views
- Developer Experience: Excellent tooling and community
- Type Safety: Reduces runtime errors
- Component Reusability: Modular architecture
- Rapid Development: Utility-first styling
- Responsive Design: Mobile-first approach
- Design Consistency: Design system integration
- React Integration: Native React chart library
- Customization: Flexible styling and animation
- Performance: Optimized for real-time data updates
This architecture provides a solid foundation for the current application while remaining flexible for future enhancements and real data integration.