Skip to content

An app letting you write down your insights and see how you felt on the same day in previous years

Notifications You must be signed in to change notification settings

bkkoluch/looping_diary

Repository files navigation

Looping Diary

Project basic info

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.

PlayStore:

Get it on Google Play

Basic project presentation

- - - - -
screenshot1 screenshot2 screenshot3 screenshot4 screenshot5

Technology stack & main project dependencies

  • 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

Prerequisites

Flutter

Android studio

CI/CD

CI/CD solution used for the project is Codemagic, refer to codemagic.yaml file and https://codemagic.io/builds

App architecture & main folder structure

  • 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
      • ...
  • 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

Translations

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.

Example:

strings.dart

const String someKey = 'someKey';

en.json

{
  "someKey" : "some text"
}

some_widget.dart

Text(someKey.tr());

How to run the project

You should have a valid keys.dart file containing secrets

Get all dependencies by running command:

flutter pub get

Dart defines

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

Run the project in debug mode on UAT environment:

flutter run --dart-define=ENV_ENVIRONMENT_SUFFIX=.uat --dart-define=ENV_APP_NAME='Looping Diary UAT'

Tests

To run all tests (unit/widget/cubit & bloc/golden)

flutter test

To update golden tests run

flutter test --update-goldens

About

An app letting you write down your insights and see how you felt on the same day in previous years

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages