| backend | ||
| database/init | ||
| docs | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| CPaaS_WEBSOCKET_RELAY_ARCHITECTURE.md | ||
| docker-compose.yml | ||
| GENERIC_TEMPLATE_SMS.md | ||
| KYC Form - Pvt Ltd Client.docx | ||
| logo.png | ||
| OTP_SMS_IMPLEMENTATION.md | ||
| README.md | ||
| Updated LOA.docx | ||
| URMIOTP_API.md | ||
Urmi
Phase-one CPaaS console skeleton with independently deployable frontend, API, and data infrastructure.
Modules
frontend/— Vite, React, TypeScript consolebackend/— FastAPI control-plane APIdatabase/— PostgreSQL bootstrap schema and seed datadocker-compose.yml— local modular development stack
Run locally
docker compose up --build
- Console: http://localhost:5173
- API docs: http://localhost:8000/docs
- API health: http://localhost:8000/health
Environment configuration
Urmi uses separate env templates for each layer:
| Template | Copy to | When |
|---|---|---|
.env.example |
.env |
Docker Compose (backend auth + Google OAuth) |
backend/.env.example |
backend/.env |
Running FastAPI on the host |
frontend/.env.example |
frontend/.env |
Running Vite on the host |
Full variable reference, flows, and troubleshooting: docs/ENVIRONMENT.md
Quick start for Compose:
cp .env.example .env
docker compose up --build
Email/password auth works without Google vars. Set AUTH_SECRET before any non-local deploy.
Authentication
Google sign-in requires GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and this redirect URI in Google Cloud Console:
http://localhost:8000/api/v1/auth/google/callback
The canonical user_accounts table is separate from password_credentials and oidc_identities. A verified Google identity is linked to an existing user by normalized email, preventing duplicate accounts. Google-first users can add a password from Console → profile → Sign-in & security.
Core development starts PostgreSQL, Redis, the backend, and frontend. Optional phase-one infrastructure is isolated behind Compose profiles:
docker compose --profile data-plane --profile analytics --profile object-storage up --build
This additionally starts Kafka, ClickHouse, and MinIO (a local S3-compatible store).
Architectural boundary
The frontend never accesses a database directly. The FastAPI service owns transactional PostgreSQL access. Kafka, ClickHouse, and object storage are available as separate infrastructure modules for data-plane events, analytics, and files as those features are implemented.