Personal portfolio website for Matt McCarthy, a full-stack web developer based in Chicago, IL.
Built with Flask backend, HTML5, CSS3, and Bootstrap. Served via Nginx in a Docker container.
- Frontend: HTML5, CSS3, Bootstrap 5.3, Bootstrap Icons, Google Fonts
- Backend: Python Flask with Gunicorn
- Server: Nginx reverse proxy
- Container: Docker (multi-stage builds)
- Registry: GitHub Container Registry (ghcr.io)
- CI/CD: GitHub Actions (automated image builds)
- Infrastructure: AWS Lambda, HTTP API Gateway, CloudWatch (TODO)
- IaC: AWS SAM CloudFormation (TODO)
❯ tree . -a --gitignore -I .git
.
├── .github
│ └── workflows
│ ├── build-release-image.yml # Automated image builds
│ └── opencode.yml # Agent configuration
├── .gitignore
├── app
│ ├── app.py # Flask app with CSP nonce generation
│ ├── requirements.txt # Python dependencies
│ ├── static # Scripts, stylesheets, and assets
│ │ ├── color-scheme.js
│ │ ├── favicon.ico # Proprietary asset (see LICENSE.md)
│ │ ├── headshot.jpg # Proprietary asset (see LICENSE.md)
│ │ ├── style.css
│ │ ├── tooltip.js
│ │ ├── triangles_dark.svg # Proprietary asset (see LICENSE.md)
│ │ └── triangles_light.svg # Proprietary asset (see LICENSE.md)
│ └── templates # Jinja2 templates
│ └── index.html # Proprietary content (see LICENSE.md)
├── docs
│ └── actions.md
├── docker
│ ├── .env
│ │ ├── development
│ │ │ └── www.env # Development app settings
│ │ └── staging
│ │ └── www.env # Staging app settings
│ ├── build-image.sh # Local build script
│ ├── compose.dev.yml # Development compose configuration
│ └── compose.yml # Production compose configuration
├── Dockerfile # Multi-stage build for Flask app
├── LICENSE.md
├── nginx
│ └── conf.d # Configurations for domains & redirects
│ ├── mattmccarthy.io.conf
│ ├── mattmccarthy.local.conf
│ ├── mattmccarthy.net.conf
│ ├── mattmccarthy.org.conf
│ ├── mccarthycode.com.conf
│ └── redirect-http-to-https.conf
└── README.md
13 directories, 27 files
- Docker and Docker Compose
- Python 3.11+ (for testing and development)
Ensure you add the following line to /etc/hosts (or C:\Windows\System32\drivers\etc\hosts on Windows):
127.0.0.1 mattmccarthy.local www.mattmccarthy.local
Clone the repository and run Docker Compose.
git clone https://github.com/mccarthycode/mmio.git
cd mmio
docker compose -f docker/compose.dev.yml upThe site will be available at https://mattmccarthy.local.
To run in the background:
docker compose -f docker/compose.dev.yml up -dTo stop:
docker compose -f docker/compose.dev.yml downSee docs/actions.md.
This repository uses a dual license. See LICENSE.md for full terms.
app/static/favicon.icoapp/static/headshot.jpgapp/static/triangles_dark.svgapp/static/triangles_light.svgapp/templates/index.html
Copyright © 2026 Matt McCarthy. All rights reserved.
All other files
Copyright © 2026 Matt McCarthy. MIT license.