Building SaaS with Python and Django

On Wednesdays at 9pm Eastern Time, I develop a Software as a Service (SaaS) on Twitch.

My primary goal is to teach people about the Django web framework and Python.

Django is a big web framework so I share my experience from using the project for 6+ years.

This page contains show notes and links to each stream. Join me live if you’re interested!

As of February 2021, I’m no longer writing show notes for the stream (sorry, I don’t have enough time!). I’m still streaming!

You can find the stream recordings on my How To Build SaaS with Python and Django playlist.

  • #Python
  • #Django
  • #usability

UX Polish - Building SaaS #90

In this episode, I worked on more customer requests to refine the user interface. We added a new convenient shortcut button and included additional information and links on the course detail view.

  • #Python
  • #Django
  • #usability

Customer Feature - Building SaaS #89

In this episode, I show you how to take a feature idea from nothing to something. We added new UI, wrote a new view, a new form, and all the associated test code to prove that the feature works.

  • #Python
  • #Django
  • #usability

Customer Requests - Building SaaS #88

In this episode, I worked on some customer requests now that I’ve finished launching the product. These requests improved the usability of the application in a few spots that were lacking.

  • #Python
  • #Django
  • #bugs

Squashing Bugs - Building SaaS #87

In this episode, I fixed some critical issues that my customer discovered. My customer is putting the app through its real paces for a school year and since this is the first run, there were bound to be some bugs.

  • #Python
  • #Django
  • #email

Testing Email Designs - Building SaaS #86

In this episode, I worked on the sign up confirmation email design. We customized the template and used MailHog to test the flow and see how the email appeared. After working on the email design, we switched to the landing page of the site to work on the pricing information.

  • #Python
  • #Django
  • #documentation

Customer Docs - Building SaaS #85

In this episode, I integrated customer documentation into the app. I showed how to build Sphinx documentation into a Django project, then created a help view to link to the docs. Finally, I added documentation building to the deployment process.

  • #Python
  • #Django
  • #logic

Refactoring Enrollment - Building SaaS #84

In this episode, I decided to redesign a portion of the application flow. I wasn’t pleased with how users would enroll students for their grades so I refactored the school year page into a flow that worked better.

  • #Python
  • #Django
  • #templates

Empty States - Building SaaS #83

In this episode, I returned to the onboarding flow and start to polish some of the extra pages. We filled the pages with special copy and a call to action to each page to help customers be successful.

  • #Python
  • #Django
  • #templates

Customer Feedback - Building SaaS #82

In this episode, I worked on feedback from my primary customer. We fixed a couple of issues that she reported, then moved on to more of the onboarding flow.

  • #Python
  • #Django
  • #templates

Finishing Onboarding - Building SaaS #81

In this episode, I completed the last form that completes the last step on my Django app’s onboarding process. We built up the view, wrote the tests, and worked through the templates changes.

  • #Python
  • #Django
  • #views

Reordering Models - Building SaaS #80

In this episode, we looked at an UpdateView for the GradeLevel model in the homeschool application. Along the way, I had to display some UI elements on the grade to give users the ability to adjust the ordering of courses within their grade level.

  • #Python
  • #Django
  • #templates

WhiteNoise Shenanigans - Building SaaS #79

In this episode, I worked on a method of adding static content to a site that didn’t involve the staticfiles directory, a separate domain, or a reverse proxy like Nginx. We had to get clever with Heroku buildpacks and how to configure WhiteNoise.

  • #Python
  • #Django
  • #templates

Create A Form Template - Building SaaS #78

In this episode, I created a template for one of my new forms on the new social media app that I’m building. We talked about context data, template styling, and special considerations for forms in templates.

  • #Python
  • #Django
  • #forms

Sending Invites - Building SaaS #77

In this episode, I worked on the form that will send invites to users for the new social network app that I’m building. We built the view, the form, and the tests and wired a button to the new view.

  • #Python
  • #Django
  • #design

Capped Social Network - Building SaaS #76

In this episode, I started a new project to build a different kind of social network. This social network will contain a max number of connections to encourage thoughtful choice when growing your personal network. We talked MVP features and put in the basics of a Django app.

  • #Python
  • #Django
  • #templates

Make A Landing Page - Building SaaS #75

In this episode, I added a landing page design to the app that I’m building. By using a Tailwind CSS landing page template, I could fit the design in with my existing CSS tools.

  • #Python
  • #Django
  • #templates

Check Web App Security With Bandit - Building SaaS #74

In this episode, I integrated the bandit static analysis tool to do automated security checking of my code before each commit. We talked about pre-commit and how to add in a new hook. After finishing that tool addition, we got deep into Django while removing some messages inserted by django-allauth on sign up.

  • #Python
  • #Django
  • #templates

Dynamically Regrouping QuerySets In Templates - Building SaaS #73

In this episode, we worked on a new view to display course resources. While building out the template, I used some template tags to dynamically regroup a queryset into a more useful data format for rendering.