Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Software de agendamiento y gestión para negocios de servicios (salones, barberías, spas, clínicas, academias). Reservas 24/7, recordatorios por WhatsApp y finanzas integradas.
npm run dev # desarrollo
npm run build # producción
npm run lint # linting
Abre http://localhost:3000 para ver el resultado.
Los artículos del blog son archivos .mdx ubicados en src/content/blog/. Crear uno nuevo es suficiente para que aparezca automáticamente en /blog, en el sitemap y sea indexable por Google.
Crea un archivo en src/content/blog/ con un nombre en kebab-case que sea la URL del artículo:
src/content/blog/mi-nuevo-articulo.mdx
→ agenditapp.com/blog/mi-nuevo-articulo
Cada archivo debe comenzar con este bloque YAML entre ---:
---
title: "Título del artículo (H1 y title tag)"
description: "Descripción para Google y Open Graph. 150–160 caracteres idealmente."
publishedAt: "2026-04-08"
keywords:
- palabra clave principal
- segunda palabra clave
- tercera palabra clave
readingTime: "7 min"
category: "Gestión de Negocios"
excerpt: "Resumen de 1–2 frases que aparece en la card del listado /blog."
---
Categorías disponibles (afectan el color del badge):
| Valor | Color |
|---|---|
Gestión de Negocios | Azul |
Comparativas | Morado |
WhatsApp & Comunicación | Verde |
Guías Prácticas | Ámbar |
En inglés las categorías equivalentes son Business Management, Comparisons, WhatsApp & Communication y Practical Guides.
Para añadir una categoría nueva, agrégala en el objeto CATEGORY_COLORS de src/app/[locale]/blog/BlogList.tsx.
Debajo del frontmatter escribe el artículo en Markdown estándar. Los encabezados H1 los genera automáticamente la plantilla a partir del title — empieza el contenido desde ## H2.
## Por qué esto importa
Párrafo normal con **negrita** y [enlace interno](/sectores/salones-belleza).
### Subtítulo H3
- Elemento de lista
- Otro elemento
Dentro del MDX puedes usar estos dos componentes sin importar nada:
<CtaBox> — Bloque de llamada a la acción<CtaBox
title="¿Listo para empezar?"
body="Solicita una demo gratuita y configura tu agenda en 30 minutos."
/>
Renderiza un bloque degradado azul con botón de demo. Úsalo una vez por artículo, cerca del final.
<TipBox> — Recuadro de consejo o dato destacado<TipBox>
**Dato clave:** El 98% de los mensajes de WhatsApp se abren en menos de 5 minutos.
</TipBox>
Renderiza un recuadro azul claro con ícono 💡. Ideal para estadísticas, advertencias o consejos que quieras resaltar.
Las tablas Markdown estándar se renderizan con el estilo del sistema:
| App | WhatsApp nativo | Precio |
|---|---|---|
| AgenditApp | ✅ | Accesible |
| Competidor | ❌ | Alto |
/blog — listado ordenado por publishedAt (más reciente primero)/blog/[slug] — página individual con schema Article para Google/sitemap.xml — indexado dinámicamente sin cambios adicionalesNo necesitas tocar ningún otro archivo.
Las traducciones viven en src/content/blog/en/, con su propio slug en inglés:
src/content/blog/en/salon-scheduling-software-cost.mdx
→ agenditapp.com/en/blog/salon-scheduling-software-cost
El frontmatter es el mismo, con todo traducido (incluida la category, ver equivalencias arriba) y un campo extra que apunta al slug original en español:
translationOf: "cuanto-cuesta-software-agendamiento-salon"
Con eso, ambas versiones se enlazan entre sí con hreflang, el artículo aparece en /en/blog y en el sitemap. Los artículos sin traducción no existen en /en/blog/* (devuelven 404).
En el contenido en inglés, enlaza a /en/blog/<slug-en-inglés>, /en/pricing, /en/features o /en/industries. Las páginas de sector (/sectores/*) y /vs/* solo existen en español. Las tablas <CompareApps />, <CompareConsultorios />, <CompareWhatsApp /> y <ComparePricing /> se renderizan solas en el idioma del artículo (datos en src/app/[locale]/blog/[slug]/compareTables.ts).
title debe contener la palabra clave principal (idealmente al inicio)description debe ser única por artículo, entre 150 y 160 caracteres/sectores/salones-belleza, /sectores/barberias, etc.| Token | HEX | Clase Tailwind | Uso |
|---|---|---|---|
| Brand Primary | #1D4ED8 | bg-brand / text-brand | Botones principales, links activos, iconos clave |
| Brand Hover | #2563EB | bg-brand-hover | :hover en botones, estados activos y seleccionados |
| Token | HEX | Clase Tailwind | Uso |
|---|---|---|---|
| Fondo Principal | #F8FAFC | bg-bg-main | Fondo general del sitio y dashboard |
| Fondo Card | #FFFFFF | bg-bg-card | Cards y módulos, con shadow-card |
Shadow estándar para cards:
box-shadow: 0 8px 24px rgba(0,0,0,0.05)
| Token | HEX | Clase Tailwind | Uso |
|---|---|---|---|
| Título | #0F172A | text-heading | H1, H2, H3 |
| Cuerpo | #334155 | text-body | Párrafos y texto normal |
| Secundario | #64748B | text-muted | Labels, captions, texto de apoyo |
| Token | HEX | Clase Tailwind | Uso |
|---|---|---|---|
| Éxito | #10B981 | text-success / bg-success | Cita confirmada, pago aprobado, acción exitosa |
| Error | #EF4444 | text-danger / bg-danger | Error de pago, campo requerido, eliminaciones |
Poppins — cargada vía next/font/google, disponible globalmente.
| Peso | Nombre | Uso |
|---|---|---|
| 400 | Regular | Texto normal, párrafos |
| 500 | Medium | Botones, subtítulos |
| 600 | SemiBold | Títulos H1–H3, logo textual |
Nunca uses Light (300) ni Black (900). Mantén limpieza visual.
| Variable CSS | Valor | Uso |
|---|---|---|
--radius-sm | 10px | Inputs, chips, badges |
--radius-md | 12px | Botones, cards pequeñas |
--radius-lg | 14px | Cards grandes, modales, paneles |
Definidas en globals.css para uso directo:
<!-- Botón primario -->
<button class="btn-primary">Solicitar Demo</button>
<!-- Card estándar -->
<div class="card p-6">...</div>
Disponibles como variables CSS en todo el proyecto:
var(--brand) /* #1D4ED8 */
var(--brand-hover) /* #2563EB */
var(--bg-main) /* #F8FAFC */
var(--bg-card) /* #FFFFFF */
var(--text-heading) /* #0F172A */
var(--text-body) /* #334155 */
var(--text-muted) /* #64748B */
var(--success) /* #10B981 */
var(--danger) /* #EF4444 */
var(--shadow-card) /* 0 8px 24px rgba(0,0,0,0.05) */
var(--radius-sm) /* 10px */
var(--radius-md) /* 12px */
var(--radius-lg) /* 14px */
AgenditApp comunica: tecnología moderna · producto escalable · claridad · startup confiable · diseño cuidado.
No comunica: software viejo · herramienta improvisada · app informal.