vibe dex
// products + experiments built with vibe coding.
← all

how it works

One Zod schema in the core package is the single source of truth. The database tables, the HTTP API responses, the MCP tool schemas, and every client parse all derive from it, so a field is declared once and flows everywhere.

  Zod schema (core)  ── the one source of truth
        │
        ├─▶ Drizzle tables  (libSQL local / D1 prod)
        ├─▶ HTTP API        (Hono /api/*)
        ├─▶ MCP tools        (/mcp, Streamable-HTTP)
        └─▶ clients          (web · CLI · TUI)

  detail pages + profiles assemble themselves:
    entry.repo README ─▶ cached sections ─▶ detail
    builder handle    ─▶ cached GitHub signal ─▶ profile

Reads are fast because anything fetched from GitHub (repo metadata, README sections, profile activity) is cached, not fetched per request.