Aller au contenu principal

Personnalisation

Adapter HeartCo à votre marque : nom, couleurs, emails, sidebar, pages légales.

Branding

Fichier : src/lib/config/branding.ts

Toute la configuration de marque est centralisée dans l'objet APP_CONFIG. Chaque valeur est configurable via variable d'environnement :

Identité

PropriétéPar défautVariable d'environnement
NomHeartCoNEXT_PUBLIC_APP_NAME
Nom courtHCNEXT_PUBLIC_APP_SHORT_NAME
Tagline"Lancez votre SaaS en 1 semaine"NEXT_PUBLIC_APP_TAGLINE
Description"Le boilerplate SaaS production-ready..."NEXT_PUBLIC_APP_DESCRIPTION
URLhttp://localhost:3000NEXT_PUBLIC_APP_URL
Domaineheartco.frNEXT_PUBLIC_APP_DOMAIN

Emails

PropriétéPar défautVariable d'environnement
Email principalhello@heartco.frNEXT_PUBLIC_APP_EMAIL
Supportsupport@heartco.frNEXT_PUBLIC_SUPPORT_EMAIL
No-replynoreply@heartco.frNEXT_PUBLIC_NOREPLY_EMAIL

Couleurs

PropriétéValeurUsage
Primary#6366f1 (Indigo)Boutons, liens, accents
Secondary#8b5cf6 (Violet)Gradients, éléments secondaires

Réseaux sociaux

Configurables via APP_CONFIG.social : twitter, linkedin, github, discord, instagram, youtube (vides par défaut).

Informations légales

PropriétéVariable d'environnement
Raison socialeNEXT_PUBLIC_COMPANY_NAME
N° d'immatriculationNEXT_PUBLIC_REGISTRATION_NUMBER
N° TVANEXT_PUBLIC_VAT_NUMBER
AdresseNEXT_PUBLIC_COMPANY_ADDRESS

Exemple de personnalisation

Pour rebaptiser l'app "MonSaaS" :

NEXT_PUBLIC_APP_NAME="MonSaaS"
NEXT_PUBLIC_APP_SHORT_NAME="MS"
NEXT_PUBLIC_APP_TAGLINE="La solution tout-en-un pour votre business"
NEXT_PUBLIC_APP_DOMAIN="monsaas.fr"
NEXT_PUBLIC_APP_EMAIL="contact@monsaas.fr"
NEXT_PUBLIC_SUPPORT_EMAIL="support@monsaas.fr"
NEXT_PUBLIC_NOREPLY_EMAIL="noreply@monsaas.fr"
NEXT_PUBLIC_COMPANY_NAME="MonSaaS SAS"

Tailwind et thème

Fichier principal

src/styles/globals.css contient les tokens CSS et la configuration Tailwind v4.

Tokens CSS sémantiques

HeartCo utilise des custom properties CSS pour le thème clair et sombre :

:root {
  --background: ...;
  --foreground: ...;
  --primary: ...;
  --primary-foreground: ...;
  --secondary: ...;
  --card: ...;
  --border: ...;
  --ring: ...;
  /* ... */
}
 
.dark {
  --background: ...;
  --foreground: ...;
  /* ... variantes sombres */
}

Couleurs personnalisées

:root {
  --color-brand: #6366f1;
  --color-deep-navy: #0d1b2a;
  --color-ai-blue: ...;
  --color-ai-cyan: ...;
}

Dark mode

Le dark mode est géré par next-themes. Utiliser toujours les tokens CSS sémantiques, jamais de couleurs hardcodées :

// ✅ Correct — utilise les tokens
<div className="bg-background text-foreground border-border">
 
// ❌ INTERDIT — couleurs hardcodées
<div className="bg-white text-gray-900 border-gray-200">

Fusion de classes

Utiliser cn() (clsx + tailwind-merge) pour merger les classes :

import { cn } from "~/lib/utils";
 
<button className={cn(
  "px-4 py-2 rounded-md",
  variant === "primary" && "bg-primary text-primary-foreground",
  variant === "outline" && "border border-input",
  className
)} />

Navigation (Sidebar)

Fichier : src/lib/navigation/nav-config.ts

Structure

La sidebar est organisée en 8 sections avec des couleurs sémantiques :

SectionCouleurIcône
DashboardIndigoLayoutDashboard
Copilote IAVioletSparkles
CommercialEmeraldUsers
FacturationAmberReceipt
FinanceSkyTrendingUp
OpérationsOrangeWrench
ÉquipeTealUserCog

Modifier un item

Pour changer le label, l'icône ou le chemin d'un module :

// src/lib/navigation/nav-config.ts
{
  id: "crm",
  label: "Mon CRM",        // ← Modifier le label
  path: "/dashboard/crm",
  icon: Target,             // ← Changer l'icône (Lucide)
  badge: "core",
  moduleId: "MODULE_CRM",
}

Items du footer

3 items fixes en bas de la sidebar :

  • Marketplace/dashboard/marketplace
  • Aide/help
  • Paramètres/dashboard/parametres

Badges

BadgeAffichageUsage
coreModule inclus dans le plan
addonBadge payantModule à la carte
verticalBadge verticalModule vertical (BTP)
tag: NEWPastille "NEW"Nouveau module
tag: BETAPastille "BETA"Module en bêta

Pages légales

Les pages légales sont dans le route group src/app/(legal)/ :

PageCheminFichier
CGU/cgusrc/app/(legal)/cgu/page.tsx
CGV/cgvsrc/app/(legal)/cgv/page.tsx
Mentions légales/mentions-legalessrc/app/(legal)/mentions-legales/page.tsx
Politique cookies/politique-cookiessrc/app/(legal)/politique-cookies/page.tsx
Politique confidentialité/politique-confidentialitesrc/app/(legal)/politique-confidentialite/page.tsx

Pour personnaliser, modifiez directement le contenu des pages. Les informations légales (raison sociale, adresse) sont tirées de APP_CONFIG.legal.

Templates d'emails

Dossier : src/lib/emails/templates/

6 templates lifecycle prêts à l'emploi :

TemplateDéclencheurDescription
email-verification.tsInscriptionLien de vérification (24h)
trial-welcome.tsDébut trialBienvenue + 3 features à essayer
trial-reminder-7days.tsJ-7 trialRappel avec incitation upgrade
trial-reminder-2days.tsJ-2 trialRappel urgent conversion
trial-expired.tsFin trialStats d'usage + plans payants
newsletter-onboarding.tsJ+3 inscriptionTips personnalisés par feature

Personnaliser un template

Les templates utilisent Resend avec du HTML inline. Pour modifier :

  1. Ouvrir le fichier template dans src/lib/emails/templates/
  2. Modifier le HTML, les textes, les couleurs
  3. Les variables dynamiques (nom, lien, etc.) sont passées en paramètre

Templates de relance

Les relances (src/lib/emails/relances.ts) utilisent des variables de substitution :

VariableDescription
{{clientName}}Nom du client
{{invoiceNumber}}Numéro de facture
{{amount}}Montant dû
{{dueDate}}Date d'échéance
{{daysPastDue}}Jours de retard
{{orgName}}Nom de l'organisation
{{signature}}Signature configurée