🎯 Overview
This is a full-stack IoT sensor management system built as a monorepo. The frontend is a Next.js 16 static export optimized for deployment on AWS Amplify or S3, while the backend is a standalone Express.js API deployable anywhere. Both services are fully decoupled, making them independently scalable and deployable.
✨ Features
Device Management
Control and configure IoT devices with a centralized dashboard. Add, update, and remove devices in real-time.
Sensor Monitoring
Real-time sensor data visualization with live charts and historical trend analysis across all connected sensors.
Weather Widget
Integrated weather data display providing environmental context alongside your IoT sensor readings.
Admin Dashboard
Full administrative control panel for system management, user configuration, and system health monitoring.
Responsive UI
Fully responsive interface built with Tailwind CSS — works seamlessly on mobile, tablet, and desktop.
Production Ready
Static export with CORS-enabled API, Dockerized for easy deployment, and ready for cloud hosting.
📁 Project Structure
🔌 Running Services
| Service | Port | URL | Start Command | Status |
|---|---|---|---|---|
| Frontend | 3000 | http://localhost:3000 |
cd frontend && npm run dev |
✅ Active |
| Backend API | 5000 | http://localhost:5000 |
cd backend && npm start |
✅ Active |
🚀 Quick Start
🧪 Quick API Test
🚢 Deployment Options
AWS Amplify (Frontend)
Build with npm run build, push to GitHub, connect Amplify — uses amplify.yml automatically.
Docker (Both)
Run docker-compose up --build to spin up both frontend and backend services instantly.
Render / Heroku (Backend)
Set NEXT_PUBLIC_API_URL env var to your deployed backend URL and deploy as a web service.
AWS EC2 / VPS
Deploy backend on any server. Frontend static files can be served from Nginx, S3, or Cloudflare Pages.
📚 Documentation
📦 Tech Stack
🐛 Troubleshooting
🔴 API not connecting?
Check backend is running: curl http://localhost:5000/health
Verify .env.local in the frontend folder. Open DevTools Console for errors.
🔴 Port already in use?
macOS/Linux: lsof -i :5000 | awk '{print $2}' | xargs kill
Windows: Get-NetTCPConnection -LocalPort 5000 | Stop-Process
Ready to build?
Download the full source code or explore the repository on GitHub.