Jerbix

Project Structure

What each directory owns, and where to make changes

Last updated November 3, 2026


This page is a map. When you cannot find something, look here first, then read the code.

Directory map

PathWhat it owns
src/routes/File routes; {-$locale} prefix is optional, _layout/ groups by layout
src/routes/api/API endpoints: contact/, auth/, payment/, newsletter/, email/, webhooks/
src/config/Site config: website.ts (switches), products.ts (plans), navbar-config.ts, footer-config.ts, navigation.ts, settings.ts, social-config.ts
src/components/ui/shadcn (Base UI) upstream originals, never edited locally
src/components/layout/Logo, locale switcher, menu items, user menu
src/components/marketing/Marketing page assembly: LandingPage / Navbar / Footer / MarketingLayout
src/components/sections/Reusable content blocks: Hero / Features / Pricing / FAQ…
src/components/docs/Docs layout, sidebar, search, table of contents
src/components/dashboard/Dashboard shell and user card
src/components/auth/Form pieces: field adapter, submit button, hydration hook
src/auth/Auth config, sessions, email verification
src/db/Drizzle schema and migrations
src/env/Two-layer env validation: public.ts and server.ts
src/lib/Pure logic: locale, SEO, module gates, rate limiting, theme parsing
src/locale/Paraglide output and locale middleware
src/cache/ src/storage/ src/mail/ src/newsletter/ src/notification/ src/payment/Service modules: provider registry plus an abstract interface
src/styles/globals.css (design tokens), mdx.css
src/hooks/Hooks reused across pages
src/server.ts / src/router.tsxServer entry (CSP nonce, env injection) / router instance

Repository root:

PathWhat it owns
content/Docs / blog / changelog / legal; Chinese copies get a .zh suffix
messages/UI copy in zh.json / en.json
public/Static assets, including public/docs/screenshots/
scripts/Build and validation scripts; scripts/init/ is the setup wizard
tests/Unit / component / workers tests
e2e/Playwright specs

Where to change things

Want to changeGo to
Site name, logo, module and feature switchessrc/config/website.ts
Plans and purchase optionssrc/config/products.ts
Navbar and footer linkssrc/config/navbar-config.ts, src/config/footer-config.ts
Menu item shapes and visibility rulessrc/config/navigation.ts
Dashboard sectionssrc/config/settings.ts
Social linkssrc/config/social-config.ts
Button labels, headings, hintsmessages/zh.json, messages/en.json
Home / about / pricing copyThe route component, e.g. src/routes/{-$locale}/index.tsx
Colors, fonts, radii, shadowssrc/styles/globals.css
Docs contentcontent/docs/*.md
Database tablesrc/db/schema.ts, then pnpm db:generate
Add a pageCreate a file under src/routes/; the router picks it up
Add an API routesrc/routes/api/<name>/$.ts
Add a UI controlpnpm dlx shadcn@latest add <component> -y, which lands in src/components/ui/
Add a service moduleMirror src/mail/: types.ts + provider/ + index.ts

Generated files

src/routeTree.gen.ts (router plugin), src/locale/paraglide/** (pnpm locale:compile), and .content-collections/generated/** (pnpm content:build) are rewritten at build time, so manual edits are overwritten.

See Design System for colors and fonts, and Form Conventions for new forms.