# ScalesApp - Multi-Component Application A distributed application consisting of three main components: ## Architecture ### 1. **Frontend (React)** - Location: `/frontend` - Description: React web application that displays real-time data from the serial port - Communicates with: Django backend via REST API - Port: 3000 (default) ### 2. **Backend (Django)** - Location: `/backend` - Description: Django REST API server for storing and retrieving serial data - Database: SQLite (configurable) - Port: 8000 (default) ### 3. **Serial Bridge (Python)** - Location: `/serial_bridge` - Description: Python application that reads data from COM ports - Features: System tray integration, runs as EXE (via PyInstaller) - Communicates with: Django backend via REST API - Data Flow: COM Port → Serial Bridge → Django Backend → React Frontend ## Installation & Setup ### Prerequisites - Node.js 16+ (for React) - Python 3.8+ (for Django and Serial Bridge) - pip or conda for Python packages ### Quick Start 1. **Backend Setup** ```bash cd backend python -m venv venv venv\Scripts\activate pip install -r requirements.txt python manage.py migrate python manage.py runserver ``` 2. **Frontend Setup** ```bash cd frontend npm install npm start ``` 3. **Serial Bridge Setup** ```bash cd serial_bridge python -m venv venv venv\Scripts\activate pip install -r requirements.txt python app.py ``` ## Data Flow ``` COM Port ↓ Serial Bridge (Python) ↓ Django Backend REST API ↓ React Frontend ``` ## Configuration Each component has its own configuration file: - Frontend: `.env` - Backend: `settings.py` and `.env` - Serial Bridge: `config.py` and `.env` ## Development Tips - Keep all three services running during development - Use `CORS` headers properly in Django for frontend requests - Serial Bridge should continuously read COM data and POST to backend - Frontend should poll/subscribe to backend for updates