Trovella Wiki

API Layer

tRPC v11 setup, procedure chain, router patterns, error handling, and client configuration.

The API layer uses tRPC v11 for type-safe internal APIs. All server-side business logic runs through tRPC procedures, which form a middleware chain that progressively adds session authentication, tenant-scoped database access (via RLS), and CASL authorization to the request context.

How a Request Flows

React component (trpc.widget.list.useQuery())
  |
  v
httpBatchLink --> POST /api/trpc/widget.list
  |
  v
Next.js route handler (apps/web/src/app/api/trpc/[trpc]/route.ts)
  |
  v
fetchRequestHandler --> createContext(headers)
  |   Session lookup, logger creation
  v
Procedure middleware chain:
  1. publicProcedure  -- request logging (path, type, duration)
  2. protectedProcedure -- session validated (ctx.session guaranteed)
  3. tenantProcedure  -- withTenantContext called (ctx.db = RLS transaction)
  4. authorizedProcedure -- member lookup, CASL ability, AI helper
       |
       v
     Router handler (business logic)
       |
       v
     Response --> TanStack Query cache --> React component re-render

Key Files

FilePurpose
packages/api/src/trpc.tsProcedure definitions (public, protected, tenant, authorized)
packages/api/src/context.tsContext creation from request headers
packages/api/src/router.tsRoot appRouter -- merges all feature routers
packages/api/src/routers/Feature routers (one file per domain entity)
packages/api/src/index.tsPackage barrel -- exports appRouter, createContext, procedures
apps/web/src/lib/trpc-react.tstRPC + TanStack Query client for React components
apps/web/src/components/providers.tsxQueryClient + tRPC provider wrapper
apps/web/src/app/api/trpc/[trpc]/route.tsNext.js API route handler

Current Routers

The appRouter in packages/api/src/router.ts merges these routers:

RouterProcedureDomain
healthpublicProcedureSystem health check
organizationauthorizedProcedureOrg detail, update
memberauthorizedProcedureMember list, role update, removal
patprotectedProcedurePersonal access token CRUD (user-scoped, not org-scoped)
researchPlanauthorizedProcedurePlan list/detail, steps, audit log, health summary
researchArtifactauthorizedProcedureArtifact list/detail/search, stats
hybridSearchauthorizedProcedureHybrid search (BM25 + pgvector), type-ahead, debug
aiLogsauthorizedProcedureAI usage summary, logs, model distribution, playground
skillExecutionauthorizedProcedureSkill execution list/detail/summary

Cross-Domain References

On this page