Architecture
How the generated app is organized in layers and by backend.
Every Kasy project follows the same layered architecture. The backend changes; the UI and flows don't.
Overview
Flutter (UI + Riverpod)
↓
Repositories (contracts)
↓
Per-backend API (Firebase / Supabase / REST)
↓
Server (Functions, Edge Functions, or your API)| Layer | What it does |
|---|---|
UI (lib/features/*/ui/) | Screens, widgets, zero business logic |
Notifiers (*_notifier.dart) | State, navigation, toasts, repo calls |
| Repositories | Contracts that hide the backend |
| Backend | Firebase, Supabase, or REST API |
Three backends, same experience
Kasy keeps feature parity across the three backends. The login screen, paywall, push, and admin are the same. Only the data layer changes.
| Backend | Server |
|---|---|
| Firebase | Cloud Functions + Firestore rules |
| Supabase | Edge Functions + RLS |
| REST API | Endpoints you implement |
Where everything lives
router.dart
main.dart
| Folder | Content |
|---|---|
lib/features/ | One folder per feature (auth, onboarding, settings...) |
lib/core/ | Theme, navigation, config, utilities |
lib/components/ | Design system (KasyButton, KasyCard...) |
lib/router.dart | Global routes (GoRouter) |
lib/environments.dart | Feature flags and auth mode |
Last updated on 08/02/2026

