No description
| backend | ||
| frontend | ||
| infra/mosquitto | ||
| simulators | ||
| .gitignore | ||
| ACTION_PLAN.md | ||
| docker-compose.yml | ||
| IMPROVEMENTS.md | ||
| project_plan.md | ||
| README.md | ||
| UI_UX_PLAN.md | ||
| zenvex_dcim_research_report.md | ||
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
docker compose up --build
- Frontend: http://your-server:5646
- API Docs: http://your-server:5646/api/backend/docs
3. Run locally (development)
Frontend
cd frontend
pnpm install
pnpm dev --port 5646
Backend
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)
docker compose up db
Project Structure
/bms
/frontend Next.js app
/backend FastAPI app
/simulators Sensor bots (Phase 2)
docker-compose.yml
Phase Progress
- 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