// the find
songquanpeng/message-pusher
搭建专属于你的消息推送服务,支持多种消息推送方式,支持 Markdown,基于 Golang 仅单可执行文件,开箱即用
message-pusher is a self-hosted notification relay that forwards messages to 15+ channels (WeChat, Telegram, Discord, Bark, DingTalk, email, etc.) via a single HTTP endpoint. It's written in Go, ships as one binary with SQLite by default, and is aimed at developers who want a personal Zapier-for-alerts without depending on a SaaS middleman.
The channel abstraction is genuinely well-designed — adding a new push target means implementing one interface in a single file, and the group channel that fans out to multiple targets simultaneously is a clean multiplexer. The single binary + SQLite default makes self-hosting trivially fast; you're running in under two minutes. The webhook reverse-adapter (accepting inbound webhooks from third-party services and reformatting them before forwarding) is an underappreciated feature that saves you from writing glue code. The API compatibility shim with Server酱 means you can swap it in without touching existing scripts.
The README is almost entirely in Chinese with no English translation, which effectively walls off a large chunk of potential users even though the actual API and code are straightforward. Database migration is a manual, error-prone process — the v0.3 to v0.4 guide requires running a Python script after the binary runs, with a warning that column order matters; that's the kind of thing that corrupts production data quietly. There's no delivery receipt or retry visibility surfaced to the end user beyond async UUID polling — if a push fails silently, you won't know unless you're watching logs. The frontend is React built on Create React App, which is effectively unmaintained; that tech debt will bite anyone trying to extend the UI.