-
Notifications
You must be signed in to change notification settings - Fork 1
Repository Structure
swayam25 edited this page Aug 26, 2026
·
4 revisions
This is a Turborepo monorepo managed with pnpm workspaces. Two apps and a handful of shared packages.
flowchart TD
subgraph apps["apps/"]
web["web<br/><i>SvelteKit 5 + Tailwind 4</i>"]
server["server<br/><i>Hono + Drizzle</i>"]
end
subgraph packages["packages/"]
shared["auth-shared<br/><i>(better-auth types)</i>"]
cocApi["clashofclans-api<br/><i>(hand written)</i>"]
cocClient["clashofclans-client<br/><i>(kubb generated)</i>"]
ckClient["clashking-client<br/><i>(kubb generated, unused)</i>"]
configs["eslint-config<br/>prettier-config<br/>typescript-config"]
end
subgraph infra["docker"]
db[("Postgres 18")]
redis[("Redis 8")]
minio[("MinIO")]
end
web -->|HTTP| server
web --> cocClient
web --> shared
server --> shared
server --> cocApi
web -.->|tooling| configs
server -.->|tooling| configs
server --> db
server --> redis
server --> minio
| Path | What it is |
|---|---|
apps/web |
SvelteKit 5 frontend, also packaged for Android and iOS through Capacitor |
apps/server |
Hono API, Drizzle ORM, better-auth, OpenAPI docs served by Scalar. Also runs the CWL ping job in-process (superadmin-configurable from /admin/settings) |
packages/auth-shared |
Auth types and access control shared by both apps |
packages/clashofclans-api |
Hand written typed wrapper around the Clash of Clans API, with Redis caching. Used by server
|
packages/clashofclans-client |
Typed client for this repo's own API, generated from its OpenAPI spec by kubb, consumed by web
|
packages/clashking-client (unused) |
Typed client generated from ClashKing's OpenAPI spec by kubb, not yet consumed anywhere |
packages/*-config |
Shared eslint, prettier and tsconfig presets |
Two things in the repo are generated and must never be hand-edited:
| File | Generated by |
|---|---|
apps/server/src/lib/db/schema/ba-auth.ts |
pnpm --filter server ba:generate |
packages/*-client/** |
kubb from an OpenAPI spec |