A cleanly architected Flutter application featuring Firebase authentication, modular UI, and comprehensive unit testing.
The project emphasizes separation of concerns, testability, and real-world production patterns.
- 🔐 Firebase Authentication with Clean Architecture
- 🧪 Fully tested authentication layer (mocked)
- 🧩 Decoupled UI and backend logic
- 🧠 Domain-specific error handling
- 🚀 CI/CD-ready with GitHub Actions
- 📱 Scalable navigation flow
UI Layer
↓
AuthService (Facade)
↓
AuthProvider (Contract)
↓
FirebaseAuthProvider (Implementation)
↓
Firebase Authentication SDK
✔ UI never talks to Firebase directly
✔ Providers are swappable
✔ Authentication logic is fully testable
lib/
├── constants/ # App constants
├── enums/ # App enums
├── services/ # Authentication & service layer
├── utilities/ # Reusable helpers (e.g., dialogs)
├── views/ # UI screens
├── home.dart # Initial navigation
└── main.dart # App entry point
test/
└── auth/ # Authentication unit tests
Each folder contains its own README with detailed documentation:
# Get dependencies
flutter pub get
# Run the app
flutter run
# Run all tests
flutter test- Fully compatible with GitHub Actions
- Runs all tests on each push
- Failures prevent merging regressions
- Supports future code coverage badges
- Demonstrates industry-level Flutter architecture
- Emphasizes clean separation of concerns
- Strong unit testing discipline
- Interview-ready code quality
- Easily scalable and maintainable
- Add authentication state streams
- Integrate OAuth providers (Google, Apple)
- Full code coverage reporting
- Dependency injection using GetIt / Riverpod
- Token refresh handling
This project is built for learning and demonstration purposes and can be freely adapted or extended.