Inspiration
#My inspiration to making this app was to make my own todo list with a subscription tracker. Going through google play services to check what & when i have to renew something is always a hassle compared to just building an app that is only built to show you your memberships.
What it does
- tracks your tasks and subscriptions.
- Has its own cloud database and updates live across devices.
- People can still try it without signing up with guest mode. ## How we built it
Kotlin with Jetpack Compose and Material 3, using a ViewModel that holds the app's state.
Supabase, which gives us a Postgres database, user accounts and live updates. The database has proper relational tables linking each task and subscription to its owner. Row Level Security makes sure every user can only ever read or change their own rows, guests included.
changes are pushed to the app the moment they happen.
the app updates the screen immediately when you change something, then confirms with the server.
we built it with Claude Code (an AI coding assistant) and set up the Android build tools from the command line instead of installing Android Studio.
Challenges we ran into
Changing tech stack halfway through. We first built TaskFlow in React Native with Expo, so it could run on both web and Android. Testing on a real phone through Expo Go kept failing with connection errors, so we rewrote the whole app in native Kotlin. Because all the data lived in Supabase, the database didn't change at all. Only the app itself was rebuilt.
Setup mistakes. We hit a "Failed to fetch" error because we were still using placeholder settings. Then an "invalid path" error, because the Supabase URL had /rest/v1/ stuck on the end. Then "table not found", because the database script hadn't been run yet.
A sign-out bug. Tapping Sign out crashed the app, so you stayed logged in. We tracked it down using the phone's crash logs. Our live-sync code was trying to disconnect from a connection Supabase had already closed. Signing back in would also have crashed, because an old channel name was being reused.
New tools. The Android build tools had changed recently, so we had to learn the current way of setting up a project instead of following older tutorials.
Accomplishments that we're proud of
Rewriting the whole app without losing any data, because the backend stayed exactly the same.
Secure by design: every user's data is private at the database level, not just hidden in the app.
Guest mode that still saves real data, with no sign-up needed.
- Fixing crashes from evidence: we diagnosed them from the phone's crash logs and confirmed the fixes on a real device. ## What we learned
- Keeping the data and backend separate from the app makes big changes much less risky.
- How Row Level Security works, and why security belongs in the database.
- Reading crash logs is faster than guessing.
- The trade-offs between React Native and native Android, and why a testing shortcut like Expo Go isn't the same as a real build.
- Read the current documentation, because Android and Expo tooling changes quickly.
What's next for Taskflow
Editing: change existing tasks and subscriptions, not just add and delete them.
Reminders: notifications for due dates and upcoming renewal dates, with a "next billing date" field.
Upgrading guests: turn a guest session into a full account without losing data.
More currencies and spending categories.
A Google Play Store release, with a CAPTCHA to prevent guest-account spam.
Bringing the web version back, possibly by sharing code between the Android and web apps.
Built With
- claude
- kotlin
Log in or sign up for Devpost to join the conversation.