PackRuble / quiz_prize_app

It's just a game - Quiz Prize. Cardoteka + Riverpod + BLoC-pattern + unidirectional data flow. (Build or Install or use Web) and Play 🎮

Home Page:https://packruble.github.io/quiz_prize_app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Quiz Prize App

A simple MVP quiz app to test the capabilities of Cardoteka.

You can launch the application simply by following the link and enjoy the web version — Quiz Prize Web 🎉🎉🎉! Also visit the releases tab and check the available platforms.

In any other cases, clone this repository locally and run it with the flutter run command.

Made with Trivia API and Dart 3.0. Available under Apache-2.0 license.

Goals of this application

  • ✅ realization of unidirectional data flow between layers
  • ✅ reactively update state of notifiers using Watcher from the cardoteka package
  • ✅ implementation of presenters and notifiers using the riverpod package
  • ✅ convenient "ui->domain->data" style folder architecture
  • ✅ communication between layers using sealed states
  • ✅ analyze different approaches to interacting with local storage: reactive interaction, standard get|set, synchronous initialization
  • ✅ creating adaptive interface for different platforms (web|android|windows)
  • ✅ verifying that the cardoteka package is ready for public release and for use in production

Technologies used

  • Flutter – framework for creating applications. Love;
  • Dart – a language that is a pleasure to write code in (thanks!)
  • Riverpod – application state manager, dependency management (including injection). Personal thanks to Remi Rousselet;
  • Cardoteka – typed wrapper over SharedPreferences for convenient storage of local data (own research);
  • freezed – creation of immutable objects and their simple change;
  • json_serializable – working with json;
  • weather_animation – lovely background animation;
  • confetti – without him there would be no holiday!;
  • lint – set of strict rules for development;

and others in pubspec.yaml...❤

Screenshots

Architectural delights

  • structure our project — layer-first — 3 layers (ui, domain, data)
  • unidirectional reactive data flow
  • each layer has its own models as needed
  • updating states based on immutable data
  • using sealed classes as exhaustive states
  • clear separation of layers and responsibilities

Note that not all elements are involved. The emphasis is on interaction:

GamePage -> GamePagePresentor -> QuizGameNotifier -> Notifiers -> Repo&Cardoteka

Articles

Author contact

You can contact me or check out my activities on the following platforms:

About

It's just a game - Quiz Prize. Cardoteka + Riverpod + BLoC-pattern + unidirectional data flow. (Build or Install or use Web) and Play 🎮

https://packruble.github.io/quiz_prize_app/

License:Apache License 2.0


Languages

Language:Dart 77.6%Language:C++ 11.1%Language:CMake 8.5%Language:HTML 0.9%Language:Swift 0.7%Language:D2 0.6%Language:C 0.4%Language:Kotlin 0.1%Language:Objective-C 0.0%