The Project

Posted on Jan 31, 2023

The reason I’m getting into Javascript development in earnest is that I’ve wanted to realise a rather big project for years. That project is a complete solution for doing GTD®️. GTD stands for Getting Things Done. It’s a set of habits and rules for how to deal with the onslaught of tasks in modern-day life. Basically, it teaches you to get things out of your head by writing them down, clarifying what needs to be done about them next, and making you review your system regularly. That way you free your brain from having to remember what’s on your agenda, thus taking away the mental stress. It was developed by David Allen and he wrote several books about his method. When you read them you’ll probably notice yourself nodding along because it’s basically all common sense but applied in a strategic manner.

Now, what I’m thinking of here is a complete set of tools:

  • web interface
  • mobile app(s)
  • self-hostable API server
  • integration with calendars and contact lists, maybe even email

This is no small task, especially not for someone who hasn’t done any serious modern frontend development. Of course, I know HTML, CSS, Javascript. But the modern way of doing things with all the available tooling - npm, vite, Rollup, Parcel, Webpack - and frameworks - Vue/Nuxt, React/Next, Svelte/SvelteKit - makes my head spin. 😵

The API server will almost certainly be done in Go which I know and love.

But before I dive into this huge endeavour I thought I’d dip my toes into something smaller, more manageable.

The Learning Project

A while ago a nephew of mine was briefly fascinated with developing software. I don’t know if he still is. At the time though he came to me with a project that originated with his mum. She and her family often go on holidays with quite a few friends and their children. Planning such holiday trips and making sure everyone knows what’s on the agenda on a given day, is kind of like herding cats, I reckon. So she was looking for a way to have it easily accessible for everyone on the trip.

Getting into Svelte recently, I thought this might be a fun little project to get the hang of the framework and get comfortable with it for the big task.

So, a holiday planner it is. Desirable features:

  • add holidays with title and dates
  • add activities and events with dates and times
  • add participants
  • keep a journal/diary of events
  • let participants see and share photos
  • access-control everything
  • let people share a link (à la Dropbox/Google Drive/…) for others who are not be participants

I thought of another optional feature: integration with CalDAV so a holiday-specific calendar can be subscribed to directly and people get to see what’s planned on their regular calendar app.

This project sounds much less daunting than the big one above and lets me get acquainted with Svelte and Javascript frontend development. Wish me luck.