# DemoBMS Intelligent Data Center Infrastructure Management platform. ## Stack - **Frontend:** Next.js 16 + TypeScript + shadcn/ui + Recharts - **Backend:** Python FastAPI - **Database:** PostgreSQL + TimescaleDB - **Auth:** Clerk - **Runtime:** Docker Compose --- ## Ports | Service | Port | |----------|------| | Frontend | 5646 | | Backend | 8000 (internal — not exposed publicly) | | Database | 5432 (internal) | The frontend is the only service that needs to be reachable. Point your reverse proxy at port **5646**. --- ## API Calls & Reverse Proxy The frontend never hardcodes a backend hostname. All API calls use the relative path `/api/backend/*`, which Next.js rewrites to the backend on the internal Docker network (`BACKEND_INTERNAL_URL`). From the browser's perspective everything is same-origin — your reverse proxy only needs to forward to port 5646. ``` Browser → Reverse Proxy → :5646 (Next.js) ↓ server-side rewrite :8000 (FastAPI) — internal only ``` --- ## Quick Start ### 1. Configure Clerk (required for auth) Create a free account at https://clerk.com, create an application, then fill in the keys: **`frontend/.env.local`** ``` NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_... ``` **`backend/.env`** ``` CLERK_SECRET_KEY=sk_test_... CLERK_JWKS_URL=https://your-app.clerk.accounts.dev/.well-known/jwks.json ``` ### 2. Run with Docker Compose ```bash docker compose up --build ``` - Frontend: http://your-server:5646 - API Docs: http://your-server:5646/api/backend/docs ### 3. Run locally (development) **Frontend** ```bash cd frontend pnpm install pnpm dev --port 5646 ``` **Backend** ```bash cd backend python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt uvicorn main:app --reload ``` **Database only (via Docker)** ```bash docker compose up db ``` --- ## Project Structure ``` /bms /frontend Next.js app /backend FastAPI app /simulators Sensor bots (Phase 2) docker-compose.yml ``` ## Phase Progress - [x] Phase 1 — Foundation (current) - [ ] Phase 2 — Data Pipeline & Simulator Bots - [ ] Phase 3 — Core Dashboard (live data) - [ ] Phase 4 — Environmental Monitoring - [ ] Phase 5 — Power Management - [ ] Phase 6 — Cooling & AI Panel - [ ] Phase 7 — Asset Management - [ ] Phase 8 — Alarms & Events - [ ] Phase 9 — Reports - [ ] Phase 10 — Polish & Hardening