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
60+
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.