Let's build a todo-list

A useful one, for once.

Rémi Rousselet

5 minute read

Yes, I’m building a todo-list, when there are effectively hundreds of them available online.

Let me explain why:

Killing two birds with one stone

Dash is safe, don’t worry.

As a maintainer of multiple open-source libraries (provider, flutter_hooks, …) , I’ve always struggled with one thing:

Building examples/tutorials.

I can answer questions (don’t hesitate to ask questions on Stack Overflow!).
But writing code without real problems behind it is not my thing. I don’t like it.
So, for a long time, my packages did not have “official” “complex” examples.

But that is bound to change.
There is an app that I want to build, with many “real-world problems”. That app is for me. The app itself doesn’t matter, but I figured: “Let’s make it open source and use that as an example!”

So here we are. I’m announcing that I’m building a todo-list.

All of this for a todo-list?!

Worry not, this is not your typical todo-list. Here’s a sneak peek at some of the features this app would have:

  • Connecting to third party API (Github, Stack overflow, Gmail, …)
  • Authentification
  • Offline support
  • Notifications

The application probably does not matter to most of you (and that’s fine).
On the other hand, you may be interested in how it works.

What to expect

This work will consist of three parts:

  • Some articles.

    The inner working of the application will be explained across multiple articles.
    Each article will focus on one topic (authentification, offline, …) and will explain the reasoning behind the different decisions made.

    These will be advanced articles. They will try to be simple, but will contain a lot of information.
    They will not only explain “how”, but also “why”.

  • The source code.

    The code will be open-source, and the application will be built using Flutter + multiple of my different packages.
    The code aims to be production-grade. It will be tested, heavily documented, and with readability in mind.

  • The application.

    It will be a cross-platform app (mainly Android and web).
    As opposed to most examples, this app is designed to be used. It tries to be useful, and as such, feature requests are more than welcome. I’ll share more about the app later.
    It won’t be a one-time release, and will have continuous support.

What I need from you

This is cool and all, but to make it as valuable for everyone as possible, I need your help.

If you have any topic you would like to see covered, specific questions, tools you would like to see used, or any request really, please voice them!

Many of you answered the recent query I made:

And this is great!

But we can never be too safe. If you haven’t already, feel free to answer the previous tweet or leave a comment on this article. This would be incredibly helpful.
Even if I don’t fulfill your request, someone else from the community may see it and cover it.
You have nothing to lose.

The application

You can stop here if you do not care about the application.

This application tries to solve one problem:

I personally love following what everybody around the Flutter community is doing.
I want to know what are the latest packages, the new features, what problems people are facing, …

But that is a huge amount of information, and it is spread across too many applications.

  • It shouldn’t matter that a question is asked on Stack Overflow or Slack.
  • It is easy to miss some of the valuable content.
    Twitter doesn’t sort its content by value, but by views. You will see cat pictures before the announcement of a new Flutter article.
  • These apps don’t keep track of what you’ve already seen.
    When you open Stack Overflow, you see the latest questions. But you may have already seen all the latest questions and missed some older ones.
    You have to remember where you left and scroll there manually.

My solution

What I want to build is a mixture between Twitter and Jira/Trello, connected to third party providers like Stack Overflow, Github, Gmail, …

The idea is to generate a feed of tasks/news automatically from these external sources, and sort them based on what matters to you.

For example, the release of a package with no documentation likely doesn’t matter. On the other hand, a new package with a very detailed README may be interesting.
But at the same time, if you’ve already seen the release of that interesting package the last time you opened the app, there’s little value in showing it to you again.
We can then show you that less interesting package if you missed it, or different news.

Similarly, consider that a pull request is opened on one of your projects:
If the CI is failing or the PR is flagged as work in progress or it is already reviewed, then there is little to no value in showing it to you.
On the other hand, if the PR is ready and has not been reviewed for a week, then it may be your next priority.

This is the kind of feed that I want to build.
If that’s still unclear, don’t worry. It will be clearer as the application progress.

That’s it!

To continue further, you can read the first article: Getting started: Creating your Flutter project

As a reward for reaching this far, here’s a cat picture:

comments powered by Disqus