Multi-Tenant CAFM Platform with 8 microservices, AI-powered assistance, and unified deployment infrastructure.
Package manager: pnpm only. Do not run
npm install; keep usingpnpm installin each service (no package-lock.json).
π Full Architecture: See PLATFORM_ARCHITECTURE.md for detailed system design, routing, and deployment workflows.
SentrixFm/ (Monorepo)
βββ sentrix-promo/ # Next.js Promo Website (Port 3010) πͺ FIRST GATE
βββ sentrix-api/ # NestJS Backend API (Port 3000)
βββ sentrix-manager/ # Angular Web App (Port 4200)
βββ sentrix-admin/ # Angular Admin Panel (Port 4000)
βββ sentrix-mobile/ # React Native + Expo (iOS/Android)
βββ sentrix-ai/ # Python FastAPI AI Service (Port 8000)
βββ sentrix-api-documentation/ # Docusaurus API Docs (Port 3002)
βββ sentrix-deployment/ # π Deployment Scripts & Configs
βββ docs/ # Comprehensive documentation
βββ scripts/ # Automation scripts
βββ ecosystem.config.js # PM2 process management (Legacy/Alternative)
| Path | Service | Type | Description |
|---|---|---|---|
/ |
sentrix-promo | Dynamic | Landing page (FIRST GATE) |
/api/* |
sentrix-api | Dynamic | Backend REST API (includes AI) |
/manager/* |
sentrix-manager | Static | Web application |
/admin/* |
sentrix-admin | Static | Admin panel |
/docs/* |
sentrix-api-docs | Static | API documentation |
- Jan 23, 2026: Enterprise Pivot & Feature Refactor - Migrated to a 19-flag strategic architecture. Simplified subscription model to Dual Enterprise Tiers (Enterprise Business & Enterprise Global). Added Analytics Dashboard and Enterprise IT Elite features (SSO, White-label, Governance).
- Jan 13, 2026: Production Readiness & API Standardization - Complete migration to container-based databases and RESTful API naming conventions. Asset Lifecycle UX enhancement.
- Jan 12, 2026: Multi-Asset Support & SOP Integration - Universal Working Items now support multiple assets per task with full SOP template integration.
We use a hybrid deployment strategy for maximum reliability:
- π³ Databases in Containers: PostgreSQL, Redis, MinIO run in Podman containers
- π Apps with PM2: Node.js applications run with PM2 process manager
- π Simple Networking: No complex DNS, all connections via localhost
- π€ Zero Configuration: Automatic service discovery and health checks
- Development: Podman Desktop 4.0+ (or Docker Desktop), pnpm 8+, PM2
- Production: Ubuntu VPS with Podman 4.0+, PM2, Nginx
# Start everything with one command
cd /root/SentrixFm
./simple-hybrid-setup.sh
# Or start manually:
# 1. Start databases in containers
podman run -d --rm --name sentrix-postgres -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres docker.io/library/postgres:15-alpine
podman run -d --rm --name sentrix-redis -p 6379:6379 docker.io/library/redis:7-alpine
podman run -d --rm --name sentrix-minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin docker.io/minio/minio:latest server /data --console-address ":9001"
# 2. Start apps with PM2
pm2 start pm2-hybrid.config.js# 1. sentrix-api (Backend with AI Integration)
cd sentrix-api && pnpm run start:dev
# 2. sentrix-promo (Next.js Website)
cd sentrix-promo && pnpm run dev
# 3. sentrix-manager (Frontend)
cd sentrix-manager && pnpm start
# 4. sentrix-admin (Admin)
cd sentrix-admin && pnpm start
# 5. sentrix-ai (AI Service - Optional, for advanced AI features)
cd sentrix-ai && python main.py# SSH into VPS
ssh root@your-vps-ip
# Deploy all services with hybrid setup
cd /root/SentrixFm
./simple-hybrid-setup.sh
# Verify everything is running
pm2 status
podman ps
curl -I https://sentrixfm.comπ Deployment: See sentrix-deployment/README.md for complete deployment instructions.
- π Faster Startup: Apps start instantly with PM2, no container overhead
- π§ Simpler Debugging: Direct access to Node.js processes and logs
- π No DNS Issues: All connections via localhost, no service discovery complexity
- β‘ Better Performance: No container networking overhead
- π‘οΈ More Reliable: PM2 auto-restarts crashed applications
- π Better Monitoring: PM2 provides real-time process monitoring
| Scenario | Recommended Approach |
|---|---|
| Production VPS | Hybrid (PM2 + Containers) |
| Development | Hybrid or Individual Services |
| Testing | Individual Services |
| CI/CD | Container-First (for isolation) |
| Document | Description |
|---|---|
| PLATFORM_ARCHITECTURE.md | Complete system architecture, service interactions, and data flow |
| QUICK_REFERENCE.md | Quick reference for common commands and configurations |
| sentrix-deployment/README.md | Deployment guides for VPS and production |
| Document | Description |
|---|---|
| sentrix-api/docs/README.md | API documentation structure |
| sentrix-ai/docs/README.md | AI service documentation |
| Document | Description |
|---|---|
| sentrix-admin/README.md | Admin panel setup and usage |
| sentrix-manager/README.md | Manager web app documentation |
| docs/README.md | Comprehensive platform documentation |
- E2E Tests: Playwright-based critical path testing
- Unit Tests: Jest/Angular testing for individual components
- API Tests: Postman/Newman collection for REST endpoints
# E2E Tests
cd sentrix-manager
npx playwright test --project=chromium --workers=1
# Unit Tests
cd sentrix-api
pnpm run test
β οΈ IMPORTANT: Use pnpm exclusively. Never runnpm installin any service directory.
# Install dependencies
pnpm install
# Add a new package
pnpm add <package-name>
# Remove a package
pnpm remove <package-name>
# Clean install
pnpm install --no-frozen-lockfile- sentrix-api/.env: Backend API configuration
- sentrix-ai/.env: AI service configuration
- sentrix-manager/.env.development: Frontend dev config
- PostgreSQL: Port 5432 (Podman container)
- Redis: Port 6379 (Podman container)
- MinIO: Ports 9000/9001 (Podman container)
# View all processes
pm2 status
# View logs
pm2 logs
# Restart all
pm2 restart all
# Restart specific app
pm2 restart sentrix-api
# Monitor resources
pm2 monit# API Health
curl http://localhost:3000/api/health
# AI Service Health
curl http://localhost:8000/health
# Database Connection
psql -h localhost -U postgres -d SentrixFmDb -c "SELECT 1"- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is proprietary software. All rights reserved.
Built with β€οΈ for Facility Management Excellence