eAkto Docs
/

Project structure

eAkto is a single repository with a Flutter client, a FastAPI server, tests, and this documentation site. The backend is a modular monolith: features are separated by Python packages while sharing one process and database.

eActo/
├── frontend/                 # Flutter application
│   ├── lib/
│   │   ├── core/             # Routing, theme, networking, shared services
│   │   └── features/         # Feature-first UI and state
│   ├── assets/               # Fonts, icons, and illustrations
│   └── test/                 # Widget and unit tests
├── backend/
│   ├── app/
│   │   ├── api/              # Routers mounted under /api/v1
│   │   ├── core/             # Configuration, security, shared policy
│   │   ├── models/           # SQLAlchemy persistence models
│   │   ├── schemas/          # Pydantic API contracts
│   │   ├── services/         # Application and provider integrations
│   │   └── workflows/        # Journey templates and execution logic
│   └── tests/                # API, service, and workflow tests
├── docs/                     # Markdown documentation
├── docs_theme/               # Custom eAkto MkDocs theme
├── mkdocs.yml                # Documentation navigation and build config
└── .env.example              # Safe configuration names and examples

Frontend boundaries

Flutter code is organized around user-facing features. A feature should own its screens, providers, models, and widgets when those elements are not broadly reusable. Cross-feature concerns belong in lib/core.

The frontend communicates with the backend through repositories and API clients. Screens should not assemble HTTP requests or persist access tokens directly.

Backend boundaries

The backend follows a request-to-service flow:

API router → schema validation → service/workflow → repository/model → response schema
  • Routers translate HTTP into application calls.
  • Schemas define validated input and output contracts.
  • Services coordinate business rules and external systems.
  • Workflow definitions describe questions, documents, milestones, and actions.
  • Models persist users, identity assurance, intents, journeys, and documents.

Keep provider-specific payloads inside their adapter. The rest of eAkto should depend on an eAkto-owned interface.

Where new code belongs

Change Preferred location
New Flutter screen frontend/lib/features/<feature>/
Reusable visual primitive Existing shared widget or theme package
New API endpoint Matching router in backend/app/api/
Business rule Feature service, not the router
External provider request Dedicated service adapter
New citizen journey Workflow registry and versioned definition
Documentation Matching section in docs/

Avoid adding code to legacy modules simply because a similar class exists there. Confirm that its router or feature is part of the currently mounted application first.

View source

Built for the eGovPH Hackathon 2026. Prototype guidance is not official agency policy.