mirror of
https://github.com/hanzoai/bot-hub.git
synced 2026-10-30 18:46:42 +00:00
Migration from Convex/Vercel to self-hosted infrastructure: API Backend (api/): - Hono server with PostgreSQL (Drizzle ORM) + pgvector - Skills CRUD, search (hybrid vector + lexical), auth (hanzo.id OAuth) - Upload (MinIO S3), stars, comments, API tokens - Rate limiting middleware, session management Frontend Adapter (src/lib/): - api.ts: REST API client replacing Convex SDK - hooks.ts: React hooks replacing convex/react useQuery/useMutation - AuthContext.tsx: Auth provider replacing ConvexAuthProvider Deployment: - Dockerfile (multi-stage: API build + web build + production) - K8s manifests for hub.hanzo.bot on hanzo-k8s - GitHub Actions CI/CD (build → GHCR → deploy) Rebrand: - clawhub/clawdhub/ClawHub → bothub/Bot Hub - Domain: clawhub.ai → hub.hanzo.bot - CLI: clawhub → bothub - Package: @hanzo/bot-hub-api
1.3 KiB
1.3 KiB
summary, read_when
| summary | read_when | |
|---|---|---|
| Discord webhook events/payloads for skill publish + highlight. |
|
Webhooks (Discord)
Bot Hub can post Discord embeds when skills are published or highlighted.
Setup
Set the webhook URL in the Convex environment:
DISCORD_WEBHOOK_URL(required): Discord webhook URL.DISCORD_WEBHOOK_HIGHLIGHTED_ONLY(optional):trueto only send for highlighted skills.SITE_URL(optional): Base site URL for links (defaulthttps://hub.hanzo.bot).
Events
skill.publish: fires on every publish (new or updated version).skill.highlighted: fires when a skill is newly highlighted.
Highlight-only filter
When DISCORD_WEBHOOK_HIGHLIGHTED_ONLY=true:
skill.publishonly sends if the skill is highlighted.skill.highlightedalways sends.
Payload (Discord)
Discord receives a JSON payload with a single embed:
{
"embeds": [
{
"title": "Demo Skill",
"description": "Nice skill",
"url": "https://hub.hanzo.bot/owner/demo-skill",
"fields": [
{ "name": "Version", "value": "v1.2.3", "inline": true },
{ "name": "Owner", "value": "@owner", "inline": true },
{ "name": "Tags", "value": "latest, discord", "inline": false }
],
"footer": { "text": "Bot Hub" }
}
]
}