A platform where you create and play quiz unlimited.
I'm Rohit Jakhar. Today I launch my first hackathon project QuizZon using HarperDB. Huge thanks to the #HarperDBHackathon for this hackathon and support me to build this amazing project.
What is QuizZon?
QuizZon is an Android App where anyone can create own Quiz and play other's quiz freely. You can challenge your friend for quiz competition and if you are teacher so you can create quiz test for your students.
I see many good app for multiple choice questions app like programming MCQ, UPSE MCQ etc. but I never seen any app who provide access to create own quiz and other people play that. So i created QuizZon, where you play other quizzes and create own quiz with very easy and simple steps without any premium required.
Insight into App:
- Authentication Screen
In Authentication Screen, You see two button; one for login and another for signup. If you don't have account so first signup otherwise go for login.
- Login Screen
In Login Screen, Enter your credential: Email and Password and enter into app.
- Signup Screen
In Sign up Screen, You need to enter few details like email address, name, password and confirm password. After signup, we send an verification link to your email address.
- Forget Password Screen
If you forget your password so don't worry. Just click on forget password text and go to forget password. There you can re-set you password using email verification.
- Home Screen
After login, you see home screen. Here you find a bottom navigation bar, a list of category, two button: one for join quiz another for create quiz. If you have quiz id so put it in Joint Quiz and direct play quiz. If you want to create own quiz so click on Create Quiz button and create quiz. If you want to browse quiz by Category then select a category from category list and see all quiz related to that category.
- Quiz List Screen
When you click on list icon in bottom navigation bar, it open quiz list screen. In Quiz List Screen, you see all quizzes in app. You also see who create that quiz, how many question it have, in which category it belong.
- Play Quiz
When you click on start quiz button in quiz list, you start playing quiz. At top you see quiz title, after that you see question statement and four option. Select one option and click on check answer button. You get result immediately that option is right or wrong.
- Result Screen
After finishing quiz, you see result screen where you see your result.
- Create Quiz Screen
When you click on plus icon in bottom navigation bar, it open create quiz screen. In Create Quiz screen, you can create own quiz. You need to give a Quiz title and choose a category that belong to your quiz. After that press plus icon, it will show a dialog where you can add your question one by one. In dialog, you need to give question statement, four option and write right answer again in answer box. After adding 5 questions, click on Upload Quiz button and it will upload quiz on database. After uploading quiz on database, you get a quiz id for your quiz, you can share it with your friend or student so they directly play quiz.
- Profile Screen
In Profile screen, you see your details like name, email and number of total quiz created by you. Below that you see a list of quizzes which created by you. From here you can share these quiz, copy their quiz id or delete that quiz easily. At bottom you see logout button, After pressing it you logout from app and go to Authentic Screen.
- About Screen
In About Screen, you read about app, app developer(me) and HarperDB. You also see my social link at bottom.
Built With 🛠
- Kotlin - First class and official programming language for Android development.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- StateFlow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
- DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
- Dependency Injection -
- Retrofit - A type-safe HTTP client for Android and Java.
- GSON - A modern JSON library for Kotlin and Java.
- GSON Converter - A Converter which uses GSON for serialization to and from JSON.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Progress Button - Progress Button is a android library for handling different types state like active, finished, enabled, disabled and reset with a single line of code.
- User Authentication Allowing user for login and signup using email based authentication
- Create Quiz User create own quizzes unlimited freely
- Play Quiz Play any quizzes at any time without time bounding
Join Quiz by Id If you have your friend's or other's quiz id, you can directly play his quizzes
Profile See your profile and quizzes created by you, you can delete your quiz
Forget Password Allowing user to forget his password using email based verification
- Add Pagination in data fetching I will add pagination in future so app will more optimized and improve speed.
Progress Report for every user I will store every player's result and make a progress report in which he saw his improvement in quiz solving also other person can see each other progress report.
Private Quizzes It will be a awesome features. I will also make a private quiz feature in which his/her quiz not listed in public quiz, who have quiz id only he can play that quiz.
Time Limited Currently project not have any time limits, he can solve a quiz in minutes, in a hour or in a day. But in future i will add an option for time limit in quiz creation screen.
My Experience with HarperDB
When i listen about this hackathon and learn about HarperDB I think this is another clod database but when i learn about its features and power, I was Amazed!!!. It give a powerful api a single endpoint. Now days, remembering endpoint is a terrible because in a production app, there are huge number of endpoint(In my last project there was 48 endpoints.). And if back-end developer change a minor change in endpoint it crash whole app. In HarperDB, there is no need of endpoint because it have only one end point for whole project. That are the reason why i impressed from HarperDB and I will use HarperDB in my freelance project in future for database.
If this project help you reduce time to develop, you can give me a cup of coffee :)