Marca
Dónde están el nombre del producto, el logotipo, los iconos, los colores y las fuentes en cada aplicación de Learnio, y qué cambiar para convertirla en tu propia marca.
Para el paquete Full Stack
Dónde está la marca
La marca se define en archivos, no en el panel de administración. El sitio para estudiantes y el panel de administración tienen cada uno su propia copia, así que cambia cada aplicación que publiques.
| Qué | Sitio para estudiantes (frontend/) | Panel de administración (admin-dashboard/) |
|---|---|---|
| Nombre, descripción, enlaces | src/config/site.ts y src/config/brand.config.ts | src/config/brand.config.ts |
| Archivos del logotipo | public/assets/brand/ | public/assets/brand/ y public/assets/images/ |
| Favicon e iconos de la aplicación | src/app/ y public/icons/ | src/app/, al que apunta el manifest de brand.config.ts |
| Colores | src/styles/theme-variables.css y src/styles/dashboard-theme.css | src/styles/theme-variables.css |
| Fuentes | src/app/layout.tsx y src/styles/base.css | src/app/layout.tsx y src/styles/base.css |
| Textos que nombran el producto | messages/<namespace>/<locale>.json | src/config/brand.config.ts |
yarn dev muestra un cambio al instante. Una versión de producción compila la marca dentro, así que vuelve a ejecutar yarn build, o docker compose up --build para el paquete Full Stack.
El nombre en el sitio para estudiantes
Las rutas están dentro de frontend/.
| Ajuste | Dónde aparece |
|---|---|
SITE.name en src/config/site.ts | La pestaña del navegador (Page | Name), las vistas previas al compartir, el nombre de la aplicación instalada y los datos estructurados que leen los buscadores. |
SITE.description y SITE.keywords | La meta descripción, las vistas previas al compartir y la descripción de la aplicación instalada. |
SITE.twitterHandle | Las etiquetas twitter:site y twitter:creator de la tarjeta para compartir de cada página. Escribe el usuario sin @; una cadena vacía omite ambas etiquetas. |
SITE.social | El pie de página y el menú móvil. Escribe nombres de usuario, no URL. Un nombre de usuario vacío elimina ese enlace. |
BRAND_CONFIG en src/config/brand.config.ts | El panel del estudiante: shortName junto al símbolo en la barra lateral, y name, version y company en su pie de página. Cada uno tiene un valor en y uno ar. |
La dirección pública del sitio viene de NEXT_PUBLIC_SITE_URL, no de estos archivos.
El nombre también aparece en los textos: la línea de copyright del pie de página, el nombre accesible del logotipo (brand.logoLabel en messages/layouts), las páginas de inicio y de información, las páginas de inicio de sesión y las páginas legales. Encuentra todas las apariciones en ambos idiomas:
frontendgrep -rn "Learnio" messages
grep -rn "ليرنيو" messages- Hay un solo texto escrito en el código: el hashtag
LearnioLMSensrc/components/ui/ShareModal.tsx. - Los términos y la política de privacidad en
messages/legalincluyen datos de contacto de ejemplo (legal@learnio.com,privacy@learnio.com, una dirección en Dubái). Sustitúyelos por los tuyos antes de pasar a producción.
El nombre en el panel de administración
Todo está en BRAND_CONFIG, en admin-dashboard/src/config/brand.config.ts. Los campos de texto tienen un valor en y uno ar.
| Campo | Dónde aparece |
|---|---|
name | Los títulos de las páginas (Page | Name), el nombre del sitio en la vista previa al compartir y el pie de página del panel. |
shortName | Junto al símbolo en la parte superior de la barra lateral, en mayúsculas, y junto al símbolo en la tarjeta de inicio de sesión. Que sea corto: un nombre largo se corta con puntos suspensivos. |
company | El pie del panel y la línea de copyright bajo las páginas de inicio de sesión, que getCopyrightText construye con el año y este nombre. |
version | El pie de página del panel. |
logo.icon | El símbolo de la parte superior de la barra lateral y de la tarjeta de inicio de sesión. |
meta | El título, la descripción, las palabras clave y el autor predeterminados, y las imágenes para compartir. |
domain.url | La base para los enlaces absolutos de los metadatos. Viene como https://yourdomain.com: pon la propia dirección del panel de administración. |
logo.alt | El nombre accesible del logotipo en las páginas de inicio de sesión. |
theme, manifest | Los colores del navegador y de la aplicación instalada, y los iconos de la aplicación instalada, más abajo. |
links, contact | Solo los datos estructurados de la cabecera de la página. Nada visible los lee. |
Todos los lugares que nombran el producto leen BRAND_CONFIG, así que cambiar el nombre ahí cambia a la vez la barra lateral, la tarjeta de inicio de sesión, los dos pies de página y los títulos de las páginas. Los archivos de mensajes del panel no contienen el nombre del producto: la frase de la línea de copyright es una traducción (layouts.footer.copyright) en la que el nombre se rellena desde la configuración.
Archivos del logotipo
El cambio más sencillo es sustituir cada archivo por el tuyo, con la misma ruta y el mismo nombre. Usa un PNG con fondo transparente.
| Aplicación | Archivo | Tamaño | Dónde aparece |
|---|---|---|---|
| Sitio para estudiantes | public/assets/brand/learnio-wordmark.png | 986 × 293 | La barra de navegación, el menú móvil, el pie de página y las páginas de inicio de sesión, en ambos temas. |
| Sitio para estudiantes | public/assets/brand/learnio-mark.png | 512 × 474 | La barra lateral del panel del estudiante. |
| Panel de administración | public/assets/brand/learnio-mark.png | 512 × 474 | La barra lateral y la tarjeta de inicio de sesión, mediante logo.icon. También la imagen para compartir por defecto, más abajo. |
| Panel de administración | public/assets/images/logo-for-lightmode.png y logo-for-darkmode.png | 986 × 293 | La barra superior de las páginas de inicio de sesión, un archivo por tema. |
- El sitio para estudiantes muestra un mismo logotipo de texto en páginas claras y oscuras, así que elige un diseño que se lea bien en ambas.
- En el panel de administración, los dos archivos de tema se eligen con
--logo-bg-imageensrc/styles/theme-variables.css. Vienen con la misma imagen. - La copia de
learnio-wordmark.pngdel panel de administración no la usa ninguna página.
Para usar un archivo con otro nombre en el panel, apunta logo.icon de BRAND_CONFIG a él. Si tu diseño tiene otra forma, actualiza el tamaño declarado para que no se deforme: el width y el height de ASSETS en src/components/ui/BrandLogo.tsx del sitio para estudiantes, y width={512} y height={474} en src/layouts/dashboard/sidebar/components/SidebarBrand.tsx (en ambas aplicaciones) y en src/layouts/auth/components/FormPanel.tsx del panel.
Favicon, iconos de la aplicación e imágenes para compartir
Next.js encuentra los archivos de src/app/ por su nombre y escribe las etiquetas de la página para ellos, así que sustituye los archivos y conserva sus nombres.
| Aplicación | Archivo | Tamaño | Se usa para |
|---|---|---|---|
| Ambos | src/app/favicon.ico | Varios tamaños en un solo archivo | La pestaña del navegador |
| Ambos | src/app/icon.png | 512 × 512 | El icono del navegador |
| Ambos | src/app/apple-icon.png | 180 × 180 | La pantalla de inicio de iOS |
| Sitio para estudiantes | public/icons/icon-192.png, public/icons/icon-512.png | Cuadrados de 192 y 512 | La aplicación instalada. El de 512 también es el logotipo en los datos estructurados. |
| Sitio para estudiantes | public/icons/icon-maskable-512.png | 512 × 512 | Android, que puede recortarlo en un círculo. Mantén el símbolo bien alejado de los bordes. |
| Sitio para estudiantes | src/app/opengraph-image.png, src/app/twitter-image.png | 1200 × 630 | Vistas previas de enlaces |
El panel tiene un único manifest de aplicación web, servido en /manifest.webmanifest desde src/app/manifest.ts, que lee manifest de BRAND_CONFIG:
manifest.iconsenumera los iconos de la aplicación instalada:/icon.png(512 × 512) y/apple-icon.png(180 × 180), los dos archivos desrc/app/. Sustituir esos archivos cambia a la vez el icono del navegador y el de la aplicación instalada. Si apuntas una entrada a otro archivo, indica su tamaño real.meta.ogImageymeta.twitterImageson las vistas previas de los enlaces,/assets/brand/learnio-mark.pngpor defecto. Los metadatos declaran la imagen como 512 × 474 y usan la tarjeta pequeñasummary, así que una sustituta de otro tamaño necesita cambiar también elwidthy elheightdesrc/app/layout.tsx.- El panel pide a los buscadores que no lo indexen, en los metadatos de la página y en
public/robots.txt: es una herramienta del personal, no una página pública.
Colores en el sitio para estudiantes
Las páginas públicas leen sus colores de variables CSS en src/styles/theme-variables.css: los valores claros bajo :root y los oscuros bajo .dark. El naranja de la marca es #FF6A3D.
| Variable | Qué colorea |
|---|---|
--primaryColor, --primaryColorHover, --primaryColorLight | Los botones, los enlaces, los estados activos y el tono pálido detrás de ellos. |
--brand-start, --brand-end | Las dos tintas de la marca: naranja para las acciones y amarillo para el progreso y los precios. Se vuelven a definir bajo .dark. |
--brand-start-ink, --brand-end-ink, --brand-figure-ink | Versiones más oscuras de los mismos colores para el texto, para que siga siendo legible sobre una página clara. |
--brand-action-hover, --brand-dark-pink | El hover del botón relleno, y un nombre antiguo del relleno principal. |
--background, --surface, --text, --border | La página, las tarjetas, el texto y las líneas. |
- El panel del estudiante con sesión iniciada usa la paleta del panel de administración, copiada en
src/styles/dashboard-theme.cssy limitada al panel. Su naranja es#FF8A00. La copia se mantiene a mano: cuando cambie un color entheme-variables.cssdel panel de administración, cámbialo también en este archivo. - Algunas ilustraciones escriben el naranja directamente en lugar de usar una variable: el perfil del instructor y los pasos "How it works" de la página de inicio. Busca
FF6A3Densrc/features. - El color que el navegador pinta alrededor de la página (la barra de direcciones en el móvil) es
SITE.browserChromeensrc/config/site.ts, un valor por tema, cada uno igual al fondo de página de ese tema. Los colores de la aplicación instalada sonSITE.themeColorySITE.backgroundColoren el mismo archivo.
Colores en el panel de administración
Todos los colores son variables CSS en src/styles/theme-variables.css, los claros bajo :root y los oscuros bajo .dark. El naranja de la marca es --primaryColor, #ff8a00 en ambos temas, con --primaryColorHover para su hover.
- Los tonos del naranja están escritos como valores propios: la familia
--accent-*, la familia--chip-*y--btn-primary-fill, que es#ff6a3den el tema claro. Para cambiar el color de la marca, buscaff8a00,255, 138, 0yff6a3den el archivo y ajusta los tonos que tienen al lado. - Aparte de los colores del navegador que se indican más abajo, este archivo es el único lugar donde el panel de administración escribe el naranja. Ningún componente lo tiene escrito en el código.
- Los colores de la interfaz del navegador son
theme.lightytheme.darkenBRAND_CONFIG. La aplicación instalada usamanifest.themeColorymanifest.backgroundColor.
Fuentes
Ambas aplicaciones cargan Inter para el inglés e IBM Plex Sans Arabic para el árabe mediante next/font/google en src/app/layout.tsx, que las sirve desde tu propio dominio. src/styles/base.css cambia a la fuente árabe cuando el idioma de la página es ar.
| Aplicación | Variable de la fuente latina | Variable de la fuente árabe |
|---|---|---|
| Sitio para estudiantes | --font-inter | --font-ibm-plex-arabic |
| Panel de administración | --font-sans-latin | --font-sans-arabic |
Para cambiar una fuente, importa otra de next/font/google y conserva su nombre de variable, para que las hojas de estilos la usen sin cambios. En el sitio para estudiantes:
import { IBM_Plex_Sans_Arabic, Manrope } from "next/font/google";
const inter = Manrope({
subsets: ["latin"],
display: "swap",
variable: "--font-inter",
});Una fuente que no es variable necesita una lista weight, como la tiene la árabe. El src/styles/base.css del sitio para estudiantes también indica 'Inter' como alternativa; actualízalo si cambias el nombre de la variable.
Correos electrónicos y la API
- Remitente:
MAIL_FROMenback-end/.enves el nombre y la dirección desde los que llega cada correo, por ejemploLearnio <noreply@example.com>. - Nombre: los emails nombran el producto mediante el marcador
{site}desrc/i18n/translations/<locale>/mail.json, que se rellena con el ajustesite_name. Cámbialo en la pestaña App Settings de Settings del panel de administración; se aplica al siguiente email que se envíe. - Respuestas: el ajuste
support_emailes la dirección de respuesta de todos los emails, para que una respuesta llegue a una persona y no al remitente que no admite respuestas. - Redacción: los asuntos y los cuerpos están en
src/i18n/translations/en/mail.jsonysrc/i18n/translations/ar/mail.json. - Aspecto: los correos no llevan logotipo. Sus colores están escritos en
src/modules/mail/templates/layout.ts(INK,MUTED,PAGE,CARD), porque los clientes de correo descartan las hojas de estilos. - Los enlaces de los correos abren el sitio para estudiantes en
FRONTEND_URL.
La pestaña App Settings no cambia la marca de las aplicaciones
site_name y support_email solo cambian los emails. El sitio para estudiantes y el panel de administración toman su nombre, logotipo y colores de los archivos anteriores, así que cámbialos también.