# Architecture

┌─────────────────────────────────────────┐
│            adamcoding.com               │
│                                         │
│  ┌───────────────────────────────────┐  │
│  │          Nginx (reverse proxy)    │  │
│  │   :80/:443 → TLS termination     │  │
│  └──────┬──────────────┬─────────────┘  │
│         │              │                │
│    /    │         /tracker              │
│         ▼              ▼                │
│  ┌────────────┐ ┌────────────────┐      │
│  │  Flask App │ │  Tracker App   │      │
│  │  :5000     │ │  :5001         │      │
│  │  (this     │ │  (DSA tracker) │      │
│  │   site)    │ │                │      │
│  └────────────┘ └──────┬─────────┘      │
│                        │                │
│                 ┌──────▼─────────┐      │
│                 │  PostgreSQL 16 │      │
│                 │  :5432         │      │
│                 └────────────────┘      │
│                                         │
│         RackNerd VPS (2C / 8GB)         │
└─────────────────────────────────────────┘
        

# Tech Stack

Backend

  • Python 3.12 — language
  • Flask 3 — web framework
  • Gunicorn — WSGI server
  • Markdown — blog rendering
  • Pygments — syntax highlighting

Frontend

  • Jinja2 — templating
  • Vanilla JS — no frameworks
  • JetBrains Mono — code font
  • Inter — body font
  • CSS Grid/Flexbox — layout

Infrastructure

  • Docker Compose — orchestration
  • Nginx — reverse proxy + TLS
  • RackNerd VPS — 2 cores, 8GB RAM
  • Git — deploy from branch
  • Let's Encrypt — SSL certs

Blog System

  • Posts are .md files with YAML frontmatter
  • Write in any editor, commit, deploy
  • No CMS, no database, no admin panel
  • Fenced code blocks with syntax highlighting
  • Auto-sorted by date

# Deployment

deploy.sh
#!/bin/bash
# One command to rule them all
git pull origin main
docker compose down
docker compose up -d --build

That's it. The entire site — including the DSA Tracker with its PostgreSQL database — is deployed with a single script. Branch-based deployment lets me test changes on staging before going live.

# Cost

€16 /year VPS
€12 /year domain
€0 SSL (Let's Encrypt)
€0 Software (all OSS)

Total cost of running a professional developer portfolio with a live web app: about €28/year. No excuses.