// the find
merlinfuchs/embed-generator
Create rich embed messages for Discord (previously discord.club)
A Go backend and TypeScript frontend for building Discord rich embeds and full messages, then posting them through webhooks or a bot. It powers message.style, and it can be self-hosted as a single binary, though the README itself steers most people to the hosted version.
The frontend is embedded into the Go binary behind build tags, so a self-hosted deploy is one file plus Postgres and an S3-compatible store. Sharding is deterministic: instance i of n runs every nth shard, and instance 0 owns the work that happens once per deployment, which splits a bot across machines without a coordinator. The tests target the parts that usually break, with dedicated tests for schema import, allowed mentions, markdown, webhook URL parsing and templates on the TypeScript side, and access checks, action parsing and template context on the Go side.
The self-host path is heavy for what is essentially a form: Postgres, an S3-compatible store for image uploads, a Discord token, and Go 1.25 plus pnpm if you build from source. The docker-compose example is written to be copied, and it ships with Postgres set to trust auth and a MinIO root password of 1234567890, which is fine on localhost and a bad default anywhere else. Configuration comes from embedg.toml, EMBEDG_ environment variables with double-underscore nesting, a --config flag, and a deprecated config.yaml that still loads, so a value can come from several places and the precedence is easy to get wrong. The README also never says which Discord gateway intents or bot permissions are required, so you will end up reading server code to find out.