CS 499 Capstone · Collaborative productivity
MultiTasked
A shared place to keep the work moving.
A collaborative Android task manager for shared projects and everyday life — boards people can create, share, and join, with real-time sync and a grocery mode that totals a list.
- Jetpack Compose UI with Kotlin Coroutines and Firebase real-time synchronization.
- Hash-generated list-sharing IDs and Android deep links that route users to the right destination across lifecycle states.
- MVVM with immutable UI state, typed actions, input validation, reusable composables, and testable dependencies.
- Custom merge sort and a heap-based priority queue for due-date and urgency sorting, run on background coroutines.
- A separate offline Room/SQLite workspace with relational data, indexed queries, transactional updates, and migrations.
- Design, algorithm, and database enhancements documented in a public ePortfolio with code review and automated test evidence.
MultiTasked orders tasks with a custom heap-based priority queue (earliest due date first, then urgency) and a custom merge sort. This is a live JavaScript re-creation — add and poll tasks to watch the heap rebalance.
HighMediumLowNumber = days until due
An MVVM stack with one-way data flow: typed actions go in, immutable UI state comes out, and the repository decides whether data lives in the shared cloud or the offline workspace.
- UIJetpack ComposeReusable composables render immutable UI state.
- StateViewModelTyped actions in; validated, immutable state out.
- DomainRepositoryTestable dependencies; coroutines keep sorting and I/O off the main thread.
- DataTwo storesCloud · sharedFirebase real-time syncLocal · offlineRoom/SQLite — indexes, transactions, migrations
→ typed actions← immutable UI state⇄ real-time sync
- 01 · ShareHash-generated IDA compact ID identifies the shared list.
- 02 · InviteAndroid deep linkThe link carries the ID to whoever you invite.
- 03 · RouteAny lifecycle stateHandled on a cold start, from the background, or while already open.
- 04 · JoinTarget boardThe user lands directly on the shared board.