← Back to Home

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.

Internet -> Cloudflare -> Caddy (443/80) -> Django/Gunicorn (8000) -> PostgreSQL | | timeshare.squishygoose.dev Redis (6379) (Flutter web + API proxy) | | Django-Q Worker v git.squishygoose.dev -> Forgejo (Git hosting)

Tech Stack