blog / v1-changes

πŸš€ Portfolio V1 Changes!

A few weeks ago I posted about launching V1 of my portfolio. Since then I've completely rebuilt it from the ground up. πŸš€

Same URL, very different site - not in the way you may expect.

What changed:

πŸ”ΉMigrated from SQLite to PostgreSQL πŸ”ΉAdded a full admin panel with RBAC, audit logging, and server-side session management πŸ”ΉBuilt a blog and project management system with Markdown support πŸ”ΉMoved to a self-managed Hetzner VPS with Nginx + Gunicorn πŸ”ΉKept Cloudflare Tunnels, origin IP still never exposed

Security was a big focus this time around:

πŸ”ΉHSTS, CSP, Permissions-Policy headers πŸ”ΉScrypt password hashing, rate limiting, magic bytes image validation πŸ”Ήfail2ban, UFW, SSH key-only on a non-standard port πŸ”Ή107 automated tests covering auth, CRUD, XSS, and security headers

It is not just a portfolio anymore. It is a live project I will keep building on as I work toward running everything from my own home lab.

Check it out: www.charles-thomas.dev