Hear about how folks are running their web apps in production. We'll cover tech choices, why they chose them, lessons learned and more.
Submotion Helps You Manage Access Control for Your SAAS Subscriptions
In this episode of Running in Production, Kristian Dupont goes over building a SAAS app to manage access control to your existing SAAS subscriptions. It’s built with Koa, Node and React and is hosted on Heroku. It’s been running in production since 2018.
Kristian talks about validating his idea before coding it, really leveraging code linting tools, the challenges of adding a bunch of different SAAS app integrations, using ElephantSQL to host his PostgreSQL database and more.
Topics Include
- 3:20 – Starting with an empty folder as a sole developer looking to ship an MVP
- 4:29 – Motivation for using Node
- 9:19 – Reasons for choosing Koa and Knex with a custom library Kristian wrote
- 14:57 – Using eslint and the overall power of going all-in with linting
- 17:50 – The back-end is a RESTful API with React on the front-end
- 21:43 – Using interesting PostgreSQL features such as triggers
- 23:30 – Managing the front-end assets with Parcel and using TailwindCSS
- 30:27 – Fighting for your abstractions and creating React components
- 32:29 – Adding a bunch of SAAS app integrations was challenging at times
- 37:57 – Using Jest to run tests but not super happy about it
- 42:34 – 10k+ lines of code on the front-end and back-end
- 46:43 – Taxes in the US are fun (not)
- 49:00 – Mailchimp, Freshping, Datadog and Sentry are being used for various things
- 52:05 – Redis isn’t being used but the database is quite optimized
- 55:08 – The web app servers are hosted on Heroku and PostgreSQL is on ElephantSQL
- 58:45 – Running a Linux VM inside of an M1 Mac for local development
- 1:02:45 – The deployment process from development to production
- 1:07:49 – The DB is backed up every hour
- 1:09:43 – Freshping, Datadog and Slack provide good monitoring and alerting
- 1:12:09 – Best tips? Using Markdown to store test fixtures
- 1:15:24 – You can find Kristian on Twitter and his personal site lists all of his socials
Links
📄 References- https://nodejs.org/en/about/releases/
- https://www.milesconsultinggroup.com/blog/2021/06/01/what-to-know-about-the-taxability-of-saas-in-18-key-states/
- https://blog.serverfault.com/post/stack-exchanges-architecture-in-bullet-points/
- https://kristiandupont.medium.com/and-naming-things-tailwind-css-typescript-and-mammals-9eab459633d2
- koa →
- node →
- react →
- cloudflare →
- datadog →
- docker →
- elephantsql →
- freshping →
- gitlab-ci →
- heroku →
- mailchimp →
- parcel →
- postgres →
- sendgrid →
- sentry →
- slack →
- tailwindcss →
- xeno →
- https://github.com/venables/koa-helmet
- https://github.com/knex/knex
- https://github.com/kristiandupont/kanel
- https://github.com/eslint/eslint
- https://github.com/facebook/jest
- https://github.com/kristiandupont/mdconf-loader
Support the Show
This episode does not have a sponsor and this podcast is a labor of love. If you want to support the show, the best way to do it is to purchase one of my courses or suggest one to a friend.
- Dive into Docker is a video course that takes you from not knowing what Docker is to being able to confidently use Docker and Docker Compose for your own apps. Long gone are the days of "but it works on my machine!". A bunch of follow along labs are included.
- Build a SAAS App with Flask is a video course where we build a real world SAAS app that accepts payments, has a custom admin, includes high test coverage and goes over how to implement and apply 50+ common web app features. There's over 20+ hours of video.