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.