![quiz-app-github](https://private-user-images.githubusercontent.com/29903779/404954212-14d963cf-1f91-4d54-a0a0-2bf314b3b034.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ5NTQyMTItMTRkOTYzY2YtMWY5MS00ZDU0LWEwYTAtMmJmMzE0YjNiMDM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlOWE1MmIyOTFjMDY0MmEyMTMxMTliNWQwOTc2MzEyZTA1NWE0NGFiMDMxOWJmYmZmNWI4NmZjMzQ3ODJhODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.uAiF-E7yR5hpqVBKkqvPhHEjYclED1wpCXTNScVz66c)
A modern Quiz App built with Jetpack Compose and organized using a multi-module architecture. This project demonstrates practices in Android development, emphasizing scalability, maintainability, and clean architecture.
- Multi-Module-Architecture
- Jetpack Compose
- Material Design
- Coroutines - Flow
- Retrofit
- KotlinX Serialization
- Hilt
- Navigation
- Coil
- Detekt
- DataStore
- Chucker
This project is organized into the following modules:
- Convention: Centralizes the project's build and configuration logic.
- App Module: Serves as the entry point of the application and contains global configurations.
- Common: Contains reusable components and shared utilities used across multiple modules.
- Connectivity: Manages network connection checks and status handling.
- Datasource: Handles data sources related to user sessions and profiles.
- Logout: Manages data operations for user logout functionality.
- Profile: Manages data related to user profiles.
- Datastore: Handles persistent data storage across the app.
- Network: Manages network requests and API calls.
- UI: Provides shared UI components and styles.
- Category: Handles categories, including data, business logic, and UI layers.
- Detail: Manages screens for displaying detailed information.
- EditProfile: Handles functionality for editing user profiles.
- Favorites: Manages the user’s favorite items or data.
- Home: Contains functionality for the home screen.
- Leaderboard: Handles leaderboard data and presentation.
- Login: Manages user login functionality.
- Profile: Provides access to user profile screens and features.
- Quiz: Handles the question-answer flow and quiz management.
- Register: Manages user registration functionality.
- Search: Handles search functionality and result display.
- Splash: Manages the splash screen displayed at the app start.
- Summary: Displays quiz summaries and results.
- Welcome: Manages the welcome screen of the app.
- Navigation Module: Handles the navigation logic for transitions between screens in the app.
Login |
Forgot Password |
Home |
![](https://private-user-images.githubusercontent.com/29903779/404725077-d4573963-8545-42ee-8761-05288720ca69.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjUwNzctZDQ1NzM5NjMtODU0NS00MmVlLTg3NjEtMDUyODg3MjBjYTY5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI2YzM0MWQwMGEyODg1MDYyZWY4YTAzYjE0YWNhZjZjYjQ0MDYzODY5M2NiM2VhMDVlNjNmN2I2YWU4NWY3M2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rxKEtg5UbRVhgIvFMVI84nzK_biNgYWRWd2qYaqecPk) |
![](https://private-user-images.githubusercontent.com/29903779/404725364-20be6c31-b68b-4339-9232-0a562a39c866.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjUzNjQtMjBiZTZjMzEtYjY4Yi00MzM5LTkyMzItMGE1NjJhMzljODY2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ2MGNkYzM5NTViYWFmNzAzNTMwMzJiMWZmZTFhOTRjZGQ2ODA2YzcwNTgxOGY4ZWFlZjY0YWZhNGRlNTAwODUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ea24-7Ha6EJvgmuLkGqHlszduvhmVHsw_CRzCexcOnw) |
![](https://private-user-images.githubusercontent.com/29903779/404725550-a2c6df3a-4a1a-4d7f-8fcb-76d34b1809d0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NTAtYTJjNmRmM2EtNGExYS00ZDdmLThmY2ItNzZkMzRiMTgwOWQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThlYTI0ZjMxMzI2YWZmMzk4YmEzMTY4NmIzZmU4ZWFhOTAwNWY4YzY1YzE3MTc2Yzc2NDE0ZmY5MTJhN2JkYzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.iO2GITFGKfZyu77DZgDRNAG7lJquL6eA0wgbTzDtYwQ) |
Favorites |
Leaderboard |
Search |
![](https://private-user-images.githubusercontent.com/29903779/404725546-679ea085-0422-425f-a82e-be369e6f97ab.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NDYtNjc5ZWEwODUtMDQyMi00MjVmLWE4MmUtYmUzNjllNmY5N2FiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyNTcxOWE3NjhjNDQyOTJhOTMyMWY2MGEyNWNjMTA1ZjAwNWVhZGJiMzU1OGZiMWI0NWE1ZjkxYWI5ZDU1YzAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8AT9OlRhdPBnToZZ7QfFQOVp5o7d9HROtMIomVqicF4) |
![](https://private-user-images.githubusercontent.com/29903779/404725570-6a738fb7-d63e-417f-b651-7aeb027e105b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NzAtNmE3MzhmYjctZDYzZS00MTdmLWI2NTEtN2FlYjAyN2UxMDViLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVlOTdjOWM0ODA4MjgyOTI5NWIwYjg2YWNlYjRiMDEwN2YwNjRkMzI4NDU1OTliOGIxOGVlZjZjOWM1MzRjOGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.B4b6ILt6k-xuEgwNycIp5fT_GK77OufDevD5jvlZN6E) |
![](https://private-user-images.githubusercontent.com/29903779/404725578-d647c5df-5ad2-4f72-b32a-6fcb3d268c0e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NzgtZDY0N2M1ZGYtNWFkMi00ZjcyLWIzMmEtNmZjYjNkMjY4YzBlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE4M2FlYzAwY2MzNDhlN2QzMzgyZTdkYjAxMDY0YjdhZDA2OTk0OWE2MDQxNDRlZmQ0MGU2ZmRlNWFlYjJiMTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.UakyBIxvaLPKLP2Ady6wXkcLPIeLc5vq84zDfhH7drE) |
Profile |
Edit Profile |
Select Avatar |
![](https://private-user-images.githubusercontent.com/29903779/404725575-bc1f28cc-661f-4b80-89ba-4794b69c1fe2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NzUtYmMxZjI4Y2MtNjYxZi00YjgwLTg5YmEtNDc5NGI2OWMxZmUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ2Y2M1NzZmODIzMjgzZDY1ZGVlNjg1NjU0MDgxYzU4MTFhOTQyYTFmN2EwM2I0Y2EyNjAzM2ZhZjllZmVhMTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hoKmlftl8oJVwkhp6ZHIJnkO8jXqAFtGxCF1xOAJWDo) |
![](https://private-user-images.githubusercontent.com/29903779/404725544-6db9f4de-1286-49f8-b1b2-c7d74abdf411.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1NDQtNmRiOWY0ZGUtMTI4Ni00OWY4LWIxYjItYzdkNzRhYmRmNDExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgzMThjYTNlN2I3YTEzMThmMTU1ZjVmMDc0N2I1OGY2Y2UwNGU4OWZiZmE0YTViNzBjYzk1YWRlODdkYTM1Y2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.MjyldW1YuP1ZRQnD1VIRX1dglWlpxUNVUWY65MiCqCY) |
![](https://private-user-images.githubusercontent.com/29903779/404725582-3647aea0-d9ef-4b9a-8cfc-ffa75585fbb2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjA2MTcsIm5iZiI6MTczOTQ2MDMxNywicGF0aCI6Ii8yOTkwMzc3OS80MDQ3MjU1ODItMzY0N2FlYTAtZDllZi00YjlhLThjZmMtZmZhNzU1ODVmYmIyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1MjUxN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWViNDMxZmM0ZGU1ZjkxOTY3ZTgzYTY5ZWM2NzdhZmUzZDM2NTBlZmEzMTk3MjUzZDkzM2M1YTJlN2ZiMjNmNTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.QY-MJet2YXknkJydu4NPKIQgP3aRPSin9jELfhhRqSI) |
- Clone the repository:
git clone https://github.com/cnrture/Quizzy-Compose-Multi-Module.git
- Open the project in Android Studio.
- Sync Gradle to download all dependencies.
- You need to provide Firebase connection, add google.services.json into the app and add client id in local.properties as follows
SERVER_CLIENT_ID=YOUR_CLIENT_ID
- Run the app on an emulator or physical device.
Contributions are always welcome! Here’s how you can help:
- Fork the repository.
- Create a new branch for your feature (
feature/your-feature-name
).
- Commit your changes and push the branch.
- Open a pull request.