From-Scratch Build · Events
The official site for an academic conference — hero, call for papers, agenda, speakers, organizers, important dates and a venue map, all driven from an admin so the committee can update it as the event takes shape. Rebuilt from scratch to learn how a deadline-driven event site is modelled and seeded.
What it is
A conference site is a personal site with a clock running. Everything on it — the call for papers, the important dates, the agenda, the speakers — exists to move people toward submission and registration deadlines, and all of it changes constantly as the event firms up.
I built it to learn how to model a time-bound event and, just as importantly, how to seed one. The standout feature is a set of management commands that populate the hero, agenda, organizers, dates and map in one go — so a fresh copy of the site comes up looking finished instead of blank.
The core idea I wanted to learn: seeding is part of the build. Custom populate commands turn an empty database into a realistic, demo-ready conference site instantly — invaluable for setting up a new year's event from last year's shape.
The stack
The point of this rebuild was the toolchain. Here is what each piece actually does in the system.
The framework behind the whole site — routing, the ORM, templating and the admin the organizing committee edits content through.
Conference, Speaker, Organizer, AgendaItem, ImportantDate, Role and Footer — every section of the event captured as its own model.
Custom populate_* commands fill the hero, agenda, dates, organizers, roles and map so a new site comes up complete.
Long-form sections — the call for papers, descriptions — are written in Markdown and rendered through a template filter.
The location is stored as an address and an embed URL, so the venue map renders right inside the page.
The app and its database are containerised, so each year's conference site spins up identically from the same image.
Architecture
The site is a single scrolling event page assembled from independently editable sections, each backed by a model.
Title, subtitle and the headline dates that greet every visitor and set the tone.
The submission pitch and a button linking out to wherever papers are received.
The deadline timeline — submission, notification, camera-ready — kept current as they shift.
The schedule of sessions, each item with its own content and icon.
Profiles with photos and roles for the people presenting and running the event.
An embedded map of the location and a configurable footer to close the page.
How it runs
The workflow leans on seeding to skip the blank-database problem entirely:
docker compose up starts Django and applies migrations.populate_* management commands to fill the hero, agenda, dates, organizers and map at once.In my rebuild I focused on the seed commands — they're what make a brand-new conference site useful from the very first run.
Reflection