Habit Hunting 1

I decided to work on a more serious side project that should help me out personally.

My goal is to create a habit helper app. I know there are others, for example Habitica but one thing that I really miss with them is the option to share tasks with members of my household.

These are the core features I want to have. (At least for now, we all know how that can change in the future, especially with personal side projects):

  • Be able to create tasks for yourself and set deadlines or repeatable
  • Create tasks for your household
  • Sync the tasks for the household (would be a bit useless without this)
  • Have graphs to visualize stuff
  • Be able to use the app offline and sync tasks for the household offline
  • Be able to use all that online with a central server used for syncing (self hosted)
  • Be able to export data

I usually prefer desktop applications but for this project it has to be mobile first. Due to my work and also personal interest I have been looking at .NET MAUI lately. .NET MAUI is not fully released yet but should be out soon. Now with .NET MAUI I can build for Android, Windows, iOS and Mac. I will ignore iOS and Mac because I don’t have any apple devices. I would have loved to also be able to build it for linux, but this has to wait. Maybe I will look at it with Avalonia UI once the very core system is implemented.

The idea at the moment is to have the app getting the data from an ASP.NET web api (when it’s being used online). Of course, I just realized that will be hard if I want to allow the same functionality offline. My idea was to have as few implementations needed in the app to make it easier for me. But while writing this I noticed I first need to focus on adding the functionality to the app. First I have to get the offline version running. Once I have that, I can either extract and rewrite it to use it “online”.

I wonder how this project will go and how far I’ll get with it. We will see! And once the project is somewhere I’ll probably start pushing the code to github. Bye!