squishygoose.dev
Developer Portfolio & API Platform
A self-hosted developer website built with Django, serving as both a portfolio for personal projects and a production API backend for apps like Timeshare.
About
squishygoose.dev is a self-hosted developer platform that serves dual purposes: a portfolio website showcasing personal projects, and a production API backend powering apps like Timeshare. Built with Django 5 and Django REST Framework, it provides secure, documented APIs with OpenAPI/Swagger support.
The site uses HTMX for lightweight frontend interactivity without heavy JavaScript frameworks. Everything runs in Docker containers orchestrated with Docker Compose, with Caddy handling automatic HTTPS and reverse proxying.
Key Features
REST API Backend
Django REST Framework APIs with OpenAPI documentation. Powers the Timeshare calendar app with full CRUD operations.
Self-Hosted Git
Forgejo provides repository hosting at git.squishygoose.dev with SSO integration for seamless authentication.
Dual Authentication
Session-based auth for the web UI and API key authentication for service-to-service calls.
Background Tasks
Django-Q2 handles async tasks like sending emails, with Redis as the message broker.
Self-Hosted Email
docker-mailserver for transactional emails including verification, password resets, and notifications.
HTMX Frontend
Lightweight interactivity without SPAs. Server-rendered HTML with progressive enhancement.
Architecture
The site runs as a set of Docker containers behind Cloudflare. Caddy handles TLS termination and reverse proxying to Gunicorn.
Tech Stack
- Django 5 - Web framework with batteries included
- Django REST Framework - API toolkit with serializers and viewsets
- HTMX - HTML-over-the-wire for interactive UIs
- PostgreSQL - Primary database
- Redis - Sessions, caching, and task queue backend
- Django-Q2 - Background task processing
- Caddy - Reverse proxy with automatic HTTPS
- Docker Compose - Container orchestration
- Forgejo - Self-hosted Git repository hosting
- docker-mailserver - Self-hosted transactional email