Image de marque
Où se trouvent le nom du produit, le logo, les icônes, les couleurs et les polices dans chaque application Learnio, et ce qu'il faut modifier pour en faire votre propre marque.
Pour le pack Full Stack
Où se trouve la marque
La marque est définie dans des fichiers, pas dans le tableau de bord admin. Le site étudiant et le tableau de bord admin ont chacun leur propre copie : modifiez donc chaque application que vous livrez.
| Élément | Site étudiant (frontend/) | Tableau de bord admin (admin-dashboard/) |
|---|---|---|
| Nom, description, liens | src/config/site.ts et src/config/brand.config.ts | src/config/brand.config.ts |
| Fichiers du logo | public/assets/brand/ | public/assets/brand/ et public/assets/images/ |
| Favicon et icônes de l'application | src/app/ et public/icons/ | src/app/, vers lequel pointe le manifest de brand.config.ts |
| Couleurs | src/styles/theme-variables.css et src/styles/dashboard-theme.css | src/styles/theme-variables.css |
| Polices | src/app/layout.tsx et src/styles/base.css | src/app/layout.tsx et src/styles/base.css |
| Textes qui nomment le produit | messages/<namespace>/<locale>.json | src/config/brand.config.ts |
yarn dev affiche une modification immédiatement. Un build de production compile la marque dans l'application : relancez donc yarn build, ou docker compose up --build pour le pack Full Stack.
Le nom sur le site étudiant
Les chemins sont relatifs à frontend/.
| Paramètre | Où il apparaît |
|---|---|
SITE.name dans src/config/site.ts | L'onglet du navigateur (Page | Name), les aperçus de partage, le nom de l'application installée et les données structurées lues par les moteurs de recherche. |
SITE.description et SITE.keywords | La meta description, les aperçus de partage et la description de l'application installée. |
SITE.twitterHandle | Les balises twitter:site et twitter:creator de la carte de partage de chaque page. Écrivez l'identifiant sans @ ; une chaîne vide supprime les deux balises. |
SITE.social | Le pied de page et le menu mobile. Indiquez des identifiants de compte, pas des URL. Un identifiant vide supprime ce lien. |
BRAND_CONFIG dans src/config/brand.config.ts | Le tableau de bord de l'étudiant : shortName à côté du symbole dans la barre latérale, name, version et company dans son pied de page. Chacun a une valeur en et une valeur ar. |
L'adresse publique du site provient de NEXT_PUBLIC_SITE_URL, pas de ces fichiers.
Le nom apparaît aussi dans les textes : la ligne de copyright du pied de page, le nom accessible du logo (brand.logoLabel dans messages/layouts), les pages d'accueil et « À propos », les pages de connexion et les pages légales. Trouvez chaque occurrence dans les deux langues :
frontendgrep -rn "Learnio" messages
grep -rn "ليرنيو" messages- Une seule chaîne est écrite dans le code : le hashtag
LearnioLMSdanssrc/components/ui/ShareModal.tsx. - Les conditions d'utilisation et la politique de confidentialité dans
messages/legalcontiennent des coordonnées d'exemple (legal@learnio.com,privacy@learnio.com, une adresse à Dubaï). Remplacez-les par les vôtres avant la mise en production.
Le nom dans le tableau de bord admin
Tout se trouve dans BRAND_CONFIG, dans admin-dashboard/src/config/brand.config.ts. Les champs texte ont une valeur en et une valeur ar.
| Champ | Où il apparaît |
|---|---|
name | Les titres de page (Page | Name), le nom du site dans l'aperçu de partage et le pied de page du tableau de bord. |
shortName | À côté du symbole en haut de la barre latérale, en capitales, et à côté du symbole sur la carte de connexion. Gardez-le court : un nom long est coupé par des points de suspension. |
company | Le pied de page du tableau de bord, et la ligne de copyright sous les pages de connexion, que getCopyrightText construit à partir de l'année et de ce nom. |
version | Le pied de page du tableau de bord. |
logo.icon | Le symbole en haut de la barre latérale et sur la carte de connexion. |
meta | Le titre, la description, les mots-clés et l'auteur par défaut, ainsi que les images de partage. |
domain.url | La base des liens absolus dans les métadonnées. Elle est livrée avec la valeur https://yourdomain.com : remplacez-la par l'adresse du tableau de bord admin. |
logo.alt | Le nom accessible du logo sur les pages de connexion. |
theme, manifest | Les couleurs du navigateur et de l'application installée, et les icônes de l'application installée, ci-dessous. |
links, contact | Uniquement les données structurées dans l'en-tête de la page. Aucun élément visible ne les lit. |
Chaque endroit qui nomme le produit lit BRAND_CONFIG : le renommer là renomme ensemble la barre latérale, la carte de connexion, les deux pieds de page et les titres des pages. Les fichiers de messages du tableau de bord admin ne contiennent pas le nom du produit : la phrase de la ligne de copyright est une traduction (layouts.footer.copyright) dans laquelle le nom est inséré depuis la configuration.
Fichiers du logo
Le plus simple est de remplacer chaque fichier par le vôtre, au même chemin et sous le même nom. Utilisez un PNG à fond transparent.
| Application | Fichier | Taille | Où il apparaît |
|---|---|---|---|
| Site étudiant | public/assets/brand/learnio-wordmark.png | 986 × 293 | La barre de navigation, le menu mobile, le pied de page et les pages de connexion, dans les deux thèmes. |
| Site étudiant | public/assets/brand/learnio-mark.png | 512 × 474 | La barre latérale du tableau de bord de l'étudiant. |
| Admin | public/assets/brand/learnio-mark.png | 512 × 474 | La barre latérale et la carte de connexion, via logo.icon. C'est aussi l'image de partage par défaut, ci-dessous. |
| Admin | public/assets/images/logo-for-lightmode.png et logo-for-darkmode.png | 986 × 293 | La barre supérieure des pages de connexion, un fichier par thème. |
- Le site étudiant affiche un seul logotype sur les pages claires et sombres : choisissez donc un visuel lisible sur les deux.
- Dans le tableau de bord admin, les deux fichiers de thème sont choisis par
--logo-bg-imagedanssrc/styles/theme-variables.css. Ils sont livrés avec la même image. - La copie de
learnio-wordmark.pngpropre au tableau de bord admin n'est utilisée par aucune page.
Pour utiliser un fichier d'un autre nom dans le tableau de bord admin, faites pointer logo.icon de BRAND_CONFIG vers lui. Si votre visuel a une autre forme, mettez à jour la taille déclarée pour qu'il ne soit pas étiré : le width et le height de ASSETS dans src/components/ui/BrandLogo.tsx du site étudiant, et width={512} et height={474} dans src/layouts/dashboard/sidebar/components/SidebarBrand.tsx (dans les deux applications) et dans src/layouts/auth/components/FormPanel.tsx du tableau de bord admin.
Favicon, icônes d'application et images de partage
Next.js trouve les fichiers de src/app/ par leur nom et écrit les balises de page correspondantes : remplacez donc les fichiers en conservant leurs noms.
| Application | Fichier | Taille | Utilisé pour |
|---|---|---|---|
| Les deux | src/app/favicon.ico | Plusieurs tailles dans un seul fichier | L'onglet du navigateur |
| Les deux | src/app/icon.png | 512 × 512 | L'icône du navigateur |
| Les deux | src/app/apple-icon.png | 180 × 180 | L'écran d'accueil iOS |
| Site étudiant | public/icons/icon-192.png, public/icons/icon-512.png | Carrés de 192 et 512 | L'application installée. Celle de 512 est aussi le logo dans les données structurées. |
| Site étudiant | public/icons/icon-maskable-512.png | 512 × 512 | Android, qui peut la rogner en cercle. Gardez le symbole bien à l'intérieur des bords. |
| Site étudiant | src/app/opengraph-image.png, src/app/twitter-image.png | 1200 × 630 | Aperçus de liens |
Le tableau de bord admin a un seul manifest d'application web, servi à /manifest.webmanifest depuis src/app/manifest.ts, qui lit manifest dans BRAND_CONFIG :
manifest.iconsliste les icônes de l'application installée :/icon.png(512 × 512) et/apple-icon.png(180 × 180), les deux fichiers desrc/app/. Remplacer ces fichiers change ensemble l'icône du navigateur et celle de l'application installée. Si vous faites pointer une entrée vers un autre fichier, indiquez sa taille réelle.meta.ogImageetmeta.twitterImagesont les aperçus des liens,/assets/brand/learnio-mark.pngpar défaut. Les métadonnées déclarent l'image en 512 × 474 et utilisent la petite cartesummary: une image de remplacement d'une autre taille demande de changer aussi lewidthet leheightdanssrc/app/layout.tsx.- Le tableau de bord admin demande aux moteurs de recherche de ne pas l'indexer, dans les métadonnées des pages et dans
public/robots.txt: c'est un outil pour le personnel, pas une page publique.
Couleurs du site étudiant
Les pages publiques lisent leurs couleurs dans des variables CSS de src/styles/theme-variables.css : les valeurs claires sous :root, les sombres sous .dark. L'orange de la marque est #FF6A3D.
| Variable | Ce qu'elle colore |
|---|---|
--primaryColor, --primaryColorHover, --primaryColorLight | Les boutons, les liens, les états actifs et la teinte pâle derrière eux. |
--brand-start, --brand-end | Les deux couleurs de la marque : l'orange pour les actions, le jaune pour la progression et les prix. Redéfinies sous .dark. |
--brand-start-ink, --brand-end-ink, --brand-figure-ink | Des versions plus foncées des mêmes couleurs pour le texte, afin qu'il reste lisible sur une page claire. |
--brand-action-hover, --brand-dark-pink | Le survol du bouton plein, et un ancien nom du remplissage principal. |
--background, --surface, --text, --border | La page, les cartes, le texte et les filets. |
- Le tableau de bord de l'étudiant connecté utilise la palette du tableau de bord admin, copiée dans
src/styles/dashboard-theme.csset limitée à ce tableau de bord. Son orange est#FF8A00. La copie est tenue à la main : quand une couleur change danstheme-variables.cssdu tableau de bord admin, changez-la aussi dans ce fichier. - Quelques illustrations écrivent l'orange directement au lieu d'utiliser une variable : le profil du formateur et les étapes « How it works » de la page d'accueil. Recherchez
FF6A3Ddanssrc/features. - La couleur que le navigateur peint autour de la page (la barre d'adresse sur mobile) est
SITE.browserChromedanssrc/config/site.ts, une valeur par thème, chacune égale au fond de page de ce thème. Les couleurs de l'application installée sontSITE.themeColoretSITE.backgroundColordans le même fichier.
Couleurs du tableau de bord admin
Toutes les couleurs sont des variables CSS dans src/styles/theme-variables.css, les claires sous :root et les sombres sous .dark. L'orange de la marque est --primaryColor, #ff8a00 dans les deux thèmes, avec --primaryColorHover pour son survol.
- Les nuances de l'orange sont écrites comme des valeurs distinctes : la famille
--accent-*, la famille--chip-*et--btn-primary-fill, qui vaut#ff6a3ddans le thème clair. Pour changer la couleur de la marque, recherchezff8a00,255, 138, 0etff6a3ddans le fichier et retravaillez les nuances voisines. - En dehors des couleurs du navigateur ci-dessous, ce fichier est le seul endroit où le tableau de bord admin écrit l'orange. Aucun composant ne la code en dur.
- Les couleurs de l'interface du navigateur sont
theme.lightettheme.darkdansBRAND_CONFIG. L'application installée utilisemanifest.themeColoretmanifest.backgroundColor.
Polices
Les deux applications chargent Inter pour l'anglais et IBM Plex Sans Arabic pour l'arabe via next/font/google dans src/app/layout.tsx, qui les sert depuis votre propre domaine. src/styles/base.css passe à la police arabe quand la langue de la page est ar.
| Application | Variable de la police latine | Variable de la police arabe |
|---|---|---|
| Site étudiant | --font-inter | --font-ibm-plex-arabic |
| Admin | --font-sans-latin | --font-sans-arabic |
Pour changer de police, importez-en une autre depuis next/font/google en conservant son nom de variable, afin que les feuilles de style la reprennent sans modification. Sur le site étudiant :
import { IBM_Plex_Sans_Arabic, Manrope } from "next/font/google";
const inter = Manrope({
subsets: ["latin"],
display: "swap",
variable: "--font-inter",
});Une police qui n'est pas une police variable a besoin d'une liste weight, comme la police arabe. Le fichier src/styles/base.css du site étudiant cite aussi 'Inter' comme police de secours ; mettez-le à jour si vous renommez la variable.
E-mails et API
- Expéditeur :
MAIL_FROMdansback-end/.envest le nom et l'adresse d'où part chaque e-mail, par exempleLearnio <noreply@example.com>. - Nom : les e-mails nomment le produit via l'espace réservé
{site}desrc/i18n/translations/<locale>/mail.json, rempli à partir du paramètresite_name. Modifiez-le dans l'onglet App Settings de Settings du tableau de bord admin ; il s'applique au prochain e-mail envoyé. - Réponses : le paramètre
support_emailest l'adresse de réponse de chaque e-mail, pour qu'une réponse parvienne à une personne plutôt qu'à l'expéditeur sans réponse. - Formulation : les objets et les corps des messages sont dans
src/i18n/translations/en/mail.jsonetsrc/i18n/translations/ar/mail.json. - Apparence : les e-mails ne contiennent pas de logo. Leurs couleurs sont écrites dans
src/modules/mail/templates/layout.ts(INK,MUTED,PAGE,CARD), car les clients de messagerie ignorent les feuilles de style. - Les liens des e-mails ouvrent le site étudiant à l'adresse
FRONTEND_URL.
L'onglet App Settings ne change pas la marque des applications
site_name et support_email ne changent que les e-mails. Le site étudiant et le tableau de bord admin prennent leur nom, leur logo et leurs couleurs dans les fichiers ci-dessus : modifiez-les aussi.