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!

  • #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.

  • #Python
  • #Django
  • #views

Displaying Breaks - Building SaaS #72

In this episode, I worked to add breaks to the display of the week schedule. We had to update context to include the break information into the schedules. I refactored a method out of the calendar display code to make some reusable logic for handling breaks.

  • #Python
  • #Django
  • #views

Custom Form Validation - Building SaaS #71

In this episode, I added some custom checking to ensure that students may only be enrolled in a single grade level for a school year. We talked about form cleaning and wrote a for unit test to prove that the change worked. After that change, we switched to a template and wrote copy for when no progress reports are viewable for users.

  • #Python
  • #Django
  • #views

Predicting The Future - Building SaaS #70

In this episode, we worked on two issues. The first issue was fixing incorrect projected completion dates of tasks. We used test driven development to reveal the bug and work on the fix. The second issue add some extra data to display on a page.

  • #Python
  • #Django
  • #views

Polishing and Usability - Building SaaS #69

In this episode, we polished some parts of the application. Now that my first customer is using the app regularly, the feedback is coming in rapidly. We worked to fix some of the issues that she found.

  • #Python
  • #Django
  • #views

Rendering Calendars - Building SaaS #68

In this episode, I worked on rendering a calendar of important events in a school year. We built out the appropriate data structures, and I wrote some new model methods and added tests.

  • #Python
  • #Django
  • #models

Give Me A Break... Day - Building SaaS #67

In this episode, we did some Django model development. I created a new model to track break days in a school year. This model will be critical to fill in vacations and holidays so that the scheduling functionality works properly. I added the model, the tests, the admin page, and the create view to create break days in the app.

  • #Python
  • #Django
  • #views

Docs, Bugs, and Reports - Building SaaS #66

In this episode, I created documentation for anyone interested in trying out the application. After documenting the setup, I moved on to fixing a bug with the scheduling display of courses. In the latter half of the stream, we focused on creating a new reports section to show progress reports for students.

  • #Python
  • #Django
  • #models

Handle Default Values - Building SaaS #65

In this episode, I updated a model to handle the default duration of new tasks. This default needed to come from the Course model instead of the CourseTask model so we had to determine how best to set that data in various forms. I also fixed some drop down selection bugs that populated a form with the wrong data. We made sure that all the code was well tested.

  • #Python
  • #Django
  • #templates

Enrolling Students - Building SaaS #64

In this episode, we worked on a view to enroll students into a grade level for the school year. I added all the context data and used Tailwind to design the form layout to pick from a list of available grade levels. We added a variety of unit tests to prove the correctness.

  • #Python
  • #Django
  • #models

The Home Stretch - Building SaaS #63

In this episode, we return to the homeschool application that I’m building. I’m in the final stretch of changes that need to happen to make the product minimally viable. We worked on a template, wrote some model methods, and did a bunch of automated testing.