This project is a comprehensive noise monitoring system designed for real-time data collection, processing, and visualization. It consists of a Go backend, a Solid.js frontend, and an embedded client for sensor data acquisition.
- Project Overview
- System Architecture
- Features
- Technologies Used
- Getting Started
- Usage
- API Endpoints
- Embedded Client
- Contributing
- License
The Noise Monitoring System provides a platform for monitoring noise levels across various locations. It features a scalable architecture that can handle high-volume data streams, a responsive user interface for data visualization, and an embedded client for seamless integration with noise sensors.
The system is composed of three main components:
- Backend (Go): A high-performance server responsible for data ingestion, processing, and storage. It uses a PostgreSQL database for data persistence and streams real-time data to the frontend via WebSockets.
- Frontend (Solid.js): A modern, reactive web application that provides a dashboard for visualizing noise data, system metrics, and analytics.
- Embedded Client: A lightweight client designed to run on embedded devices, responsible for collecting sensor data and sending it to the backend.
- Real-time noise level monitoring
- Historical data analysis and visualization
- System performance metrics and trends
- Geospatial data mapping and reverse geocoding
- Scalable data processing with Kafka integration
- Mock data generation for testing and demonstration
- Backend: Go, Fiber, PostgreSQL, Kafka, WebSocket
- Frontend: Solid.js, TypeScript, Tailwind CSS, MapboxGL
- Embedded: C/C++ (Arduino compatible)
- Go 1.18+
- Node.js 22.0+
- PostgreSQL
- Kafka (optional, for stream processing)
-
Clone the repository:
git clone https://github.com/your-username/noise-monitor.git cd noise-monitor
-
Backend Setup:
cd backend-go go mod tidy cp .env.example .env # Update .env with your database and API keys go run cmd/server/main.go
-
Frontend Setup:
cd ../frontend npm install cp .env.example .env # Update .env with your backend API endpoint npm run dev
To start the Go backend server, navigate to the backend-go
directory and run:
go run cmd/server/main.go
The server will start on the port specified in your .env
file (default: 3002).
To start the Solid.js frontend, navigate to the frontend
directory and run:
npm run dev
The application will be available at http://localhost:3000
.
The backend exposes a RESTful API for interacting with the system. Key endpoints include:
GET /api/noise
: Retrieve noise measurements.POST /api/noise
: Create a new noise measurement.GET /api/devices
: Get a list of registered devices.GET /api/metrics/system
: Get system performance metrics.GET /ws
: WebSocket endpoint for real-time data.
For a full list of endpoints, refer to the backend source code.
The embedded client code is located in the embedded
directory. It is designed to be compiled and deployed on Arduino-compatible hardware. The client reads data from a connected noise sensor and sends it to the backend over a secure connection.
Contributions are welcome! Please open an issue or submit a pull request to contribute to the project.
This project is licensed under the MIT License. See the LICENSE
file for details.