Architecture
How apps/* and packages/* fit together.
Layout
apps/
web/ Public marketing site (indexed, SEO-tracked)
smm/ Internal social content pipeline
seo/ Internal SEO performance dashboard
dir/ Internal directory of links, tools, and projects
doc/ Internal documentation (this app)
packages/
ui/ @ketryon/ui — shared components, no build step
sound/ @ketryon/sound — shared interaction-sound config
Package conventions
Both packages/* entries follow the same shape — main/types
pointing straight at ./src/index.ts, no build step, consumed by
each app's next.config.ts via transpilePackages:
{
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": { ".": "./src/index.ts" }
}
Data storage
Not every app needs a database. smm and dir are backed by Neon
Postgres via Drizzle ORM; seo reads from Google Search Console/GA4
APIs directly; this app reads markdown files straight off disk — no
database at all.