Focido – Technical Stack Overview

Platform & Framework

Focido is a cross-platform mobile application built with Flutter (SDK 3.10+, Dart). A single codebase targets both iOS (minimum iOS 15.0) and Android, enabling rapid iteration while delivering native performance on both platforms.

Architecture

The project follows Clean Architecture with three clearly separated layers:

  • Domain — business entities and abstract repository interfaces
  • Data — API services, network clients, and repository implementations
  • Presentation — 22 feature modules, each encapsulating its own screens, state stores, and widgets

The codebase totals ~38,000 lines of Dart across ~200 files.

State Management & Dependency Injection

  • MobX — reactive state management with code generation. 17 observable stores power the UI reactivity.
  • GetIt — service locator pattern for dependency injection, wiring together services, repositories, and stores.

Navigation

GoRouter provides declarative routing with 20+ routes, auth-guarded redirects, deep link handling, and tab-based navigation (Feed, Top, Nudge, Tasks).

Backend & Networking

  • Custom REST API (versioned: /v1) hosted on DigitalOcean App Platform
  • Dio HTTP client with a custom auth interceptor that automatically refreshes Firebase tokens
  • JSON serialization via json_serializable + json_annotation for type-safe API communication
  • Three environments configured: Development, Staging, Production

Authentication

A dual-auth system:

  1. Firebase Authentication — handles credentials (email/password + anonymous guest accounts)
  2. Backend API — manages user profiles, linking them to Firebase identity via ID tokens

Anonymous accounts are created on first launch, allowing immediate app exploration before registration.

Cloud Services

  • Firebase Auth — User authentication
  • Firebase Crashlytics — Real-time crash reporting
  • Firebase Analytics — User behavior tracking
  • Firebase Cloud Messaging — Push notifications
  • RevenueCat — In-app subscriptions & paywall management
  • DigitalOcean App Platform — Backend hosting
  • S3 — File storage (avatars, attachments) via pre-signed URLs

Local Storage

  • SharedPreferences — lightweight key-value storage (onboarding state, user preferences)
  • SQLite (sqflite) — local database available for offline scenarios

Monetization

RevenueCat manages the “Focido Pro” subscription tier across both app stores, handling purchase validation, entitlement checks, and subscription restoration.

Localization

The app supports 3 languages — English, Spanish — using the easy_localization package with translation files stored as structured assets.

CI/CD & Deployment

  • GitHub Actions — automated release pipeline triggered on push to the releases branch, with separate iOS (macOS runner) and Android (Ubuntu runner) jobs
  • Fastlane — manages builds, metadata, and store uploads for both platforms
  • Custom deploy script (deploy.sh) — handles local deployments with automatic build number incrementation, .env loading, and credential management

Key App Features (technical perspective)

  • Social feed with likes and comments (real-time API)
  • Friend & motivator system with invitation links via deep linking (Universal Links / App Links)
  • Nudge system — push-based encouragement between users
  • Weekly leaderboard with division system
  • File uploads — image picker + file picker with S3 pre-signed URL flow
  • In-app review prompts
  • Native sharing capabilities

Deep Linking

Universal Links (iOS) and App Links (Android) with a custom focido:// URI scheme, enabling task sharing, invite flows, and external navigation into specific app screens.

Scroll to Top