Image de marque
Faites vôtres le site et le tableau de bord : le nom, les lockups et les icônes, les couleurs et la typographie, les cartes de partage, les thèmes, et les endroits où l'API écrit le nom du produit.
Pour le pack Full Stack
Où se trouve la marque
| Élément | Site (website/) | Tableau de bord (dashboard/) |
|---|---|---|
| Nom et métadonnées | messages/layout/<locale>.json (Metadata, Common.brand), src/config/site.ts | src/config/brand.config.ts, messages/metadata/<locale>.json |
| Lockup et symbole | public/brand/, dimensionné dans src/components/Logo.tsx | public/brand/, dimensionné dans src/config/brand.config.ts |
| Icônes | src/app/icon.svg | src/app/ et les deux fichiers web-app-manifest dans public/ |
| Carte de partage | public/meta_image.png | meta.ogImage dans src/config/brand.config.ts |
| Couleurs | src/styles/theme-variables.css | src/styles/theme-variables.css |
| Formes | public/shapes/ | public/shapes/ |
| Polices | src/fonts/ et public/fonts/ | src/fonts/ |
| Textes | messages/ et src/content/ | messages/ |
Chaque couleur est un token défini une fois pour le thème clair et une fois pour le thème sombre. Les composants ne lisent que des tokens : un token modifié atteint donc chaque écran. Changez une couleur de marque dans les deux blocs, sinon un thème garde l'ancienne.
Le nom et les textes du site
- Le nom dans les titres d'onglet et les cartes de partage est
Metadata.siteNamedansmessages/layout/en.jsonetar.json, avec le titre par défaut, la description et le texte alternatif de l'image de partage à côté. Le nom accessible du logo estCommon.brand, et la ligne de copyright estFooter.copyright. - Le titre et la description propres à chaque page se trouvent sous
metadans son namespace demessages/, par exemplePricingPage.metadansmessages/pricing/. - Le nom du produit apparaît aussi dans des phrases, écrit
Northstacken lettres latines dans les deux langues : cherchez-le dansmessages/etsrc/content/et réécrivez ces lignes. La documentation, le journal et le changelog desrc/content/décrivent Northstack lui-même et vous pouvez les réécrire.
Le lockup, l'icône et les formes du site
| Fichier | Utilisé pour |
|---|---|
public/brand/logo-light.svg, public/brand/logo-dark.svg | Le lockup (le symbole et le nom dessinés ensemble) dans l'en-tête, le pied de page et l'aperçu de l'espace de travail, sur les pages claires comme sombres. Le même lockup sert les deux langues. |
src/app/icon.svg | L'icône de l'onglet du navigateur |
public/meta_image.png | La carte de partage, 1200 par 630, nommée dans ogImage dans src/config/site.ts, pour chaque page. |
public/shapes/ | Les carrés, cercles, quarts de cercle et triangles dessinés autour des sections, par src/components/Shape.tsx |
Remplacez les deux fichiers de lockup par les vôtres, sous les mêmes noms. Leurs proportions sont écrites dans LOCKUP_RATIO dans src/components/Logo.tsx (379.24 par 68 tel que livré) : réglez-le sur la largeur de votre lockup divisée par sa hauteur, pour que l'en-tête garde sa taille.
Les couleurs et la typographie du site
| Token | Clair | Sombre | Rôle |
|---|---|---|---|
--background, --surface | #f1ece3 | #171717, #202020 | Page et panneaux |
--text, --text-muted | #111111, #5d5e63 | #f1ece3, #b9b8b2 | Texte |
--border, --border-strong | #b8b5ad, #111111 | #696761, #b8b5ad | Filets et contours |
--primary | #111111 | #f1ece3 | Boutons principaux |
--brand-action | #c7492c | #c7492c | Les boutons d'appel à l'action rouges |
--link, --focus | #1151d8 | #82a8ff | Liens et anneau de focus |
--red, --cobalt, --sunflower | #c7492c, #1151d8, #efbf43 | Le même | Les formes et les marques de statut |
--errorColor | #a83a20 | #e0714f | Erreurs |
Les couleurs de la barre du navigateur (#f1ece3 et #171717) sont themeColor dans src/app/[locale]/layout.tsx. Vérifiez que le texte sur vos couleurs reste lisible à 4,5 pour 1 dans les deux thèmes.
Les polices sont livrées avec l'application, un build ne les télécharge donc jamais : Inter pour le texte latin (src/fonts/InterVariable-latin.woff2, chargée dans src/fonts/fonts.ts), Noto Sans Arabic pour le texte arabe et Almarai pour les titres arabes (public/fonts/, déclarées dans src/styles/fonts.css et préchargées sur les pages arabes). Chacune a sa licence SIL Open Font License à côté. Pour en changer une, placez son fichier .woff2 dans le même dossier, faites pointer la déclaration vers lui, et gardez sa licence à côté.
Résultats de recherche, partage et domaine
NEXT_PUBLIC_SITE_URLest la base de chaque adresse canonique, des alternatives de langue, des cartes de partage, de robots.txt et du sitemap. Définissez-la avec votre vraie adresse avant le build.- Les prix sont écrits de la même façon dans les deux langues, le signe dollar en premier avec des chiffres latins, par
src/lib/format/formatUsd.ts. - Les métadonnées de la page nomment Aniq-UI comme auteur (
authorsdanssrc/app/[locale]/layout.tsx) : mettez-y votre propre nom.
Clair et sombre
- Le site propose System, Light et Dark dans son menu Theme. System suit le système d'exploitation. Le choix est gardé dans le localStorage du navigateur sous
northstack-theme, et un script de l'en-tête de la page l'applique avant le premier affichage : un rechargement ne fait donc jamais clignoter l'autre thème. - Le tableau de bord a un seul bouton de thème dans sa barre supérieure, un disque à moitié plein nommé Toggle theme pour les lecteurs d'écran, qui bascule entre clair et sombre. Tant qu'on n'appuie pas dessus, le tableau de bord suit le système d'exploitation. Le choix est gardé dans localStorage sous
themeet appliqué avant le premier affichage de la même façon. - Rien du thème n'est envoyé à l'API.
Le nom, le lockup et les couleurs du tableau de bord
- Nom :
namedansBRAND_CONFIG(src/config/brand.config.ts) est la moitié « marque » de chaque titre d'onglet (Team | Northstack), le texte alternatif du logo et le nom de l'application installée. Il est identique dans les deux langues. Le titre de chaque page se trouve souspagesdansmessages/metadata/en.jsonetar.json, et le titre et la description par défaut soussite. Le nom du produit apparaît aussi dans des phrases demessages/, en lettres latines dans les deux langues. - Métadonnées :
meta.keywords,meta.author(Aniq-UI tel que livré : mettez le vôtre) etmeta.ogImage, l'image qu'affiche un lien partagé, avec sa taille. Telle que livrée, c'est l'icône d'application de 512 par 512, qui se partage en petite carte ; une image de 1200 par 630 se partage en grande carte.theme.lightettheme.darksont les couleurs de la barre du navigateur, etmanifestles couleurs et icônes de l'application installée. - Lockup et symbole : remplacez
logo-light.svg,logo-dark.svg,mark-light.svgetmark-dark.svgdanspublic/brand/, en gardant les noms, et réglezlogo.widthetlogo.heightsur les proportions du nouveau lockup. Le symbole seul s'affiche dans la barre latérale réduite et l'en-tête du téléphone, dessiné aux proportions 100 par 48 danssrc/components/ui/BrandLogo.tsx. - Icônes :
src/app/favicon.ico(l'onglet),src/app/icon0.svgetsrc/app/icon1.png,src/app/apple-icon.png(écrans d'accueil de l'iPhone et de l'iPad), etpublic/web-app-manifest-192x192.pngetpublic/web-app-manifest-512x512.pngpour l'application installée. - Couleurs : la palette (
--paper,--ink,--red,--cobalt,--sunflower), les surfaces et le texte, les filets (--border,--border-strong), les actions, les marques de statut (--status-progress,--status-review,--status-blocked,--status-done) et la couleur des graphiques, danssrc/styles/theme-variables.css, une fois par thème. Les formes sont dessinées parsrc/components/ui/Shape.tsxà partir depublic/shapes/, et les personnes sans photo apparaissent comme des carrés avec leurs initiales. - Polices : Inter pour le texte latin et IBM Plex Sans Arabic pour l'arabe, depuis
src/fonts/(avec leurs licences), chargées danssrc/styles/fonts.ts. - Adresses :
NEXT_PUBLIC_BASE_URLest l'adresse propre du tableau de bord (robots.txt, sitemap, métadonnées et adresse de l'espace de travail dans l'onboarding et les paramètres) etNEXT_PUBLIC_WEBSITE_URLcelle du site (les liens Documentation, Privacy et Terms).
Le tableau de bord écarte chaque page des moteurs de recherche (noindex dans l'en-tête de la page et un en-tête X-Robots-Tag), comme il se doit pour un panneau d'administration.
Où l'API écrit le nom du produit
| Emplacement | Fichier |
|---|---|
L'expéditeur de chaque e-mail, SMTP_FROM (Northstack <no-reply@localhost> quand il est vide) | back-end/.env, back-end/src/modules/mail/mail.service.ts |
| L'objet de l'e-mail de réinitialisation du mot de passe | back-end/src/modules/auth/account.service.ts |
| L'objet de l'e-mail d'invitation | back-end/src/modules/workspaces/services/invitations.service.ts |
| Le titre et les lignes de la facture PDF | back-end/src/modules/billing/services/billing.service.ts |
| Le nom de la formule sur la page de paiement de Stripe | back-end/src/modules/billing/providers/stripe.provider.ts |
| Le nom des licences sur la page de paiement et le reçu | back-end/src/modules/licenses/constants/license-offers.ts |
Les paramètres de la plateforme initialisent un Product name, un Tagline et une Support address (back-end/src/database/seeders/app-settings.seeder.ts), modifiés dans la page Settings de la plateforme du tableau de bord. Parmi eux, seul l'assistant IA lit le Product name et la Support address, pour nommer le produit dans ses réponses ; les écrans prennent le nom dans les fichiers ci-dessus.
Textes et pages légales
Chaque phrase visible se trouve dans messages/ (et les longs textes du site dans src/content/), avec un en.json et un ar.json. Réécrivez le texte dans les deux fichiers. La politique de confidentialité, les conditions d'utilisation, la politique de cookies et la page des droits sur les données de messages/legal sont des textes d'exemple, avec une date « Last updated » d'exemple : réécrivez-les pour votre activité et votre pays avant d'accueillir de vrais clients.