Product Development March 9, 2020

Open SaaS development from scratch, Day 4: database models, database update, and a couple of new wireframe pages


This is the fourth episode in the reality show about the development SaaS app from scratch. The previous episodes:

Open SaaS development from scratch: why and what
Open SaaS development from scratch: Day 1 - requirements and UI wireframes
Open SaaS development from scratch: Day 2 - admin pages
Open SaaS development from scratch: Day 3 - user pages

Yesterday I worked for more than 3 hours. What I’ve done:

  1. After I finished the wireframes I moved to creating the database model. I created a sketch of this schema on just a paper (this sketch doesn't have all the relationships):
    Database schema sketch

  2. Then I opened my account on ElephantSQL and created a free database there. I copy the connection string for the database.

  3. I created the SaaS application.

  • I pulled the paid version of SaaS Forge boilerplate from the private repository,
  • created .env file and added some environment variables (like db_url)
  • run the install.bat script.
    I had a working SaaS app in 3 minutes. I also had to create a couple of settings files in VS Code (launch.json and settings.json).
  1. Then I started coding. I had to update database models, added several (10) new models. For example, the comment model looks like this:
    Comment model

  2. I activated the Python environment (just clicked Debug in VS Code) and run the

flask dbupdate


It took less than a minute to generate all the tables in the database.
Generating tables

To make sure everything went well, I run the pgAdmin and connected to the newly-made database. I found all my tables:

Created tables

I also looked into the Comment table:

Comment table in the database

  1. During the process of creating models, I realized that I forgot to create UI for editing categories, types, and statuses. I believe it's a good idea to make them editable because every project could require its own set of statuses that can be different from another one. Also, I decided to make tags board-wide (on the sketch it's related to the category table because I thought every category should have its own set of tags, then I decided it was wrong).

So, I created one more page for the board settings (tabs for categories, types, statuses, and tags are all the same):

Tab category

Then I wanted to have a little rest :) So, I opened Facebook and found there one more competitor but it frustrated me. Not because it was one more competitor but because people are just copycats wanting to clone Canny. The funny thing there is ALREADY a clone of Canny called and I really don't understand why we need one more. They ( copy everything including integration and the pricing model.

Note, this project is not a Canny's clone. I probably borrowed some ideas too but it wasn't my intention. Quite the contrary, I don't like Canny and want to create a service that would work and look differently.

Time spent: 3,5 hour
Total time spent so far: 6 hours 10 minutes