From-Scratch Build · Starter Kit
A reusable starter that anyone can clone to stand up their own academic personal site in minutes — pages for projects, publications, talks and courses already wired to an admin, waiting to be filled. Rebuilt from scratch to learn what makes a project a reusable template rather than a one-off site.
What it is
Most websites are built for one person. This one is built to be copied. It's a Django starter with the whole skeleton of a personal academic site already in place — the page structure, the content models, the admin, the styling — but deliberately empty, so the next person fills it with their projects and papers.
I built it to learn the difference between writing a site and writing a template. A template has to be generic, easy to configure, and quick to make your own. Every hard-coded name or detail you remove is a decision about what should be the user's to fill in.
The core idea I wanted to learn: good templates are about defaults and seams. Sensible defaults so it works the moment you clone it, and clear seams — settings, content models, styles — where you're meant to make it yours.
The stack
The point of this rebuild was the toolchain. Here is what each piece actually does in the system.
The web framework providing the scaffolding — URL routing, the ORM, templating and the admin a new owner edits content through.
About, projects, publications, talks, courses and contact pages already exist, extending one shared base.html layout.
Pre-built models for the common pieces of an academic site, so the admin forms are ready before any data is entered.
Custom template filters render Markdown to HTML, letting the new owner write rich text without touching code.
A separate stylesheet per page over a shared base, so re-theming the template is a contained, low-risk change.
Clone, docker compose up, and a working site is running — the fastest possible path from template to live.
Architecture
The template is designed around the journey a new owner takes. Each step is a seam meant to be customised.
Start from the repo as a base; the whole skeleton of a personal site comes with it.
One command brings up a working but empty site, so you see the shape before you change anything.
Project name, site settings and secrets are the first seam — the obvious things to make yours.
Add your projects, publications, talks and courses through the admin; the pages populate themselves.
Swap the per-page CSS to change the look without touching the logic underneath.
Ship the container, and your personalised copy is live.
How it runs
The whole promise of a template is speed from zero to working. The path is short:
docker compose up applies migrations and serves the empty shell.In my rebuild I focused on keeping things generic — resisting the urge to bake in any one person's details, so the next owner inherits a clean slate.
Reflection