Proof-of-Concept Apps

Labs

Live proof-of-concept apps running on the same EC2 instance that serves this site. Each lab is a small, self-contained demo of a different piece of the stack — infrastructure automation, data pipelines, and observability.

Platform Architecture

Everything on one EC2 instance

nginx fronts three Next.js + static surfaces, systemd manages the background services, Docker hosts the data stores, and the whole VM is reproducible from an Ansible playbook.

Internet
Visitors
GitHub Actions
push to main → SSH deploy
HTTPS :443 (Let's Encrypt)
nginx reverse proxy
TLS termination · routing · single entry point
:443
routes /, /app, /majors
AWS EC2 · Ubuntu VM
Web Surfaces (routed by nginx)
Static Portfolio
/public · HTML / CSS / JS
Next.js App
/app · labs, dashboard
:3001
Golf Majors Tracker
/majors · separate Next.js
:3003
systemd Services
nextjs
:3001
majors
:3003
ansible-runner
Express API
:3002
odds-poller
background fetcher
Docker Compose (localhost-only)
PostgreSQL 16
:5432
Prometheus
:9090
Node Exporter
:9100
orchestrates / reproduces
Ansible IaC
ansible/playbooks/rebuild.yml · reproduces the entire VM

The Labs

Three live demos

Each card links to a working app — infrastructure automation, a data tracker, and a real-time monitoring dashboard. Click any card to explore.

Infrastructure as Code

Ansible Environment Rebuild

One-click infrastructure rebuild triggered from the browser. Runs a full Ansible playbook against the live EC2 instance and streams log output in real time.

AnsibleNode/Express RunnersystemdServer-Sent Events
Explore →

Data + Parsing

Golf Majors Tracker

Search any professional golfer and view their complete major championship career in a color-coded timeline grid. Live data pulled from Wikipedia with in-memory caching.

Next.jsCheerioWikipedia API
Explore →

Observability

System Monitoring

Real-time metrics dashboard for the EC2 instance running this site. CPU, memory, disk, network, and system load — scraped from Prometheus with Node Exporter.

PrometheusNode ExporterRecharts
Explore →

Architecture Note

Single AWS EC2 instance → nginx reverse proxy → Next.js app + background services. Everything is self-hosted, managed with Ansible, and reproducible from the repo.

Back to Portfolio