A full-stack system for sensor data collection, processing, and visualization.
WCS is a modular platform for collecting, storing, and visualizing sensor and weather data. It uses Django for the backend, Next.js for the frontend, and supports MQTT for real-time data ingestion.
- Location:
backend/ - Tech: Django 5, Django REST Framework, PostgreSQL, TimescaleDB, EMQX MQTT broker
- Setup:
- Install uv (Python project manager)
- Install Python 3.10+
- Install dependencies:
uv pip install -r requirements.txt
- Install PostgreSQL and TimescaleDB
- Set up PostgreSQL user and database:
- Switch to postgres user:
sudo -i -u postgres - Enter psql:
psql - Change password, create roles, and databases as needed
- Run
scripts/create_database.py
- Switch to postgres user:
- Install EMQX (MQTT broker)
- Run the backend:
python manage.py migrate python manage.py runserver
- Location:
frontend/ - Tech: Next.js 14, React 18, Ant Design, MUI, Chart.js, Zustand, TypeScript
- Setup:
- Install pnpm
- Install dependencies:
pnpm install
- Run the development server:
pnpm dev
- Location:
sensor/ - Tech: Arduino (ESP8266)
- Setup:
Seesensor/sensor.inoandsensor/arduino-cli/config.ymlfor firmware and build instructions.
- Location:
deploy/ - Tech: Docker, Docker Compose, Nginx, EMQX, PostgreSQL
- Setup:
- Copy
.envfiles as needed todeploy/backend/backend_wsgi/,deploy/backend/backend_asgi/, anddeploy/database/ - Build and start all services:
cd deploy docker compose up --build - Services:
backend_wsgi(Django WSGI)backend_asgi(Django ASGI)frontend(Next.js)database(PostgreSQL + TimescaleDB)emqx(MQTT broker)nginx(reverse proxy)
- Copy
- Backend: See
backend/README.md - Frontend: See
frontend/README.md - Sensor: See
sensor/README.md
MIT or as specified in subfolders.