As a squad, our task is to develop a personal task management app for Android. The app should store data locally using the Room database and implement Jetpack Navigation 2 for seamless user flow management. Maintain a simple architecture—only include components that are necessary and justified, anything without reason will affect your score in negative way!.
Each screen is expected to have its own ViewModel. The ViewModel should depend on an abstraction called TasksServices, which will provide domain-level models called entities. The implementation of TasksServices should utilize DAOs from Room to retrieve and map data into domain entities.
Since the app is relatively simple, applying a fully-fledged clean architecture is not required.
Please build Design System and use it, avoid hardcoded styles and colors! Keep in mind that your app should look same as figma and support responsive UI.
✅As a user, I expect an onboarding screen to appear only the first time I launch the app.
✅As a user, I expect a home screen displaying statistics about today’s tasks.
✅As a user, I expect to create a new task with a title, description, priority, and category.
✅As a user, I expect to view the full details of any task.
✅As a user, I expect to view all tasks based on a selected date.
✅As a user, I expect to delete any task.
✅As a user, I expect to change a task’s status from "To Do" to "In Progress," and from "In Progress" to "Done."
✅As a user, I expect to see a list of predefined categories.
✅ As a user, I expect to add a new category, including selecting an image from my device.
✅As a user, I expect to edit or delete any category that I created.
✅As a user, I expect to switch between light and dark mode.
✅ As a user, I expect the app to follow the device’s language settings and support both English and Arabic (no separate settings screen is required).
- Write unit tests with at least 70% code coverage.