https://github.com/pythonhubdev/flutter_ddd_firebase_auth
Implementing Firebase Authentication with Riverpod following Flutter Domain Driven Development pattern
https://github.com/pythonhubdev/flutter_ddd_firebase_auth
dart domain-driven-design firebase firebase-auth flutter riverpod
Last synced: 3 months ago
JSON representation
Implementing Firebase Authentication with Riverpod following Flutter Domain Driven Development pattern
- Host: GitHub
- URL: https://github.com/pythonhubdev/flutter_ddd_firebase_auth
- Owner: pythonhubdev
- Created: 2021-07-07T15:20:30.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-09-15T18:23:55.000Z (4 months ago)
- Last Synced: 2025-09-27T05:50:31.344Z (4 months ago)
- Topics: dart, domain-driven-design, firebase, firebase-auth, flutter, riverpod
- Language: Dart
- Homepage:
- Size: 312 KB
- Stars: 81
- Watchers: 3
- Forks: 14
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Firebase Authentication with Flutter & DDD
This repository provides a comprehensive example of a Flutter application that implements Firebase Authentication using a Domain-Driven Design (DDD) architecture. It leverages modern Flutter technologies like Hooks Riverpod for state management and Freezed for immutable data classes.
This project serves as a robust starting point for building scalable and maintainable Flutter applications.
## Features
* **Firebase Authentication:** Email & Password sign-in.
* **Domain-Driven Design (DDD):** A clean and separated architecture to promote maintainability and testability.
* **Riverpod:** State management for a reactive and predictable state.
* **Freezed:** Code generation for immutable data classes and unions.
* **Error Handling:** Clear separation of domain and application failures.
## Project Structure
The project follows a layered architecture inspired by Domain-Driven Design. For a detailed explanation, please see the [Architecture Guide](./guides/architecture.md).
```
lib/
├── application/ # Application Layer (Use Cases/BLoCs)
├── domain/ # Domain Layer (Entities, Value Objects, Interfaces)
├── services/ # Infrastructure Layer (Firebase Implementation)
└── screens/ # Presentation Layer (UI)
```
## Getting Started
To get a local copy up and running, please follow the detailed instructions in the [Setup Guide](./guides/setup.md).
## Architecture
This project is built with a strong emphasis on clean architecture and Domain-Driven Design principles. To understand the structure, layers, and design decisions, please refer to the [Architecture Guide](./guides/architecture.md).
## Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request