Navigation
Resibibo uses Expo Router for file-based routing.
Tab Structure
The app has 5 bottom tabs defined in src/app/(app)/_layout.tsx:
| Tab | Screen | Description |
|---|---|---|
| Home | (app)/index.tsx | Dashboard with spending summary, recent transactions, budget alerts |
| Expenses | (app)/expenses.tsx | Full transaction list with type filter + FAB to add |
| Scan | (app)/scan.tsx | Receipt camera capture + gallery pick |
| Budget | (app)/budget.tsx | Budget list with progress cards + FAB to add |
| Settings | (app)/settings.tsx | Theme, language, recurring, sync, notifications, logout |
Stack Screens
Screens pushed on top of the tab navigator:
| Route | File | Description |
|---|---|---|
/transaction/[id] | transaction/[id].tsx | Transaction detail view |
/transaction/add | transaction/add.tsx | Add/edit transaction form |
/budget/[id] | budget/[id].tsx | Budget detail view |
/budget/add | budget/add.tsx | Add/edit budget form |
/recurring | recurring/index.tsx | Recurring rules list |
/recurring/[id] | recurring/[id].tsx | Recurring rule detail |
/recurring/add | recurring/add.tsx | Add/edit recurring rule |
/receipt/[id] | receipt/[id].tsx | Receipt review + confirm |
/chat | chat.tsx | AI chat screen |
/conflicts | conflicts.tsx | Sync conflict resolution |
Auth Flow
login.tsx-- Login/register screen (public)onboarding.tsx-- Onboarding flow (public)(app)/-- Protected routes (require authentication)
The auth store (lib/auth/) manages token state and redirects unauthenticated users to the login screen.