SetOps
- FastAPI
- Python
- PostgreSQL
- React
- Vite
- Docker
- Docker Compose
- Nginx
- Linux
- Prometheus
- Grafana
The problem
Building operations and maintenance work — equipment, service calls, contractors, tenants and reporting — is commonly tracked across disconnected spreadsheets, phone calls and messages, with no single record of what was reported, who handled it and what happened.
The goal
Build one system covering the operational picture of a building: its structure, its equipment, the service calls raised against it, and the people responsible for handling them.
The architecture
- Multi-tenant SaaS with company data isolation
- FastAPI (Python) backend services
- PostgreSQL schema designed around buildings, equipment and service calls
- React + Vite front end
- Nginx reverse proxy terminating TLS — Transport Layer Security
- Docker Compose running frontend, backend and database as containers
- Authentication with role-based permissions scoped per company
- Monitoring and infrastructure logging across the platform
React + Vite ↓ Nginx ↓ FastAPI (Python) ↓ PostgreSQL Prometheus → Grafana
My approach
Model the building itself — floors, rooms and areas, equipment and critical systems — then build the operational workflows on top of that structure, with every query scoped by company so tenants can never see each other's data. Run the whole platform as containers behind a reverse proxy, and treat monitoring and alerting as part of the product rather than an afterthought.
Implementation
- Building structure: buildings, floors, rooms and areas
- Equipment and systems, including critical equipment
- Service call workflow with contractor assignment
- Tenant portal and guard functionality
- Company management, role-based permissions and data isolation
- Authentication and security hardening
- Reporting, billing and onboarding workflows
- Containerized deployment with container networking and persistent storage
- Environment configuration kept out of the image
- Scheduled metrics collection with historical storage and a platform-health view
- Log-driven alerting with thresholds, cooldowns and escalation
Operations
Monitoring pipeline
Server / containers
Scheduled collection (cron)
System & container metrics
Historical metric storage
Admin dashboard — platform health
Alerting & incident flow
System event
Threshold
Incident
Alert — Zoho Mail API
Cooldown / critical escalation
Recovery
Summary