Personal portfolio site built with Flask + Jinja2 and a modern front-end theme. It includes a portfolio section, blog UI, and two working email-backed forms.
- Flask-friendly links: templates use
url_for(...)for internal navigation and static assets. - Portfolio modals that actually navigate: “View Project” links work reliably even with slider/modal scripts.
- Email-backed forms:
- Blog “Leave a Reply” sends an email notification (AJAX POST).
- Contact form sends an email (AJAX POST).
- Production-ready entrypoint: includes
wsgi.pyfor WSGI servers.
- Python / Flask
- Jinja2 templates
- Bootstrap + jQuery
- Slick carousel
- SMTP via Python
smtplib
app.py— local/dev entrypointwsgi.py— WSGI entrypoint (application)homeViews.py— routes + SMTP email logictemplates/— site templates + partialsstatic/— CSS/JS/images/fonts
This repo includes VS Code tasks for setting up a venv and starting the app.
GlobeBank is a PHP app, but this repo will run it from the Flask site by automatically starting a local PHP server and reverse-proxying it.
- Open
http://2026fcjamison.localhost:5000/projects/2007GlobeBank/ - Requires PHP installed (recommended:
winget install -e --id PHP.PHP.8.4)
Optional (manual PHP server):
- Run the VS Code task
PHP: Run GlobeBank (dev server :8007) - Open
http://2026fcjamison.localhost:8007/
Or run the combined task Dev: Flask + GlobeBank PHP + Open.
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe app.pyThen open the URL printed in the console (default is http://127.0.0.1:5000/).
HOST(default:127.0.0.1)PORT(default:5000)FLASK_DEBUG(1/0)
See SMTP_SETUP.md for the full list and examples. The app uses SMTP for:
POST /leave-replyPOST /contact
wsgi.pyis provided for production WSGI servers.- If you deploy behind Apache as a reverse proxy, the upstream WSGI server (e.g., Waitress) typically listens on localhost.
If you’re using the included production notes, see PRODUCTION_SETUP.md.