The main idea of the project is to let users fill in their daily journal entries and see their entries from previous years on the same day, letting them contemplate and see how they changed throughout the years.
Project is created using Clean Architecture.
- | - | - | - | - |
---|---|---|---|---|
- Flutter - version 3.0.1
Type | Used dependency |
---|---|
Navigation | auto_route |
Http client | http |
Golden tests | alchemist |
Localization | easy_localization |
Local storage | shared_preferences |
Testing mocks | mocktail |
Code generation | freezed |
State management | flutter_bloc |
Dependency injection | get_it injectable |
Remote storage & more | firebase flutterfire_ui |
Functional programming | dartz |
CI/CD solution used for the project is Codemagic, refer to codemagic.yaml
file and https://codemagic.io/builds
- core - folder containing common files used through the app (extensions, injector, localizer, etc.)
- feature - main folder for the features in the app
- data
- data_sources - interfaces and implementations of data sources
- repositories - repositories' implementations
- dtos - data models with a 1:1 representation from remote data source, used from data_sources - use_case (input)
- domain
- models - data models used in use cases (output) & presentation layer
- repositories - repositories' interfaces
- use_cases - use case implementations
- presentation
- cubits/blocs - cubits and blocs related to the views
- pages - feature pages
- widgets - feature widgets
- dialogs - dialogs
- ...
- data
- res - folder containing any resources used in the app (SVGs, CustomPainters, PNGs, strings, translations, etc.)
- scripts - folder containing any helper scripts
- test - folder for unit/widget/cubit & bloc/golden tests
To add new translations declare a string key in strings.dart
, then declare it's translations in corresponding .json files, currently available in en.json
and pl.json
, then use it in the widget with key.tr()
call.
strings.dart
const String someKey = 'someKey';
en.json
{
"someKey" : "some text"
}
some_widget.dart
Text(someKey.tr());
flutter pub get
Name | Description | Default value |
---|---|---|
ENV_APP_NAME | A variable defining how the app will be named after installation | Looping Diary |
ENV_ENVIRONMENT_SUFFIX | A variable determining the environment, choose between ".uat"/"" - where leaving it blank means PROD environment | null |
flutter run --dart-define=ENV_ENVIRONMENT_SUFFIX=.uat --dart-define=ENV_APP_NAME='Looping Diary UAT'
flutter test
flutter test --update-goldens