Portfolio Site (Flask)

Portfolio Site (Flask)

PythonFlaskHTML5CSS3JavaScript

This was my first real personal site — a Flask app with Jinja2 templating, custom CSS, and a working contact form. It served as both a portfolio and a learning project for deploying Python web apps.

Stack

Flask handled routing and template rendering. Jinja2 made it straightforward to keep the layout consistent across pages without duplicating HTML. The contact form used Flask-Mail with SMTP to forward messages directly to my inbox.

Styling was hand-rolled CSS with some vanilla JavaScript for the navigation and scroll behavior. No frameworks — just the basics.

What I Learned

  • Deploying a Python web app to Render from scratch
  • Managing environment variables and secrets in a hosted environment
  • Setting up Flask-Mail with proper SMTP configuration (harder than it sounds)
  • CSS custom properties for a consistent design system without a utility framework

Why I Rebuilt It

Flask worked, but content updates required code changes and redeployments. As the site grew, the coupling between templates and content became friction. The Next.js rebuild separates those concerns cleanly.