DEV Community

Cover image for why i built yet another todo app
Rashid Aziz
Rashid Aziz

Posted on

why i built yet another todo app

Building personal software is an extremely rewarding experience, both in creation and consumption. Writing software for yourself can feel like cooking - adding ingredients you like, removing the gross asparagus, adjusting the spices to your taste. Using your own software feels like putting on a really old, cozy, snug sweater.

tsk started as a side project with my friend, sharing ideas and coming up with different designs for a task manager and calendar app. We worked on it on and off for a while, until recently I decided to challenge myself to finally complete the project and publish it. my only requirement: build it so I would enjoy using it, daily.

If you want to try it out, just head over to tsk.lol - no signup or waitlist required.

But, for the curious, here’s some more behind the scenes.

design

the philosophy

the core design philosophy of tsk is that tasks only get done if they are scheduled on the calendar. tasks are things to be done, and anything that needs doing needs a time to be done at. in tsk, tasks are synced to the calendar. if you spend time working on a task (focus) or mark something as complete, that activity gets logged to the calendar. in tsk, you start by scheduling your day by selecting what tasks you want to do that day: events, task items, focus times, activities, etc.

the calendar timeline schedule thingy

this is the most interesting part of tsk. the goal of the schedule is to show a more holistic representation of your day. not just what meetings you have, but rather, answer the question, “what does my day look like?”. Along with events (ie meetings & stuff that usually goes on a calendar), it includes the tasks you’ve scheduled to complete that day, time you’ve blocked off for focus work or resting or sleep, and passive activity like screen time.
the calendar schedule

it also serves as a personal historical timeline. have you ever wondered, “hey i wonder what song i was listening to and what the weather was and what i was working on that random day five weeks ago?” Well, neither have I. but the point is, now you can.

the schedule is the part that still needs the most work, and most of these ideas haven’t been implemented yet. all of this work is heavily inspired by this article, “multi-layered calendars.” go check it out.

the user interface

the UI aims for a cozy simplicity. on the left, a tasks list, and on the right, the calendar. the most interesting element here is perhaps the dynamic island at the bottom, which acts as a unified interface for viewing & creating tasks, events, and activity.

im a huge fan of personalization and love changing the look the things every so often - so it features wallpapers and color schemes. eventually, i’ll add more themes and customization options.

engineering

local-first

as a big fan of local-first (another article you should definitely read), tsk aims to check all the boxes of fully local first software. at a surface level, tsk stores all data locally first, and then syncs it automatically in the background. that means, no loading spinners, instant UI everywhere, works offline, and syncs to all my devices.

built on Basic

tsk is built on Basic - a platform for building personal software. it works by giving users their own personal data store, a fully private and user-owned database that any app can sync data to. I’ve been working on Basic for the past three years, building out the infrastructure and devtooling. tsk is an experiment in dogfooding Basic, by using it for the auth + database + sync service. essentially, what this means is that tsk is just a client side app, with no backend or servers. when I login to tsk, i’m just connecting to my own PDS, and it syncs the data to my own personal cloud.

this whole experience gave me a lot of confidence in Basic as the future of personal computing. both as developer, i get to build rich client apps, and get auth + db + sync, and soon multiplayer, all without having to touch a backend server or database at all. as a user, i get an awesome app that is fast, connected to my other services, with the confidence that my data is private and portable.

open source

tsk is an open source project. you can contribute to it, learn from it, and fork it to make it your own :) i want people to see how fun it is to build personal software, and how easy it is to build on Basic.

View the Github.

if you want to use it, check it out at tsk.lol and let me know what you think. if you're curious about building on Basic, reach out - i'd love to chat.

Top comments (0)