The desktop application written in Flutter.
-
Flutter
-
Bloc and Cubit for state management
-
get_it for dependency injection
-
gRPC for data fetching
-
just_audio to play the audio
The architecture of this app is based on Reso Coder's Domain Driven Design Principles:
Application contains all the Use Cases
Domain contains the business logic (entities and validation)
Infrastructure contains the repositories and network calls as well as Data Transfer Objects
Presentation contains all the UI components
This app was created and tested on Flutter 3.0.1 and Dart 2.17.1 .
cd app
flutter packages get
For debug mode run flutter run and for production mode run flutter run --release
To run the code generator using freezed, run flutter pub run build_runner watch --delete-conflicting-outputs.
If you want to use your own server you will need to change the BaseUrl in InjectableModule.
Note: Instead of localhost you need to specify your IPv4 Address (e.g. 192.168.2.xxx), otherwise the gRPC client won't be able to connect to the server.
This app was created and tested on Windows.
To get it working on other platforms you need to configure the following packages:
- Run
flutter build windows - Find the files in
build\windows\runner\Release
This repository has a few example tests written to show how you could test the app.
To run them run flutter test.
Reso Coder: This app's structure is based on his DDD tutorial and the tests are based on his TDD tutorial.
MarcusNg: This app's UI builds upon his YouTube video.