It doesn't have a name yet, like most side projects we developers take on, thinking of a name is nearer to the bottom of the To-Do list.

However, I do know the why, the how, and the other one word questions surrounding this project.

The Why

Since 2017, I've been building websites and apps for local businesses in my area and offering services such as monthly hosting and domain renewals on the side to keep everything in-house.

With getting a new job as a Node developer in April, I realised that the admin and management of the side services (hosting, domains, website updates) was taking up more time than I'd have liked.

Sending invoices, tracking time, sending reminder emails, setting up servers and a myriad of other things were all tasks I did manually across several services and it was slowly growing to an unmanageable point. If only I could automate some of these things and save my time and sanity...

Oh wait 😄

Project Planning

After the epiphany of realising I could automate a lot of the admin side of my freelancing, I opened a Google Doc and got to work planning out what I needed and wanted from my project and other fancy features that could be added at a later date.

The main thing I needed was a way to move all my clients to one system that could send them invoices, track when those invoices were paid, assign new services to customers and keep both me and the client up-to-date to everything.

I broke this down into smaller features that I could add to the project in individual chunks (or Sprints):

  • Services
  • Invoices
  • Client Portal
  • Admin Portal

Doing this actually lead to me writing a few extra features down for each section. For example - As I'm using Stripe for payments, I'd like a way for clients to see an invoices' Hosted Invoice Page so they can pay online and download the invoice/receipt.

Hosted Invoice Page

At the end of planning, I had a decent feature list -

  • Allow Clients to see their Services, and Invoices relating to Services.
  • Automate sending Invoices for Services that require recurring payments.
  • Add/Manage Services, Invoices and Clients on an Admin Panel.
  • Automate provisioning new 3rd-party Services when needed.

Side Note

The last feature relates to another idea I had for my freelancing business. I want to slowly transition to offering more monthly services and growing my M.R.R, this feature should let me offer services like WordPress hosting without the need for me to involved as much.

The How

As per usual with my side projects I'm using Vue 2 and Express although this time, I'm using SQLite3 with Knex rather than MongoDB. This is because I wanted to try something new (SQL databases) and keep the App as monolithic as possible. MongoDB would require either installing MongoDB on the system or renting a database server where as SQLite3 is just a file on the system.

It also means that if the app grows too big for SQLite migrating to a hosted solution like MySQL shouldn't be too difficult.

So far development is going well, I'm partly building in public (though I keep forgetting to tweet) and sharing progress updates whenever something big gets added. At the current rate, I hope to launch it for myself within the next month.

A recent Twitter update. Clients can see their invoices.

Whilst this app is primarily solving a problem for myself, with some tinkering I hope to make it available for others to use within the next few months. The biggest issue there is figuring out if I want to sell it as a GitHub repo to clone and setup or as a hosted solution (again, growing my M.R.R) for other freelancers and businesses.

Happy coding, Friends 👾

Website (You are here)