Taskfolio is a personal project designed to showcase my Android development skills. The app is a lightweight task manager that integrates with Google Tasks through its REST API, adhering to a clean and modern MVVM architecture. I’ve used Kotlin Multiplatform, Jetpack Compose and Material Design 3 to create a smooth and visually appealing UI, while also incorporating Room for local data persistence and OAuth 2.0 for secure authentication.
This project highlights the breadth of my Android knowledge, from API integration and UI design to database management and CI/CD setup. It’s designed not just as a functioning task manager, but as a demonstration of my ability to deliver well-structured, maintainable, and scalable Android apps.
🎯 Project intentions
- Showcase my expertise in Android application development
- Demonstrate UI development using Jetpack Compose with Material Design 3.
- Include local-first capabilities for local data storage using Room.
- OAuth 2.0 authentication.
- Provide sync capabilities with Google Tasks for seamless task management.
- Illustrate my ability to set up CI/CD pipelines and publish apps to the Play Store.
❌ Out of scope
This project is not intended as a comprehensive task manager for public use. I do not aim to implement advanced features beyond what is supported by the Google Tasks REST API.
- no starred task
- no task priority
- only due date, no custom time support
- no task recurrence
- limited hierarchy (2 levels)
🚧 Known Limitations
- Authentication flow isn’t 100% reliable yet.
- Local-first support with Google Tasks sync is limited, in particular sorting & conflict management is barely implemented.
- Task deletion undo is not implemented
- Very limited move capabilities
- can’t move task from one list to another
- can’t indent/unindent
- can’t create sub-task
- no drag’n’drop
- Task list ordering isn’t supported (there is no API for that in the Google Tasks API)
🛠️ Tech stack
- Kotlin, Multiplatform (KMP) (currently Desktop & Android are supported)
- iOS & Web are not planned any time soon (contribution are welcome 🤝)
- Kotlin coroutines
- Kotlin multiplatform (aka KMP)
- Ktor client (+ Kotlinx serialization)
- Room (local persistance)
- Koin for dependency injection
- Material Design Components
- Jetpack Compose
- Kinda follows Google architecture guidelines
- Coil
- GitHub Actions for CI
- build Android & Desktop apps
- run tests
- publish app on Play Store
- publish companion website on Github pages