We've all bounced around new apps and tools for calendars, product management, planning,
todo lists, and productivity. I've probably tried more than most but always ended up with
my tasks split up and dissapointed in whatever I was using because it missed a specific
feature. In the end I always came back to the tried and true, pen and paper. That's
why I made Planit for myself and others like me, who in this world of ever evolving
technologies, always come back to the old ways. I find it easier to be able to write my
own dates, add little notes, scribble while I'm thinking, draw arrows to related tasks, or
just rewrite the whole thing on the back of the page.
\
That's where Planit comes in.
The main goal of Planit is to get you to the pen and paper stage faster. Whether you
prefer to plan online or paper, Planit is built to enable you. Your tasks will be
displayed how you want them to be, just as if you had written them by hand. Don't be
impeded by weird menus or navigation bars showing up when you print, it's just your tasks
your way.
Goal
Build a cool product that people enjoy using.
Planit is a one-person project, built from the ground up by me. My goal now is simple:
continue refining the product for anyone who still enjoys using pen and paper for todo
lists. I'm always open to feedback and excited to build a community of like-minded users who
value efficiency and creativity
Join Me
As Planit grows, I'm eager to hear from users. If you have ideas, feedback, or just want to say
hi, feel free to reach out. After all, Planit was created for people like you.
Technologies
What powers Planit?
When I built Planit one of my goals was to get something out of it even if nobody else used
it. I wanted to learn something new that I could use after it was finished. I've learned
everything I can about React and Node APIs so this time I switched to Svelte with a Rust
API. The project before this I was using Flutter, so I wanted to see what Rust could as an
API. I've watched Svelte develop over the years and it seemed like a good time to finally
try it out.
Frontend
Instead of using SvelteKit I decided to try out Astro + Svelte because it seemed more
performant and flexible. I always design my own projects and being able to use Tailwindcss
again has made building the frontend a pretty enjoyable experience. I wanted to test myself
so I built my own wrapper for data fetching, which also let me build my caching own
mechanism for handling task related API calls. Personalized caching has made utilizing
Svelte/Store a breeze. And Astro has let me fine tune which components require client
interaction so I can mainly use SSR for the product website and CSR while people are
planning, all in the same project. I also use CSR in select components on the product
website if you noticed, but the rest of page is SSR which should speed up load times.
Backend
Coding the API was my favorite part of this project. I used Rust + Actix-Web to build a Rest
API to handle everything the client needs. Using Diesel for the database was fun because I
got to write SQL again and everything was handled in one project and easily integrated with
my type system from Rust. The type system also let me make use of the Swagger-UI Actix-Web
plugin so I could generate an OpenAPI specification file and host an accurate representation
of my API on the web and test it from there. Overall the developer experience of using Rust
was amazing once I learned how to properly use the type system.
This is also the start of my mono API to consolidate my various projects, which I previously
turned off when starting new ones due to server costs. By containerizing the API in Docker
and hosting it on a Kubernetes cluster, I've set up the infrastructure to compartmentalize
and serve all my projects from a single server. This approach not only allows me to manage
multiple projects efficiently but also ensures that if any of them gain users, I can easily
scale resources or migrate the project to its own server when necessary.