Project Overview
AIS is an enterprise asset management system for receiving, tagging, assigning, maintaining, and auditing physical assets.
Product Scope
- Receive assets against GRNs, imports, or ad-hoc deliveries.
- Bind physical tags: vendor, store-issued, temporary, or app-generated.
- Maintain an append-only event history for asset actions.
- Track custody, department, location, compliance, documents, and financial profile.
- Support backend, web dashboard, and mobile workflows from one shared API contract.
First Principles
- Contract-first: OpenAPI is the cross-platform source of truth.
- Thin vertical slices: contract -> backend -> generated clients -> web/mobile -> tests.
- Append-only facts: asset history is event-based; corrections are new events.
- Idempotent sync: mobile and integrations can retry safely.
- Explicit current vs target state: do not confuse the Flutter POC with the final system.
Current Implementation
| Area | State |
|---|---|
| Flutter mobile POC | Implemented under reference/mobile_app_demo/ |
| Backend | Planned under apps/backend/ |
| Web dashboard | Planned under apps/web/ |
| Production mobile app | Planned under apps/mobile/ |
| Shared contracts | Planned under packages/contracts/ |
| Infrastructure | Planned under infra/ |
Target System
flowchart LR
Web["Next.js web dashboard"] --> API["Spring Boot API"]
Mobile["Flutter mobile app"] --> API
API --> DB[(PostgreSQL)]
API --> Objects["Object storage"]
API --> IdP["Identity provider"]
Contract["OpenAPI contract"] --> API
Contract --> Web
Contract --> Mobile
Non-Goals For The POC
- Full authentication and authorization.
- Production signing and release pipeline.
- Durable mobile read models beyond the local event queue.
- Complete backend and web dashboard implementation.
- Manual maintenance of generated API client types.