Why GoChatHub: PostgreSQL, REST, and push without gatekeepers
GoChatHub is a chat server in Go built around three constraints.
PostgreSQL is the only dependency. No Redis, no Kafka, no RabbitMQ, no
microservices. Messages, rooms, and accounts live in tables you administer.
Backups are pg_dump, and nothing in the server needs to be drained before
you take it down.
REST is the protocol. WebSocket is only a delivery mechanism for live receipts and typing state. Clients resynchronize over REST after any reconnect, so the API contract — documented in OpenAPI — is the whole surface a new client needs. The web client and the Android client both speak nothing but that contract.
Push never carries content. Android notifications ride UnifiedPush through a self-hosted ntfy server, and browsers get RFC 8291 encrypted Web Push payloads. Only identifiers leave your server — message content stays between your clients and your PostgreSQL.
You can try it by installing the server — one binary and a connection string.