Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A simple note-taking app built with Django, using SQLite locally and Postgres on Vercel.
Django Notes App is a starter template for a simple note-taking application built with Django, designed to run on Vercel with a one-click deploy. It shows how to use Django's server-side rendering, URL routing, forms, and ORM, with SQLite for local development and Postgres in production.
Django Notes App is a minimal Django project that implements a basic note-taking interface. It takes no external input to start—you clone or deploy it, set the DJANGO_SECRET_KEY environment variable, and it produces a working web app for creating and viewing notes. The template runs on Vercel's serverless platform via WSGI, and it is published as part of the official Vercel examples repository on GitHub.
[tool.vercel.scripts] section in pyproject.toml, so the schema is always up to date.READ_ONLY=true disables all write operations, which is useful for preview deployments or demo environments.DJANGO_SECRET_KEY environment variable for cryptographic signing; a one-liner generates a random key using get_random_secret_key().uv: run uv sync, uv run python manage.py migrate, and uv run python manage.py runserver to start on http://localhost:8000.staticfiles app serving static assets.DJANGO_SECRET_KEY during import.DATABASE_URL.READ_ONLY=true to make the app completely non-mutating, which is handy for public demo instances.The app runs Django through WSGI on Vercel, so each request is handled by a serverless function. When you import the repository, Vercel asks for a Postgres database and sets DATABASE_URL; the code uses this variable to choose Postgres over SQLite. On each deploy, Vercel runs the project's tool.vercel.scripts migrations automatically. Locally, you run the same migrations manually with uv run python manage.py migrate.
Django requires a DJANGO_SECRET_KEY environment variable for cryptographic signing. You can set it in the Vercel project settings, or generate a random value locally with uv run python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())' and add it with vercel env add.
You can try the deployed example at https://django-notes-example.vercel.app/.
The template defaults to SQLite locally and Postgres on Vercel. It checks for the DATABASE_URL environment variable, so any Postgres-compatible provider (like Neon) can be used; the page specifically recommends using a provider that supports branching for preview deployments.
Use uv sync to install dependencies, then uv run python manage.py migrate and uv run python manage.py runserver. The server will be available at http://localhost:8000.
Setting READ_ONLY=true disables all write operations, making the app read-only. This is useful for demo or preview environments where you don't want changes persisted.
