Collection Tracker is an offline-first Flutter app for organizing personal collections (books, movies, games, and custom categories), with optional cloud sync and Firebase-powered observability.
This repository is actively developed and already includes:
- Collection and item management (list/grid views, create/edit/delete)
- Tag system (assign tags, rename/merge/delete tags, bulk tag actions)
- Favorites and wishlist flows
- Item detail with price tracking and value history
- Statistics dashboard with valuation and distribution insights
- Import/export (JSON and CSV)
- Barcode scanner flow
- Localization support for 7 languages
- Custom design system and glass bottom navigation
- Firebase Crashlytics, Analytics (consent-based), Performance, Remote Config, App Check, FCM
- Optional backend auth and sync (feature-flag gated)
For a detailed status matrix, see documentation/APP_PROGRESS.md.
- Flutter + Dart (workspace/monorepo)
- Riverpod (with code generation)
- Drift (local database)
- GoRouter (navigation)
- Firebase (Core, Analytics, Crashlytics, Performance, Remote Config)
- Dio (backend/sync transport)
apps/mobile/ Flutter app
packages/core/domain/ Domain contracts/entities
packages/core/data/ Repository implementations
packages/common/ui/ Shared design system components
packages/common/utils/ Shared utilities
packages/common/env/ Compile-time env access (Envied)
packages/integrations/* Database, analytics, auth session, backend API, sync API, etc.
documentation/ Project documentation hub
- Install dependencies:
dart pub get- Create API env file used by metadata integrations:
cat > packages/common/env/.env <<'ENV'
GOOGLE_BOOKS_API_KEY=...
TMDB_API_KEY=...
TMDB_READ_ACCESS_TOKEN=...
IGDB_CLIENT_ID=...
IGDB_CLIENT_SECRET=...
ENV- Materialize Firebase files (recommended, especially for CI/local parity):
./scripts/setup_firebase.sh --require dart- Generate code:
./scripts/build_all.sh- Run app:
cd apps/mobile
flutter runDetailed setup instructions: documentation/SETUP_AND_RUN.md
Cloud Sync is enabled only when all required Remote Config flags are true:
app_backend_integration_enabledapp_auth_feature_enabledapp_sync_feature_enabled
If either is false, sync UI/actions are disabled. Full explanation: documentation/FIREBASE_AND_FLAGS.md
- documentation/README.md - docs index
- documentation/ARCHITECTURE.md - architecture and runtime flow
- documentation/APP_PROGRESS.md - implemented vs in-progress features
- documentation/SYNC_AND_AUTH.md - sync/auth integration details
- documentation/LOCALIZATION.md - i18n status and workflow
- documentation/PLAY_STORE_LISTING.md - Play Store listing and ASO package
- documentation/PRIVACY_POLICY.md - MDX-ready privacy policy template
GitHub Actions currently runs:
- Analyze (
.github/workflows/ci.yaml) - Tests (
.github/workflows/ci.yaml) - PR checks (
.github/workflows/pr-checks.yaml) - Android release pipeline (
.github/workflows/release.yaml)
Firebase secrets are materialized during CI using scripts/setup_firebase.sh.
CI analyze/testrequires:FIREBASE_OPTIONS_DART(or_BASE64)Release Androidrequires:FIREBASE_OPTIONS_DART+FIREBASE_ANDROID_GOOGLE_SERVICES_JSON(or_BASE64)
MIT. See LICENSE.