Build the foundations for a Software as a Service business by leveraging Django, Tailwind, htmx, Neon Postgres, Redis, and more.
The goal of this project is to learn how to create a reusable foundation for building SaaS products. When release, this course will span multiple topics and give you a solid foundation into build your business.
- Deploy Django on Railway with this Dockerfile and guide
- Create a One-Off Secret Key for Django blog post
- This repo started as a course SaaS Foundations.
- Need a more advanced SaaS template? Check out CFE Run.
mkdir -p ~/dev/saas
cd ~/dev/saas
git clone https://github.com/codingforentrepreneurs/SaaS-Foundations .
macOS/Linux
python3 --version # should be 3.11 or higher
python3 -m venv venv
source venv/bin/activate
Windows
c:\Python312\python.exe -m venv venv
.\venv\Scripts\activate
Rav is a simple way to run commands and download static files (css, images, js, etc) from external sources.
# with venv activated
pip install pip rav --upgrade
rav run install
Use
python -m rav run install
if for some reasonrav
is not in your path.
cp .env.sample .env
cat .env
Values include:
DJANGO_DEBUG=1
DJANGO_SECRET_KEY=""
DATABASE_URL=""
EMAIL_HOST="smtp.gmail.com"
EMAIL_PORT="587"
EMAIL_USE_TLS=True
EMAIL_USE_SSL=False
EMAIL_HOST_USER=""
EMAIL_HOST_PASSWORD=""
ADMIN_USER_EMAIL=""
STRIPE_SECRET_KEY=""
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
or
openssl rand -base64 64
or
python -c 'import secrets; print(secrets.token_urlsafe(64))'
Once you have this value, add update DJANGO_SECRET_KEY
in .env
.
source venv/bin/activate
# or .\venv\Scripts\activate if windows
cd src
python manage.py migrate
python manage.py createsuperuser
python manage.py vendor_pull
- Sign up on Stripe.com for an account
- Get or create a Stripe Secret API Key (Dashboard > Developers > API keys > Secret key )
- Update dotenv (
.env
) with the valueSTRIPE_SECRET_KEY
with your key.
python manage.py runserver
Ready to roll! 🚀
Review the rav.yaml (or rav documentation) for available command shortcuts, here are some useful ones:
rav run install
- Install requirements based onscripts.install
rav run install_dev
- Install requirements for developmentrav run makemigrations
- Make migrationsrav run migrate
- Run migrationsrav run dev
- Run the development serverrav run test
- Run the testsrav run vendors_pull
- Download vendor static filesrav run collectstatic
- Collect static filesrav download staticfiles_prod
- Download vendor static files for productionrav download staticfiles_dev
- Download vendor static files for development
- [] Remove Django Allauth-UI and Slippers. While these tools can be great, they have been causing more issues than they have been worth.
- [] Docker Compose support for Postgres, Redis, and more.
- 2025-09-02:
- Upgraded to Django 5.2
- Added Slippers for better AllAuth UI Support
- Implemented Rav to manage requirements and static files
- Updated Dockerfile to use Rav
- Updated README to include Rav
- Dropped only Neon in favor of any Postgres database (aim to make it more generic)