Vibe Coding avec HeartCo
Code avec l'IA, pas contre elle.
HeartCo n'est pas juste un boilerplate. C'est un codebase que Claude, Cursor et Copilot comprennent nativement.
17
prompts IA
70+
routers tRPC
160+
modĂšles Prisma
4 000+
tests
Pourquoi les LLMs adorent HeartCo
Une architecture pensée pour que l'IA comprenne, navigue et produise du code production-ready.
Conventions cohérentes
MĂȘme pattern partout : findFirst + organizationId, TRPCError, ctx.orgDb. Les LLMs repĂšrent le pattern en 1 fichier et l'appliquent partout.
Types exhaustifs
TypeScript strict, noUncheckedIndexedAccess, zéro `any`. Les LLMs naviguent le type system pour générer du code correct du premier coup.
Architecture explicite
Path alias `~/`, routers dans `src/server/api/routers/`, composants dans `src/components/`. Pas d'ambiguĂŻtĂ© sur oĂč mettre quoi.
Documentation inline
CLAUDE.md, conventions claires, noms explicites. Le contexte est dans le code, pas dans ta tĂȘte.
Essaie ces prompts
Copie, colle, et regarde l'IA construire sur des fondations solides.
Claude trouve les routers tRPC existants, le schĂ©ma Prisma et les composants React. Il Ă©tend le code en respectant les conventions â guards, isolation multi-tenant, composants shadcn.
Les guards organizationId et les tests de sécurité sont déjà en place. L'IA comprend le pattern et l'applique systématiquement à chaque query et mutation.
Les conventions sont claires. L'IA réutilise les composants shadcn existants et branche Pusher pour le live update du dashboard.
Le pattern webhook existe dans src/app/api/webhooks/stripe. Claude duplique la route, ajoute le handler refund, met Ă jour le switch case.
Les tests existants dans __tests__/security/ servent de template. Claude génÚre les tests IDOR, permission et isolation multi-tenant.
Compatible avec tes outils
Quel que soit ton setup IA, HeartCo fonctionne out of the box.
Claude Code
Compatible âCursor
Compatible âGitHub Copilot
Compatible âWindsurf
Compatible âCodex
Compatible âGemini
Compatible âUn vrai router, pas un TODO
Du code production-ready que les LLMs comprennent et reproduisent.
// src/server/api/routers/clients.ts
export const clientsRouter = createTRPCRouter({
list: requirePermission("clients:read")
.input(z.object({ search: z.string().optional() }))
.query(async ({ ctx, input }) => {
return ctx.orgDb.client.findMany({
where: input.search
? { name: { contains: input.search } }
: undefined,
orderBy: { createdAt: "desc" },
});
}),
});Les LLMs voient ce pattern et le reproduisent. Pas besoin de prompt engineering â le code s'explique.
PrĂȘt Ă vibe coder ?
Clone le repo, ouvre Cursor ou Claude Code, et commence Ă builder.