CircadApp
App for the “street circus” Circada Festival celebrated annually in Seville. Written in .Net Maui.
The original idea was to provide an app where the user can have the festival schedule and artist information at hand. However, this was solved by embedding the website of the festival, saving a lot of development time. We then used the saved resources to develop a quiz about street circus that is having a good reception among its aficionados.
We are currently measuring the app engagement and planning where to go next.
Video
A demo video:
CircadApp.video.V1.1.mp4
Download
Currently the app is available on the Google Play Store:
Loose schema
A non-standard schema to quickly wrap your head around the project files and structure:
Brief summary
Quiz questions are stored in a JSON file. Every question has a title and four response options, with only one of them being the correct response. Every question can have an image (stored on disk as part of the app raw data).
The QuizPageViewModel loads a quiz from disk using the QuizService class and warps the questions data with several ViewModel classes that add observable and responsive properties to the quiz raw data. In this way, the View can react to user inputs and render the question buttons with different styles, animations, etc.
User score is reevaluated every time the user completes a quiz, showing the user a Lottie animation. It is saved to disk safely by serializing the Model objects to a JSON file using the UserScoreService class. The user score is presented to the users as small trophies in the QuizStartPage.
The weak reference messenger is used to notify the QuizPage that the shell is trying to navigate away from the quiz. If the quiz is not yet completed, the user is asked for confirmation.