Projektstruktur
Ein Bun-+-Turbo-Monorepo: zwei Cloudflare-Workers-Apps und die gemeinsamen Pakete, die sie verbinden.
text
Apps
apps/api: der Hono-API-Worker. Routen liegen insrc/index.ts; die Geschäftslogik wird als oRPC-Prozeduren insrc/orpcbereitgestellt. Der Datenzugriff nutzt Drizzle auf D1.apps/web: die TanStack-Start-Web-App, ebenfalls ein Worker. Dateibasierte Routen insrc/routesrendern serverseitig und hydrieren auf dem Client.
Pakete
@my-app/backend-contract: der oRPC-Vertrag. Er deklariert Ein- und Ausgaben der Prozeduren mit Zod, und beide Apps hängen davon ab, eine Vertragsänderung ist also auf beiden Seiten ein Compile-Fehler, bis sie behoben ist.@my-app/ui: gemeinsame Base-UI-Komponenten, das globale Stylesheet und deineConfig.brand-Einstellungen.@my-app/transactional: react-email-Vorlagen, vom E-Mail-Modul zu HTML gerendert.
Pakete liegen im Namensraum deines Projektnamens. Importiere sie über den Alias, z. B. @my-app/ui/components/ui/button.
Der oRPC-Vertragsablauf
Ein API-Endpunkt hinzuzufügen berührt drei Stellen, alle voll typisiert:
- Deklariere die Prozedur in
packages/backend-contract(Name, Zod-Ein-/Ausgabe). - Implementiere sie in
apps/api/src/orpc. - Rufe sie aus der Web-App über den typisierten
backend-Client auf, inklusive Autovervollständigung und Typprüfung.
Welche Ordner existieren, hängt von den gewählten Modulen ab, siehe Module.