Repository Structure

evergreenLast update on Sep 1, 2026
Download .md

Repository Structure

Current Layout

ais/
├── apps/
│   ├── backend/       # planned Spring Boot service
│   ├── mobile/        # planned production Flutter app
│   └── web/           # planned Next.js dashboard
├── docs/              # project-wide developer docs
└── reference/
    └── mobile_app_demo/ # current working Flutter POC

Target Layout

ais/
├── apps/
│   ├── backend/
│   ├── web/
│   └── mobile/
├── packages/
│   └── contracts/
│       ├── openapi.yaml
│       ├── generated-typescript/
│       └── generated-dart/
├── infra/
│   ├── compose.yaml
│   ├── docker/
│   └── deployment/
├── docs/
├── scripts/
├── AGENTS.md
├── Makefile
└── README.md

Ownership Rules

PathSource of truth
packages/contracts/openapi.yamlAPI operations, DTOs, validation, errors
apps/backendDomain logic, persistence, authorization, migrations
apps/webBrowser workflows and admin/user UI
apps/mobileProduction mobile workflows
reference/mobile_app_demoExisting Flutter POC behavior and reference implementation
infraLocal and deployment infrastructure
docsBuild, run, test, deploy, and maintenance guidance

Migration Rule

When moving POC behavior into apps/mobile, keep it as a deliberate port:

  • preserve event semantics;
  • replace hard-coded configuration with build-time config;
  • add generated API clients from OpenAPI;
  • add durable local state if offline reads are required;
  • add tests before replacing working behavior.