// the find
jenova-marie/agora-server
Self-hosted open-source backend for community & social apps (posts, comments, reactions, follows, spaces, realtime chat, semantic search). API-compatible with the Replyke SDK. Built on Supabase.
Agora is a self-hosted backend that reimplements the closed-source Replyke social/community API, built on Hono + Supabase + Drizzle ORM. It covers the full feature surface: posts, threaded comments, reactions, follows, spaces, realtime chat, semantic search, moderation, and a conflict-resolution 'stewardship' layer. Target audience is developers who want to run Replyke-compatible infrastructure without handing data to a vendor.
- Integration test coverage is genuinely wide — 40+ test files covering auth token rotation, realtime socket behavior, space access races, secure chat flow, and stewardship cases. That's unusual for a solo early-stage backend.
- The governance model (moderation queues + AI auto-moderation + stewardship caseload with mediation channels) is built into the schema and enforced at the server boundary, not bolted on later. The threat model and design docs (STEWARDSHIP.md, SECURE_CHAT.md, MANIFEST.md) are unusually detailed.
- Feed ranking is pluggable with seven named algorithms (wilson, bayesian, decay, gravity, etc.) tunable per-project and per-request, maintained via Postgres triggers rather than recomputed on read — that's a real performance decision, not a toy.
- The AGPL-3.0 licensing choice is deliberate and correctly applied: server is AGPL, shared wire contract package is Apache-2.0 so client SDK authors aren't infected. The DCO-over-CLA stance means contributors keep their rights.
- 3 stars and 0 forks with the README claiming 'feature-complete' is a mismatch — there's no production track record, no known deployments, and the MLS/E2EE secure chat explicitly defers the actual crypto implementation ('ts-mls/OpenMLS core to come'), so that headline feature is currently a mock seam.
- Hard dependency on Supabase for Auth and Storage means you can't fully self-host without Supabase's cloud (or running the full Supabase stack locally), which partially undermines the 'own your data' pitch. The README acknowledges this but doesn't document running fully air-gapped.
- The migration history has auto-generated names like '0018_lucky_lockheed' and '0024_curious_tattoo' mixed with meaningful ones, and there are gaps in the meta snapshots (0027–0028 missing), suggesting migration hygiene has been inconsistent.
- The 'ops backlog' admission in the Status section — no deployment guides yet — means anyone adopting this outside Docker Compose is on their own. With 38 migrations, a Neo4j reference in the codebase (neo4j.ts), optional Redis, pgmq, pgvector, and PostGIS all in play, the operational surface is substantial and underdocumented.