FAQ
Questions fréquentes sur HeartCo Starter.
Installation et configuration
Puis-je utiliser npm ou yarn au lieu de pnpm ?
Non. HeartCo utilise exclusivement pnpm (version 9.x). Le projet est configuré comme monorepo pnpm avec pnpm-workspace.yaml. Les fichiers lock (pnpm-lock.yaml) ne sont pas compatibles avec npm/yarn.
# Installer pnpm
npm install -g pnpm@9
# Vérifier
pnpm -vComment changer la base de données ?
Modifiez DATABASE_URL et DIRECT_URL dans votre .env. HeartCo fonctionne avec n'importe quelle base PostgreSQL :
# Supabase (recommandé)
DATABASE_URL="postgresql://postgres:password@db.project.supabase.co:6543/postgres?pgbouncer=true"
# PostgreSQL local
DATABASE_URL="postgresql://user:password@localhost:5432/heartco"
# Neon, Railway, etc.
DATABASE_URL="postgresql://..."Après le changement :
npx prisma migrate devHeartCo ne supporte que PostgreSQL. MySQL, SQLite et MongoDB ne sont pas compatibles.
J'ai une erreur EPERM sur Windows avec Prisma
C'est normal — le fichier query_engine-windows.dll.node est verrouillé quand le serveur de dev tourne.
Solution : Arrêtez le serveur (Ctrl+C), lancez npx prisma generate, puis redémarrez pnpm dev.
Le build échoue avec "JavaScript heap out of memory"
Le build nécessite ~7 GB de RAM. Vérifiez que NODE_OPTIONS est configuré :
# Dans package.json (déjà configuré)
NODE_OPTIONS=--max-old-space-size=7168 next buildSi ça ne suffit pas, augmentez la valeur ou fermez d'autres applications.
Personnalisation
Comment renommer l'application ?
Modifiez les variables d'environnement NEXT_PUBLIC_* (voir Personnalisation) :
NEXT_PUBLIC_APP_NAME="MonApp"
NEXT_PUBLIC_APP_SHORT_NAME="MA"
NEXT_PUBLIC_APP_TAGLINE="Mon super SaaS"
NEXT_PUBLIC_APP_EMAIL="contact@monapp.fr"Toute la marque est centralisée dans src/lib/config/branding.ts et lue depuis les variables d'environnement.
Comment supprimer un module dont je n'ai pas besoin ?
Option simple : Retirez l'entrée du module dans src/lib/navigation/nav-config.ts. Le module ne sera plus visible dans la sidebar.
Option complète :
- Retirer de
nav-config.ts - Supprimer le router tRPC dans
src/server/api/routers/ - Retirer l'import dans
src/server/api/root.ts - Supprimer la page dashboard
src/app/dashboard/<module>/
Le router peut rester sans risque — s'il n'est pas dans la sidebar, les utilisateurs n'y accèdent pas.
Comment ajouter le dark mode ?
Le dark mode est déjà intégré via next-themes. Il est activé par défaut et suit la préférence système de l'utilisateur.
Pour forcer un mode :
import { useTheme } from "next-themes";
const { setTheme } = useTheme();
setTheme("dark"); // ou "light" ou "system"Assurez-vous d'utiliser les tokens CSS sémantiques (bg-background, text-foreground) et non des couleurs hardcodées (bg-white, text-gray-900).
Comment changer les couleurs du thème ?
Modifiez les custom properties dans src/styles/globals.css :
:root {
--primary: 239 84% 67%; /* Couleur principale */
--primary-foreground: 0 0% 100%; /* Texte sur primary */
/* ... */
}Les couleurs de marque (landing page) :
:root {
--color-brand: #6366f1; /* Indigo */
--color-deep-navy: #0d1b2a; /* Fond sombre */
}Modules et fonctionnalités
HeartCo inclut-il des apps mobiles ?
Oui. Les dossiers apps/app-terrain/ et apps/app-temps/ contiennent des apps Expo (React Native) connectées au même backend tRPC via le package partagé packages/mobile-core/. Elles incluent :
- Authentification (JWT + Zustand store sécurisé)
- Mode offline avec queue de synchronisation
- Client tRPC mobile partagé
Comment fonctionne l'IA (Copilote) ?
HeartCo utilise Mistral AI (@mistralai/mistralai) pour :
- Copilote conversationnel (chatbot contextualisé)
- Analyse de documents et factures
- Génération de contenu (social, blog)
- Assistant réglementaire
Configuration :
MISTRAL_API_KEY="votre-clé-mistral"Les fichiers IA sont dans src/lib/ai/ : ai-service.ts, prompts.ts, agent-tools.ts.
Comment fonctionne l'e-facturation ?
HeartCo supporte :
- Factur-X (EN 16931) — Génération de PDF/A-3 avec XML intégré
- Iopole — Envoi et réception de factures B2B via le réseau Peppol
Important : Les modules
src/modules/facturx/etsrc/modules/iopole/sont certifiés. Ne pas les modifier.
Comment activer le mode démo ?
NEXT_PUBLIC_DEMO_MODE=true
NEXT_PUBLIC_DEMO_URL="https://demo.heartco.fr"En mode démo :
- Les actions destructrices sont bloquées (suppression, envoi d'emails réels)
- Rate limiting renforcé par utilisateur
- Reset automatique quotidien via le cron
demo-reset(03:00) - Les données sont restaurées à leur état initial chaque nuit
Multi-tenant et sécurité
Puis-je utiliser HeartCo pour plusieurs organisations ?
Oui, c'est natif. HeartCo est multi-tenant par design. Chaque inscription crée une organisation isolée. Les données sont strictement séparées via organizationId.
Un utilisateur peut être invité dans plusieurs organisations via le système d'invitations.
Comment fonctionne l'isolation des données ?
Chaque requête de lecture passe par ctx.orgDb qui injecte automatiquement organizationId dans les filtres Prisma. Voir Sécurité et Base de données.
Déploiement et maintenance
Combien coûte l'hébergement ?
Estimation pour un usage typique :
- Vercel : Plan Pro (~20$/mois) ou Team
- Supabase : Plan Pro (~25$/mois) pour PostgreSQL
- Upstash Redis : Pay-as-you-go (~5$/mois)
- Resend : Gratuit jusqu'à 3 000 emails/mois
- Pusher : Gratuit jusqu'à 200K messages/jour
Total estimé : ~50$/mois pour démarrer.
Comment mettre à jour HeartCo ?
Si vous avez accès au repository upstream :
git remote add upstream https://github.com/heartco/heartco.git
git fetch upstream
git merge upstream/mainRésolvez les conflits éventuels, puis :
npx prisma generate
npx prisma migrate dev
pnpm buildComment activer le mode maintenance ?
MAINTENANCE_MODE=true
MAINTENANCE_BYPASS_SECRET="votre-secret"Toutes les pages redirigent vers /maintenance sauf les webhooks, crons et l'API health. Pour bypasser en tant qu'admin, ajoutez ?bypass=votre-secret à l'URL.
Les crons ne s'exécutent pas sur Vercel
Vérifiez que :
vercel.jsoncontient les configurations de crons- La variable
CRON_SECRETest configurée (≥32 caractères) - Vous êtes sur le plan Pro ou Team de Vercel (les crons ne sont pas disponibles sur le plan gratuit)
Consultez les logs dans le dashboard Vercel → Deployments → Functions → Cron.
Performance
Le bundle est trop gros
HeartCo optimise le bundle avec :
optimizePackageImportspour lucide-react, framer-motion, date-fns, recharts, @radix-ui- Tree-shaking automatique
- Analyse :
pnpm analyze
Pour réduire davantage :
- Supprimez les modules non utilisés (routers + pages)
- Utilisez le lazy loading pour les composants lourds
Turbopack pose des problèmes
Si le hot reload ne fonctionne plus ou que des erreurs de chunk apparaissent :
# Supprimer le cache
rm -rf .next
# Lancer sans Turbopack
npx next devTurbopack est activé par défaut avec
pnpm dev. Utiliseznpx next dev(sans--turbo) en cas de problème.