Epinium Docs — CLAUDE.md
Documentation site built with VitePress 1.x. Source files live under apps/docs/.
Structure
apps/docs/
├── es/ ← Spanish (reference locale, served at root / via rewrites)
├── en/ ← English
├── fr/ ← French
├── it/ ← Italian
├── de/ ← German
├── public/ ← Static assets (favicon, images)
├── scripts/ ← Maintenance scripts
└── .vitepress/
├── config.mts ← Main VitePress config (locales, rewrites, theme)
├── locales/ ← Per-locale nav & sidebar configs (es.ts, en.ts, …)
└── theme/ ← Custom theme: index.ts + custom.css (Epinium brand)The rewrites: { 'es/:path*': ':path*' } in config.mts makes Spanish URLs appear at root (/catalog/ not /es/catalog/) while files live in es/.
Content consistency — MANDATORY
es/ is the reference locale and the single source of truth for all content. Every page must be kept in sync across all 5 locales. The rule is simple:
Any change to one locale must be applied to all other locales in the same operation.
Rules
- ES is the master — make changes to
es/first, then propagate toen/,fr/,it/,de/. - Same file structure — every file in
es/must have an exact counterpart in every other locale folder. - Same page structure — sections (headings), their order, and the number of content items (table rows, list items, etc.) must be identical across locales. Only the language differs.
- Same nav/sidebar — when a page is added, renamed, or removed, update all 5 locale configs in
.vitepress/locales/. - Never edit just one locale — if you only have time or context for one, do them all before finishing the task.
When adding or removing a page
- Add the file to
es/first. - Replicate the same file path to all other locales with translated content.
- Update all nav/sidebar configs in
.vitepress/locales/<lang>.ts. - Run the file check to verify no locale is missing a file:
pnpm check-translationsWhen editing content on an existing page
- Make the change in
es/first. - Apply the equivalent change to the same file in
en/,fr/,it/,de/.- Same sections added/removed
- Same table rows added/removed
- Same list items added/removed
- Run the structure check to verify all locales are consistent:
node scripts/check-consistency.mjs # all files
node scripts/check-consistency.mjs amazon/ # only amazon/ filesLocale links
Each locale uses its own prefix in internal links:
| Locale | Link prefix example |
|---|---|
| es | /catalog/ |
| en | /en/catalog/ |
| fr | /fr/catalog/ |
| it | /it/catalog/ |
| de | /de/catalog/ |
Spanish (root locale) uses bare paths thanks to the rewrites config.
Adding a new locale
- Create
<lang>/folder with all pages translated. - Create
.vitepress/locales/<lang>.tsexporting<lang>Navand<lang>Sidebar. - Add the locale to
config.mtsunderlocales:. - Add the locale to the
LOCALESarray inscripts/check-translations.mjs.
Dev & build commands
# From apps/docs/
pnpm dev # dev server on :8084 (accessible via epinium-front proxy at /docs/)
pnpm build # production build → dist/
pnpm preview # preview built site on :8085
pnpm check-translations # verify all locales have the same files
node scripts/check-consistency.mjs # verify content structure matches across all localesVitePress config — key settings
base: '/'— served at rootrewrites: { 'es/:path*': ':path*' }— Spanish at root URLscleanUrls: true— no.htmlextensionslastUpdated: true— last-modified metadatasitemap: { hostname: 'https://help.epinium.com' }— auto-generates sitemap.xmltransformHead— injects<link rel="alternate" hreflang>for all 5 locales +x-defaulton every pagetransformPageData— injectsog:title,og:description,og:urland<link rel="canonical">on every page- Theme colors defined in
.vitepress/theme/custom.css(Epinium purple gradient)
Mermaid diagrams — vitepress-mermaid-preview
Mermaid diagrams are enabled via the vitepress-mermaid-preview plugin.
MANDATORY: Always include showToolbar: true via frontmatter inside every mermaid code fence:
```mermaid
---
showToolbar: true
---
flowchart TD
A --> B
```This enables the interactive toolbar (zoom, pan, copy, download) on every diagram. Never omit the showToolbar: true frontmatter when writing or editing mermaid diagrams in this docs site.
When documenting flows, processes, architectures, sequences, or any concept that benefits from a visual representation, proactively include a mermaid diagram to complement the text. Always use showToolbar: true.
Real app links — MANDATORY
The SaaS application lives at https://app.epinium.com. Every documentation page that references a section of the app must include a real clickable link so the reader can jump directly to the feature.
Where to add links
- "Acceso desde" / "Access from" lines — the access line below each page title must link to the real app URL.
- Step-by-step instructions — any "Ir a …" / "Go to …" step must wrap the destination in a link.
- First meaningful mention — when a section name (e.g., "dashboard") first appears in prose, it may link to the app.
Route map (epinium-front → app URL)
The frontend app (apps/epinium-front/) defines these routes. Use them as the canonical path after https://app.epinium.com:
| App section | Route | Example link |
|---|---|---|
| Dashboard | /dashboard | [Dashboard](https://app.epinium.com/dashboard) |
| VelaxAI | /chatbot | [VelaxAI](https://app.epinium.com/chatbot) |
| Workflows | /processes/workflows | [Procesos → Workflows](https://app.epinium.com/processes/workflows) |
| Workflow detail | /processes/workflows/:id | — |
| Tasks | /processes/tasks | [Procesos → Tareas](https://app.epinium.com/processes/tasks) |
| Products catalog | /catalog/products | [Catálogo → Productos](https://app.epinium.com/catalog/products) |
| Bulk changes history | /catalog/history-massive-changes | [Catálogo → Historial](https://app.epinium.com/catalog/history-massive-changes) |
| Clusters / Segmentation | /segmentations/clusters | [Segmentaciones → Clusters](https://app.epinium.com/segmentations/clusters) |
| AI Campaigns | /advertising/ai-campaigns | [Publicidad → AI Campaigns](https://app.epinium.com/advertising/ai-campaigns) |
| Campaigns list | /advertising/campaigns | — |
| Forecast / Logistics | /forecast/logistics | [Forecast → Logística](https://app.epinium.com/forecast/logistics) |
| Connections | /settings/connections | [Configuración → Conexiones](https://app.epinium.com/settings/connections) |
| Users | /settings/users | [Configuración → Usuarios](https://app.epinium.com/settings/users) |
| Agents | /settings/agents | [Configuración → Agentes](https://app.epinium.com/settings/agents) |
| Brand | /settings/brand | [Configuración → Marca](https://app.epinium.com/settings/brand) |
| Prompts | /settings/prompts | [Configuración → Prompts](https://app.epinium.com/settings/prompts) |
| AI Instructions | /settings/ai-instructions | [Configuración → Instrucciones IA](https://app.epinium.com/settings/ai-instructions) |
| Custom Data | /settings/personalized-data | [Configuración → Datos personalizados](https://app.epinium.com/settings/personalized-data) |
| Import / Export | /settings/import-export | [Configuración → Exportar](https://app.epinium.com/settings/import-export) |
| Billing / Subscription | /settings/billing/subscription | [Configuración → Facturación](https://app.epinium.com/settings/billing/subscription) |
| Credits | /settings/billing/credits | — |
| Invoices | /settings/billing/invoices | — |
Format
**Acceso desde**: [Procesos → Workflows](https://app.epinium.com/processes/workflows)The link text uses the localized menu path; the URL is always the same app.epinium.com route regardless of locale.