Skip to content

mixin27/collection_tracker

Repository files navigation

Collection Tracker

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.

Current State

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.

Tech Stack

  • Flutter + Dart (workspace/monorepo)
  • Riverpod (with code generation)
  • Drift (local database)
  • GoRouter (navigation)
  • Firebase (Core, Analytics, Crashlytics, Performance, Remote Config)
  • Dio (backend/sync transport)

Workspace Layout

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

Quick Start

  1. Install dependencies:
dart pub get
  1. 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
  1. Materialize Firebase files (recommended, especially for CI/local parity):
./scripts/setup_firebase.sh --require dart
  1. Generate code:
./scripts/build_all.sh
  1. Run app:
cd apps/mobile
flutter run

Detailed setup instructions: documentation/SETUP_AND_RUN.md

Cloud Sync Flags (Important)

Cloud Sync is enabled only when all required Remote Config flags are true:

  • app_backend_integration_enabled
  • app_auth_feature_enabled
  • app_sync_feature_enabled

If either is false, sync UI/actions are disabled. Full explanation: documentation/FIREBASE_AND_FLAGS.md

Documentation

CI/CD

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/test requires: FIREBASE_OPTIONS_DART (or _BASE64)
  • Release Android requires: FIREBASE_OPTIONS_DART + FIREBASE_ANDROID_GOOGLE_SERVICES_JSON (or _BASE64)

License

MIT. See LICENSE.

About

Collection tracker mobile application using Flutter

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors