Sean DeSmet

Full stack projects

I decided to build Budget Buddy because I was looking to expand my understanding of SQL, Python, and database systems. Rather than focusing on courses I decided to build something real — that is where Budget Buddy came along. The project grew from a simple transaction tracker into a full production web application with a custom domain, HTTPS, and automated deployments.

Features
Transaction tracking
Recurring transactions
Analytics dashboard
Budget vs actual
CSV export
Dark mode
Infrastructure
DigitalOcean Droplet
Nginx reverse proxy
Let's Encrypt SSL
Docker + Gunicorn
Automated deploys
Rate limiting
Tech stack
Python Flask PostgreSQL Docker Gunicorn Nginx DigitalOcean Let's Encrypt Chart.js

With Budget Buddy and the status monitor already running on my Droplet, I wanted to get more reps deploying and operating self-hosted services. Mealie scratched a real itch — a single place for our recipes, weekly meal plans, and shopping lists — so I deployed it on the same box behind Nginx and SSL, backed by its own PostgreSQL database rather than the default SQLite.

Features
Recipe import from URL
Meal-planning calendar
Auto shopping lists
Recipe organization
Multi-user households
Infrastructure
DigitalOcean Droplet
Nginx reverse proxy
Let's Encrypt SSL
Docker Compose
PostgreSQL database
Tech stack
Mealie FastAPI Vue PostgreSQL Docker Nginx DigitalOcean Let's Encrypt

After deploying Budget Buddy to production I wanted real visibility into whether my services were actually up. Rather than relying on a third-party SaaS, I self-hosted Uptime Kuma on the same DigitalOcean Droplet — adding a public status page, per-service response-time graphs, and push notifications when something goes down.

Features
HTTP / ping monitors
Response-time history
Public status page
Push alert notifications
SSL-expiry monitoring
Infrastructure
DigitalOcean Droplet
Nginx reverse proxy
Let's Encrypt SSL
Docker Compose
External backstop pinger
Tech stack
Uptime Kuma Node.js Docker Nginx DigitalOcean Let's Encrypt