Skip to main content

Overview

Ekko-OS is a personal-platform monorepo: a single repo that hosts a Go API, a Convex-backed Next.js web app, an Expo/iOS app, a Discord bot, a CLI, an MCP server, browser extensions, a TV app, and the libraries that glue them together. Every surface targets one person (the author and immediate household), so design decisions favor cohesion over generality.

Principles

  • One source of truth per concern. External integrations live in Go; user data lives in Convex; UI primitives live in @ekko/ui; cross-language types live in @ekko/core.
  • Contract-first across runtimes. When two services exchange typed data they share a sample + schema before either side implements.
  • Surfaces, not silos. Mobile, web, TV, Discord, and the MCP read from the same data model wherever possible.
  • Minimal infra. No microservice sprawl; two Go services, one Convex deployment, one MCP server, one Discord process.

Tech at a glance

  • Language: TypeScript everywhere on the JS side; Go for the API surface.
  • Runtime: Bun for JS package management and most app runtime; Node for Docusaurus only.
  • Data: Convex for primary state; PostgreSQL inside ekkolore-api for book metadata.
  • Auth: Clerk on the web side, JWTs propagated to Go services.
  • Logging: @ekko/logging (packages/logging/) — service + scope + snake_case attrs + request_id correlation.

Where to go next