← Back to list

trpc-patterns
by FranciscoMoretti
Production-ready AI chat template built with Next.js, Vercel AI SDK. Launch AI apps 10x faster.
⭐ 857🍴 90📅 Jan 23, 2026
SKILL.md
name: trpc-patterns description: TRPC with Tanstack Query patterns Applies to files matching: *.tsx.
TRPC with Tanstack Query Integration
Backend Structure
- Main router: trpc/routers/_app.ts - All routers must be registered here
- Individual routers:
trpc/routers/*.router.ts- Create feature-specific routers (e.g.,chat.router.ts,vote.router.ts) - Database queries: lib/db/queries.ts - All database operations should be defined here
- Database schema: lib/db/schema.ts - Drizzle ORM schema definitions
Frontend Integration
Setup
- Use
useTRPC()hook from@/trpc/react - Import
useMutation,useQuery,useQueryClientfrom@tanstack/react-query
Query Pattern
const trpc = useTRPC();
const { data, isLoading, refetch } = useQuery({
...trpc.router.procedure.queryOptions(),
enabled: !!condition,
});
Mutation Pattern
const trpc = useTRPC();
const queryClient = useQueryClient();
const mutation = useMutation(
trpc.router.procedure.mutationOptions({
onSuccess: () => {
// Invalidate related queries
queryClient.invalidateQueries({
queryKey: trpc.router.relatedQuery.queryKey(),
});
},
})
);
// Usage
await mutation.mutateAsync({ input: data });
Backend Router Pattern
import { createTRPCRouter, protectedProcedure } from '@/trpc/init';
import { z } from 'zod';
export const featureRouter = createTRPCRouter({
queryName: protectedProcedure.query(async ({ ctx }) => {
return await dbFunction({ userId: ctx.user.id });
}),
mutationName: protectedProcedure
.input(z.object({ /* validation schema */ }))
.mutation(async ({ ctx, input }) => {
// Verify permissions/ownership
// Call database function
return await dbFunction(input);
}),
});
Key Principles
- Always use
protectedProcedurefor authenticated routes - Validate inputs with Zod schemas
- Verify user ownership/permissions in mutations
- Use database functions from lib/db/queries.ts
- Invalidate related queries after mutations
- Handle loading and error states in the UI
Score
Total Score
80/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
✓人気
GitHub Stars 500以上
+10
✓最近の活動
1ヶ月以内に更新
+10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon

