Projectstructuur
Een Bun + Turbo-monorepo: twee Cloudflare Workers-apps en de gedeelde packages die ze verbinden.
text
Apps
apps/api: de Hono-API-worker. Routes staan insrc/index.ts; businesslogica wordt als oRPC-procedures aangeboden insrc/orpc. Datatoegang gebruikt Drizzle op D1.apps/web: de TanStack Start-webapp, ook een Worker. Bestandsgebaseerde routes insrc/routesrenderen server-side en hydrateren op de client.
Packages
@my-app/backend-contract: het oRPC-contract. Het declareert in- en uitvoer van procedures met Zod, en beide apps hangen ervan af, dus een wijziging aan het contract is aan beide kanten een compileerfout tot het is opgelost.@my-app/ui: gedeelde Base UI-componenten, de globale stylesheet en jeConfig.brand-instellingen.@my-app/transactional: react-email-templates, door de e-mailmodule naar HTML gerenderd.
Packages vallen onder de naamruimte van je projectnaam. Importeer ze met de alias, bijv. @my-app/ui/components/ui/button.
De oRPC-contractflow
Een API-endpoint toevoegen raakt drie plekken, allemaal volledig getypeerd:
- Declareer de procedure in
packages/backend-contract(naam, Zod in-/uitvoer). - Implementeer hem in
apps/api/src/orpc. - Roep hem aan vanuit de webapp via de getypeerde
backend-client, inclusief autocomplete en typecontrole.
Welke mappen bestaan hangt af van de gekozen modules, zie Modules.