← all builds

From-Scratch Build · Starter Kit

Personal Website Template

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.

DjangoTemplate repoSQLite MarkdownDocker

What it is

A site you start from, not finish

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

Tools under the hood

The point of this rebuild was the toolchain. Here is what each piece actually does in the system.

framework

Django

The web framework providing the scaffolding — URL routing, the ORM, templating and the admin a new owner edits content through.

structure

Page templates

About, projects, publications, talks, courses and contact pages already exist, extending one shared base.html layout.

content

Content models

Pre-built models for the common pieces of an academic site, so the admin forms are ready before any data is entered.

authoring

Markdown + filters

Custom template filters render Markdown to HTML, letting the new owner write rich text without touching code.

styling

Modular CSS

A separate stylesheet per page over a shared base, so re-theming the template is a contained, low-risk change.

packaging

Docker Compose

Clone, docker compose up, and a working site is running — the fastest possible path from template to live.

Architecture

From clone to your own site

The template is designed around the journey a new owner takes. Each step is a seam meant to be customised.

  1. Clone the template live

    Start from the repo as a base; the whole skeleton of a personal site comes with it.

  2. Run it as-is live

    One command brings up a working but empty site, so you see the shape before you change anything.

  3. Configure settings live

    Project name, site settings and secrets are the first seam — the obvious things to make yours.

  4. Fill the content live

    Add your projects, publications, talks and courses through the admin; the pages populate themselves.

  5. Re-theme live

    Swap the per-page CSS to change the look without touching the logic underneath.

  6. Deploy live

    Ship the container, and your personalised copy is live.

How it runs

Up and running in minutes

The whole promise of a template is speed from zero to working. The path is short:

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

What rebuilding it taught me