| Mobile app | Flutter (Dart), Android and iOS | One codebase for a product where residents and admins are on whatever phone they already own |
| App architecture | GetX for state, routing and dependency injection | A role-aware shell that rebuilds its own navigation as a user switches between being an admin and a resident |
| Documents | Invoice PDFs rendered on the device, shared through the OS share sheet | A bill can be produced and forwarded without a round trip to a server, and without a document store to secure |
| Shared foundation | Appseed's internal Flutter package — API client, biometric unlock, translations, server status | Identity and networking behave identically across our products, and arrive already hardened by the others |
| Languages | English, Hindi and Telugu | The person keeping a society's books is often not working in English |
| API | NestJS 11 on Node.js 22, TypeScript | Modules, dependency injection and guards keep a permission model that varies per community tractable |
| Data | PostgreSQL with Prisma, transactions and advisory locks | Financial records need real constraints, real transactions and versioned migrations — not eventual consistency |
| Auth | One-time codes, signed JWTs, hashed PINs for gate staff | No password for residents to reuse or lose, and a separate credential model for staff who share a device |
| Scheduling | Server-side cron inside the API | Billing, overdue marking and pre-approval expiry happen whether or not anyone opens the app |
| Delivery | Containerised, migrations applied on deploy | Reproducible builds; the schema and the code that expects it ship together |