Introducing ToDoRo: The Task Management App that Does the Thinking for You

Tejas RaskarTejas Raskar
7 min read

Introduction

According to a recent study, about 80% of people procrastinate regularly.

Procrastination has affected all age groups, whether you're a student or an employee everyone has been affected by procrastination. These not only affect your Mental Health but also keeps you away from your goals.

Let's see how ToDoRo helps you overcome procrastination and achieve your goals without missing any deadlines!

The Problem

Imagine waking up in the morning and knowing that you have a big project due at the end of the day. But instead of working on it, you find yourself checking social media, watching Netflix, or doing anything else to avoid getting started.

Sound familiar?

You're not alone.

I was a chronic procrastinator too. I always skipped my tasks until the last day of the deadline. One day, I had a big deadline coming up, and I had put off working on it until the night before. I stayed up all night trying to finish it, and I ended up submitting a subpar product.

I was so disappointed in myself, and I realized that I needed to change my ways. I started looking for ways to overcome my procrastination habit, and I eventually came across the concept of timeboxing.

What is Timeboxing?

Timeboxing is a technique where you set a specific amount of time to work on a task, and then you stick to that time limit.

Timeboxing emphasizes the importance of time over tasks, helping you to make the most of your time.

I was so inspired by my own experience with timeboxing that I decided to create an app to help other people overcome their procrastination habits.

The Solution

ToDoRo is a flutter-based Smart To-Do Application that helps you keep track of all your tasks and helps you achieve them before the deadline. The main objective of this app is to help individuals like you and me reach our goals faster, and efficiently while enjoying the journey along.

What makes ToDoRo different from the competition?

I'm glad you asked that question! ;)

ToDoRo makes basic tasks like adding, editing, deleting, and marking tasks a breeze! With Outerbase's powerful commands, these tasks are handled like a walk in the park.

Let's go through the features one by one:

Auto Prioritization of Tasks

"A goal is a dream with a deadline"

- Napolean Hill

Adding tasks to your to-do list doesn't assure that you will complete it. The goals we set should always have a deadline. Having a deadline helps us to plan how we will be executing our goals.

ToDoRo takes the guesswork out of prioritizing your tasks!

It automatically tags tasks with a deadline of less than 2 days as Urgent, tasks with a deadline between 3-7 days as Upcoming, and tasks with a deadline greater than 7 days as Leisure.

This means you can spend less time figuring out what to work on next, and more time actually getting things done!

Here are some of the benefits of using ToDoRo's automatic task tagging feature:

  • Stay on top of your most important tasks:

    ToDoRo's "Urgent" tag makes it easy to see which tasks need your immediate attention. This helps you to avoid missing deadlines and falling behind on your work.

  • Plan your work in advance:

    The "Upcoming" tag helps you plan your work in advance and ensure that you have enough time to complete all of your tasks.

  • Reduce stress:

    By knowing which tasks are urgent and upcoming, you can reduce stress and anxiety. You can also feel more confident that you are making progress towards your goals.

InBuilt Pomodoro Timer

Remember the story I told you about how timeboxing helped me be more productive? I want to share that with all of you!

Pomodoro is a great technique that breaks your goals into smaller tasks with a time deadline of 25 minutes. You focus for 25 minutes and then take a 5-minute break.
This keeps your mind active and helps you to concentrate on a single task at a time, increasing your productivity.

So say goodbye to juggling multiple productivity apps!

ToDoRo has a built-in Pomodoro Timer so you can focus on your work without distractions and get things done faster.

With ToDoRo's smart task management features, you can spend less time managing your to-do list and more time actually getting things done.

The Build Process

The most important aspect of ToDoRo is the backend. All the operations the user might perform in the app are closely related to the database.

Why Outerbase?

Databases can be daunting to look at, especially for beginners. This is where Outerbase comes in. With its user-friendly UI and intuitive spreadsheet-like interface, Outerbase makes database management a breeze.

But Outerbase is more than just a pretty face. It also simplifies database work and boosts efficiency with its EZQL natural language SQL agent and powerful commands. EZQL is a game-changer for beginners and experts alike, making it easy to query and manipulate data without having to write complex SQL statements.

And the best part? Outerbase commands let you automate your workflows, streamline various tasks, and write them in SQL, Python, or JavaScript with support for Rust and Go coming soon.

In short, Outerbase is the perfect database platform for ToDoRo and any other app that needs a powerful and flexible backend.

The Commands

This is where the magic happens! Every request made by the app is made possible by commands. These are the core commands required by a todo app:

From adding tasks to deleting them, let's look into each of them in detail:

  • Add a Task

      INSERT INTO public."Tasks" (title, description, is_complete, due_date, userid, priority ) 
      VALUES (
          '{{request.body.title}}', 
          '{{request.body.description}}', 
          {{request.body.is_complete}}, 
          '{{request.body.due_date}}', 
          '{{request.body.user_id}}', 
          '{{request.body.priority}}'
      );
    

    This is the query we process when we make a POST request to the database. The table "Tasks" is been filled with the values sent by the client in the body. The values are as follows:

    • Title: The title of the task

    • Description: The description of the task

    • is_complete: This is the boolean that keeps track if the task has been completed or not. By default, it is 'false'

    • Due Date: This is the due date of the task

    • User ID: When a user successfully authenticates with the app a unique user ID is created to identify that user.

    • Priority: It is calculated and then stored. Can be "Urgent", "Upcoming", or "Leisure"

  • Edit a Task

      UPDATE public."Tasks"
      SET "title" = '{{request.body.title}}', 
          "description" = '{{request.body.description}}', 
          "due_date" = '{{request.body.due_date}}'
      WHERE id = '{{request.query.id}}';
    

    The above query initiates when the user triggers an edit operation. This is done by making a PUT request to the database.

    • Here, the title, description and due date have been updated with the new values entered by the user.

    • This only happens when the same user who created the task is the one editing it.

  • Delete a Task

      DELETE FROM public."Tasks" WHERE id = '{{request.query.id}}';
    

    This is a simple query that deletes the record (row) in the table whose id is passed as a query. To delete a task, we need to send a DELETE request to the database with the id as the query.

  • Fetch Tasks

      SELECT * FROM public."Tasks" 
      WHERE userid = '{{request.query.userid}}' AND is_complete = false;
    

    This query is executed when we need to fetch all the tasks with a GET request from the database and show them to the user. There are two conditionals in this:

    • First, we check the user requesting the data and then send the tasks associated with the user's userid.

    • Second, we also don't need to fetch the tasks that are already been marked as completed by the user.

If both these conditions are true, then only the data is fetched and delivered to the client.

  • Mark as Complete

      UPDATE public."Tasks"
      SET "is_complete" = '{{request.body.is_complete}}'
      WHERE id = '{{request.query.id}}';
    

    This is a simple PUT request which is executed when the checkbox is clicked. It sets the is_complete attribute of the task to "true" where the id is equal to the task's id.

The UI

The complete code can be found here on GitHub.

Conclusion

ToDoRo is a powerful to-do app that can help you to overcome procrastination and achieve your goals. It is packed with features that make it easy to stay organized and on top of your tasks, such as automatic task tagging, a built-in Pomodoro Timer, and Outerbase's powerful commands.

If you're looking for a to-do app that can help you get more done, then ToDoRo is the perfect app for you.

Thank you to Hashnode and Outerbase for making this hackathon possible! I am grateful for the opportunity to learn and grow as a developer, and I am excited to see what the future holds for ToDoRo!

2
Subscribe to my newsletter

Read articles from Tejas Raskar directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Tejas Raskar
Tejas Raskar