Thursday, 31 October 2024

Project 2 - Simplest SAAS - Concept and Approach

In my quest to build a side-hustle software-as-a-service business, I am building and deploying projects to level up my front-end and full stack development skills.  Now that I have completed and deployed my first Vue based solution, it is time to move on to something more challenging.

For my second project, I want to build and deploy a complete but minimalist software-as-a-service site.  To meet my self-imposed definition-of-done, this site will need to be functionally complete, hosted and have some potential to actually make money.  The site will also need to have a responsive UI that works on desktop, tablet and mobile platforms.

Since this will be a SAAS solution, it has to have something to sell. For this site the concept will be the simplest thing I can think of. The site will enable members to create and publish permanent 'bulletin board' articles. Users will pay a nominal amount for each article that they want to publish to the world.

The 'elevator pitch' here is that it is actually not easy to publish a simple 'open letter' to the world with any degree of permanence or which isn't either behind a paywall or saturated with adverts. Even a blog site like this one requires some effort.  A simpler 'no frills' option may be more attractive.  

Anyway, even if this concept isn't a winner, it doesn't really matter. The purpose of this exercise is to 'learn by doing' rather than making an actual profit, but I want at least to have some kind of product so that I can look at building the sort of account/payment features that a SAAS site demands.  Keeping the core site concept simple will enable be to focus on learning how a SAAS ecosystem works.
 
Unlike my first project which was front-end only, this solution will require multiple layers. Eventually I will need to integrate some sort of persistence layer, an authentication service,  and of course a payment provider. 

However, because another key focus of this project will be improving my woeful UX skills,  I am going to take a UI-first approach, where I will abstract and simulate the back end layers to start with. The general idea will be to get a fully featured version of the UI working first, then look at integrating back-end services.  I'll also learn from my previous project mistakes and start building a test suite from day one!

Here is the basic list of features that the solution will need to support

  • Customers - Core Features
    • Create, Edit and Delete articles
    • Publish/unpublish articles
  • Customers- Account/Billing Features
    • View/Modify Account Details
    • Purchase article publishing 'slots'
    • View Order History 
  • Authentication
    • Sign up new users
    • Login and authorise customers
  • Support
    • Support/feedback page
  • Public Users
    • View Published Articles

I think this covers the minimal set of features a SAAS solution will need.  If I get these working then I should be able to use this as a reference for building more complex SAAS  solutions for future projects.

The technology stack for the front-end will be identical to that of the first project:  Vue, Vuetify, Vite and Vitest all seem to work well together and this will be a chance to do a deeper dive with them,

I'll leave a deep discussion of the technology stack for the back-end for a future post, but eventually I aim to integrate the front-end with Supabase for Authentication and Persistence and with Lemon Squeezy as a payment provider. 


Raspberry Pi Desk Clock

I have a raspberry pi 5 in one of the original touch screen v1 official 7 inch display case.  It is always on my desk but is normally powere...