This is a little personal website project I put together to experiment with Django and Tailwind CSS. It’s intentionally overengineered — mostly for fun — and includes a basic content system that renders Markdown files as dynamic pages.
- Django
- Tailwind CSS — I love Tailwind over traditional CSS and a bonus is that it works well with LLMs.
- Simple pages system — Content lives in the
markdown/
folder as.md
files. Simple pages only requiring Markdown can be exposed through simple configuration and written in pure Markdown. - uv — The project uses
uv
for dependency management, virtual environments and process management. Previously I've used a pyenv and direnv combo but I wanted to try leaning intouv
for this project as it does both in one and it's fast. - nvm — You can use
nvm
or you can manually install the version of Node in the .nvmrc file.
Here’s roughly how I get it running locally:
git clone https://github.com/jordaneb/jordaneb.com.git
cd jordaneb.com
Using uv
:
uv venv
You can copy the default dev env with cp .default.env .env
. uv
will read this file when using uv run
.
uv pip install -r requirements.txt
nvm use && npm ci
npm run build:css
npm run static:cp
python manage.py migrate
uv run python manage.py runserver
This part is kind of fun. Instead of a database or CMS, I’m just storing all my content in Markdown files inside the markdown/
directory. Here’s how it works:
- Each URL slug maps to a Markdown file via a dictionary.
- A Django view reads the appropriate
.md
file based on the slug. - The Markdown content gets rendered into a template.
It’s pretty barebones, but it means I can update the site by editing Markdown files without touching the code.