How raine-works/rainestack works
RaineStack is a full-stack TypeScript monorepo starter: a React web shell calls a typed oRPC API served by Bun, with PostgreSQL/Prisma-backed data and authentication. The main user workflow is browser entry → routed home experience, while application API requests pass through the server to domain routes and database operations. The graph also preserves actor-audited transactions, database change notifications, shared UI, and API-client infrastructure. Relationships are limited to those shown in excerpts, SOURCE INDEX references, or README statements; unsampled subsystems are not expanded.
Main entry points: auth.ts Authentication routes · src/index.ts Prisma database · main.tsx Web entry · src/index.ts Bun HTTP server
Components 18
Web application
- Web entry
packages/web/src/main.tsx - App routing
packages/web/src/app.tsx - Home page
packages/web/src/routes/home.tsx - Web API client
packages/web/src/lib/api.ts - UI library
packages/ui/src/components/ui - Query provider
packages/api/src/lib/query-provider.tsx
API and server
- Typed API client
packages/api/src/index.ts - Router type bridge
packages/api/src/router.ts - Bun HTTP server
packages/server/src/index.ts
Authentication and data
- JWT middleware
packages/server/src/lib/auth.ts - Authentication routes
packages/server/src/routes/auth.ts - Auth data access
packages/server/src/data/passkeys.ts - Domain data
packages/server/src/data
Database infrastructure
- Prisma database
packages/database/src/index.ts - Actor transactions
packages/database/src/actor.ts - Change listener
packages/database/src/listener.ts
Other components
- Browser visitor
- PostgreSQL
Connections 23
- Browser visitor → Web entry: opens app
packages/web/src/main.tsx - Web entry → App routing: mounts
packages/web/src/main.tsx - Web entry → Query provider: wraps with
packages/web/src/main.tsx - Web entry → UI library: renders toaster
packages/web/src/main.tsx - App routing → Home page: routes to
packages/web/src/app.tsx - Home page → UI library: renders
packages/web/src/routes/home.tsx - Web API client → Typed API client: uses
packages/web/src/lib/api.ts - Query provider → Typed API client: provides queries
- Typed API client → Router type bridge: types against
packages/api/src/router.ts - Router type bridge → Bun HTTP server: exports router type
packages/api/src/router.ts - Bun HTTP server → Authentication routes: dispatches API
packages/server/src/index.ts - Bun HTTP server → Prisma database: checks database
packages/server/src/index.ts - Bun HTTP server → Change listener: connects listener
packages/server/src/index.ts - Authentication routes → JWT middleware: uses auth
- Authentication routes → Auth data access: calls passkey data
packages/server/src/routes/auth.ts - Authentication routes → Prisma database: queries accounts
packages/server/src/routes/auth.ts - Authentication routes → Domain data: uses account data
packages/server/src/routes/auth.ts - Authentication routes → Actor transactions: tracks mutations
packages/server/src/routes/auth.ts - Auth data access → Actor transactions: wraps writes
packages/server/src/data/passkeys.ts - Auth data access → Prisma database: reads and writes
packages/server/src/data/passkeys.ts - Actor transactions → Prisma database: runs transactions
- Prisma database → PostgreSQL: persists data
packages/database/src/index.ts - Change listener → PostgreSQL: listens for changes
packages/database/src/listener.ts