Skip to content

My purposefully over-engineered personal website. I've never particularly taken blogging seriously so this may go unmaintained for a long time.

Notifications You must be signed in to change notification settings

jordaneb/jordaneb.com

Repository files navigation

Personal Website

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.

Features

  • 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 into uv 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.

Setup

Here’s roughly how I get it running locally:

1. Clone the repo

git clone https://github.com/jordaneb/jordaneb.com.git
cd jordaneb.com

2. Set up the environment

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.

3. Install dependencies

uv pip install -r requirements.txt
nvm use && npm ci

4. Build CSS and copy static files

npm run build:css
npm run static:cp

Running the Project

1. Apply migrations

python manage.py migrate

2. Start the dev server

uv run python manage.py runserver

The Simple Pages System

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.

About

My purposefully over-engineered personal website. I've never particularly taken blogging seriously so this may go unmaintained for a long time.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published