/todoaholic

Minimalist todo app for iOS, Android, web & macOS, developed with Flutter and Firebase. DevOps with GitHub Actions and Fastlane.

Primary LanguageDart

todoaholic

A minimalist open-source and free todo app for iOS, Android, macOS & web.

Buy Me A Coffee

Get the app

Features

Manage tasks cross-platform in real-time. No need to refresh the browser if you made a change through the mobile app. Everything syncs across all of your devices in real-time automatically.

Create custom lists (ex. shopping list, bucket list, reading list, movie list).

Intuitive gestures to cross out, move, remove and edit tasks.
  • Tap a task to cross it of your list
  • Slide a task to the right to move it to the next day
  • Slide an undone task to the left to edit it
  • Slide a done task to the left to delete it
  • Slide a list in the drawer to the left to edit or remove it

Task timeline. Get an overview of what you have going on in the coming days.

Offline support for the mobile and desktop apps.

Keyboard shortcuts for desktop and web.
  • Navigate the day you are viewing on the home screen with the left and right arrow keys (current date with arrow down, one week forward with arrow up)
  • Press "A" or "+" on the task or custom list screen to quickly add a task
  • Press "H" to go "home" and view your current tasks
  • Press "T" to view the timeline
  • Press "P" to view your profile

Future plans

  • Calendar integration
  • Recurring tasks (tasks that repeat every day, week or month)
  • Sign in with Apple & Google

Known issues

  • Reordering tasks is not working properly for now.

Tech Stack

Frontend:

Backend:

Auth: Firebase Auth

DB: Firestore
    Composite indexes on collection ID "todos":
  • date Ascending, isDone Ascending, order Ascending
  • date Ascending, order Ascending, isDone Ascending
  • date Ascending, order Ascending, isDone Descending
  • isDone Ascending, date Ascending
  • isDone Ascending order Ascending
Firebase Cloud Functions

Custom schedule function that runs once every week to check for users that have been inactive for three months and removes them. Their user data is then removed by this extension: Firebase Delete User Data Extension.

CI/CD pipelines

iOS:

A GitHub Action automatically builds the Flutter iOS app with Fastlane, and deploys it to TestFlight throught the App Store Connect API when there is a push to the master branch or a PR merge.

Android:

A GitHub Action automatically builds the Flutter Android app bundle, and deploys it to Google Play Store Internal Test Track with Fastlane, when there is a push to the master branch or a PR merge.

web:

A GitHub Action automatically builds the Flutter web app, and deploys it to Firebase Hosting when there is a push to the master branch or a PR merge. There is also a GitHub Action that deploys a preview of the app for the PR for testing before you merge to master.

Other services used: