# Chirp — Fediverse Microblogging PWA A custom Progressive Web App frontend for the Fediverse, powered by GoToSocial. **Instance:** chirp.myfacefeed.com ## Architecture ``` Browser / Mobile ↓ HTTPS Chirp Go Web Server (this repo) ↓ Mastodon-compatible API GoToSocial (ActivityPub backend) ↓ PostgreSQL + MinIO ``` ## Stack | Layer | Technology | |-------|-----------| | Backend | Go 1.22, GoToSocial v0.21.2 | | Auth | Zitadel (OIDC) | | Storage | PostgreSQL 16, Redis, MinIO | | Search | Meilisearch | | Frontend | Vanilla JS PWA (no framework) | | Deploy | Nginx + systemd on 38.242.152.38 | ## Project Layout ``` cmd/server/ — main entry point internal/ config/ — env-based config struct gts/ — GoToSocial API client proxy/ — API proxy (/api/v1/* passthrough) oauth/ — Zitadel OIDC integration db/ — chirp schema CRUD (bookmarks, lists, etc.) ws/ — WebSocket hub (GTS stream bridge) scheduler/ — post scheduler (Redis sorted set) search/ — Meilisearch client web/ templates/ — Go HTML templates static/ — CSS, JS, icons sw/ — service worker deploy/ k8s/ — Kubernetes manifests (future) nginx/ — nginx config tests/ integration/ — integration tests e2e/ — end-to-end tests ``` ## Design Spec Full technical specification: [chirp-design-spec.md](chirp-design-spec.md) ## Infrastructure Notes - GoToSocial DB: PostgreSQL `gotosocial` (127.0.0.1:5432) - Chirp schema: PostgreSQL `chirp` (8 custom tables) - Redis: 127.0.0.1:6379 (sessions, queues, pub/sub) - Meilisearch: 127.0.0.1:7700 (search indexes) - MinIO: s3.myfacefeed.com / chirp-media bucket ## Status Phase 1 (Infrastructure) — complete as of 2026-05-31 Phase 2 (Go Server Core) — in progress Phase 3+ (PWA) — assigned to Claude3