Skip to content

madalin-fr/noise-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Noise Monitoring System

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.

Table of Contents

Project Overview

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.

System Architecture

The system is composed of three main components:

  1. 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.
  2. Frontend (Solid.js): A modern, reactive web application that provides a dashboard for visualizing noise data, system metrics, and analytics.
  3. Embedded Client: A lightweight client designed to run on embedded devices, responsible for collecting sensor data and sending it to the backend.

Features

  • 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

Technologies Used

  • Backend: Go, Fiber, PostgreSQL, Kafka, WebSocket
  • Frontend: Solid.js, TypeScript, Tailwind CSS, MapboxGL
  • Embedded: C/C++ (Arduino compatible)

Getting Started

Prerequisites

  • Go 1.18+
  • Node.js 22.0+
  • PostgreSQL
  • Kafka (optional, for stream processing)

Installation

  1. Clone the repository:

    git clone https://github.com/your-username/noise-monitor.git
    cd noise-monitor
  2. 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
  3. Frontend Setup:

    cd ../frontend
    npm install
    cp .env.example .env
    # Update .env with your backend API endpoint
    npm run dev

Usage

Running the Backend

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).

Running the Frontend

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.

API Endpoints

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.

Embedded Client

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.

Contributing

Contributions are welcome! Please open an issue or submit a pull request to contribute to the project.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Full stack app which leverages high volume of noise data from IoT devices

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •