Open-source platform for modern construction management.
Replace WhatsApp groups, Excel sheets, and paper records with one unified system.
SiteOS is a production-grade, open-source Construction Site Operating System built for builders, contractors, civil engineers, and project managers. It digitizes every aspect of construction operations β from project planning and labour tracking to material inventory, equipment management, and financial reporting.
Real-time overview of your entire operation β active projects, budget health, labour count, open issues, and alerts.
Full project lifecycle: milestones, tasks, issues, progress tracking, budget monitoring, and document management.
Track attendance, overtime, leave, and productivity. Generate payroll-ready exports.
Manage stock levels, purchase orders, material issues, returns, wastage, and low-stock alerts.
Monitor equipment usage, maintenance schedules, fuel consumption, and rental availability.
Budget vs actual, expense tracking, invoicing, payment collection, and cash flow analysis.
Record weather, labour counts, work completed, visitors, delays, and progress photos.
Daily/weekly/monthly summaries, budget variance, labour productivity, and material usage β exportable to PDF and Excel.
6 roles: Owner, Project Manager, Site Engineer, Supervisor, Worker, Client (read-only portal).
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β React (Next.js 14) β
β TanStack Query Β· Zustand Β· Tailwind β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β HTTPS REST
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ
β NestJS API (REST) β
β Prisma ORM Β· JWT Auth Β· RBAC Β· Swagger β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β
ββββββββββββ΄βββββββββββ¬βββββββββββ
β PostgreSQL β Redis β
β (Primary DB) β (Queue) β
βββββββββββββββββββββββ΄βββββββββββ
- Node.js β₯ 20.x
- npm β₯ 10.x
- Docker (for PostgreSQL and Redis)
# 1. Clone and install
git clone https://github.com/JoyalJJoy/siteos.git
cd siteos
cp .env.example .env
npm install
# 2. Start infrastructure
docker compose up -d postgres redis
# 3. Initialize database
npm run db:generate
npm run db:push
npm run db:seed
# 4. Start development
npm run devThe API runs on http://localhost:4000 and the web app on http://localhost:3000.
| Role | Password | |
|---|---|---|
| Company Owner | admin@abc.com | password123 |
| Company Owner | admin@xyz.com | password123 |
| Technology | Purpose |
|---|---|
| Next.js 14 (App Router) | React framework with SSR/SSG |
| TypeScript | Type safety |
| Tailwind CSS | Utility-first styling |
| Zustand | Client state management |
| TanStack Query | Server state & caching |
| Recharts | Charts & visualizations |
| Lucide React | Icons |
| framer-motion | Animations |
| Technology | Purpose |
|---|---|
| NestJS | Node.js framework (controllers, services, modules) |
| TypeScript | Type safety |
| Prisma | Type-safe ORM with PostgreSQL |
| PostgreSQL | Primary database |
| Redis | Queue (BullMQ) & caching |
| Passport + JWT | Authentication & RBAC |
| Helmet | Security headers |
| Pino | Structured logging |
| Swagger/OpenAPI | API documentation |
| BullMQ | Background job processing |
| Technology | Purpose |
|---|---|
| Docker | Containerization |
| Docker Compose | Local orchestration |
| GitHub Actions | CI/CD |
| Husky + lint-staged | Git hooks |
| Commitlint | Conventional commits |
siteos/
βββ apps/
β βββ api/ # NestJS backend
β β βββ prisma/ # Schema & migrations
β β βββ src/
β β β βββ common/ # Guards, decorators, filters, interceptors
β β β βββ config/ # Environment config
β β β βββ database/ # Prisma service
β β β βββ modules/ # Feature modules (10)
β β β β βββ auth/
β β β β βββ users/
β β β β βββ projects/
β β β β βββ labour/
β β β β βββ materials/
β β β β βββ equipment/
β β β β βββ finance/
β β β β βββ daily-diary/
β β β β βββ dashboard/
β β β β βββ health/
β β β βββ main.ts
β β βββ test/ # E2E tests
β β
β βββ web/ # Next.js frontend
β βββ src/
β βββ app/ # App Router pages (13 routes)
β βββ components/ # Reusable UI components
β βββ hooks/ # Custom hooks
β βββ lib/ # API client, utilities
β βββ store/ # Zustand stores
β
βββ .github/ # Issue/PR templates, CI/CD workflows
βββ docker-compose.yml # Full stack orchestration
βββ package.json # Workspace root
When running in development mode, Swagger UI is available at:
http://localhost:4000/api/docs
All endpoints are versioned under /api/v1/... and require JWT authentication via Bearer token (except /auth/login and /auth/register).
# Run all tests
npm test
# Backend tests
npm run test:api
# Frontend tests
npm run test:web
# With coverage
npm run test:api -- --coverage
npm run test:web -- -- --coverageWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Commit using conventional commits
- Push and open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
Built with β€οΈ by Joyal J Joy and the open-source community.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: security@siteos.dev