Distribuidor Telcel Premium — Plataforma corporativa de alto rendimiento con Astro, NestJS, React y Gemini AI.
Este proyecto utiliza una arquitectura monorepo con NPM Workspaces para separar claramente las responsabilidades entre Frontend y Backend.
linea-digital-astro/
├── apps/
│ ├── frontend/ # 🌐 Sitio Web (Astro + React)
│ └── backend/ # 🔧 API (NestJS)
├── package.json # Monorepo root con workspaces
└── README.md # Este archivo
| Aplicación | Tecnología | Puerto | Responsabilidad |
|---|---|---|---|
| Frontend | Astro + React + Tailwind | 4321 |
UI, SEO, UX, páginas estáticas |
| Backend | NestJS + TypeScript | 3000 |
APIs, AI, Email, seguridad |
- ❌ API Keys de Gemini/Brevo expuestas en cliente
- ❌ Rate limits imposibles de controlar
- ❌ Sin documentación de APIs
- ❌ Lógica duplicada entre páginas
- ✅ Seguridad: Claves sensibles solo en el servidor
- ✅ Escalabilidad: Backend puede escalar independientemente
- ✅ Documentación: Swagger automático en
/api/docs - ✅ Rendimiento: Frontend estático + API bajo demanda
- ✅ Desarrollo: Hot reload independiente para cada app
- Node.js v18+
- NPM 9+ (Soporte Workspaces)
git clone https://github.com/herwingx/linea-digital-astro.git
cd linea-digital-astro
npm installFrontend (apps/frontend/.env):
PUBLIC_API_URL=http://localhost:3000
CONTENTFUL_SPACE_ID="tu_space_id"
CONTENTFUL_ACCESS_TOKEN="tu_token"
GOOGLE_API_KEY="tu_maps_key"
GOOGLE_PLACE_ID="tu_place_id"Backend (apps/backend/.env):
CONTENTFUL_SPACE_ID="tu_space_id"
CONTENTFUL_ACCESS_TOKEN="tu_token"
GEMINI_API_KEY="tu_gemini_key"
EMAIL_HOST="mail.tudominio.com"
EMAIL_PORT="587"
EMAIL_USER="usuario"
EMAIL_PASS="password"
EMAIL_FROM="noreply@tudominio.com"
EMAIL_TO="destino@tudominio.com"
BREVO_API_KEY="xkeysib-..."
BREVO_LIST_ID="3"# 🚀 Iniciar TODO (Frontend + Backend simultáneamente)
npm run dev
# Solo Frontend
npm run dev:frontend
# Solo Backend
npm run dev:backendgraph TD
User[👤 Usuario] -->|Visita| Astro[🌐 Frontend Astro:4321]
subgraph "Frontend"
Astro -->|SSG Build| Contentful1[📦 Contentful]
Astro -->|Chatbot/Forms| API
end
subgraph "Backend :3000"
API[🔧 NestJS API]
API -->|Chat| Gemini[🤖 Gemini AI]
API -->|Knowledge| Contentful2[📦 Contentful]
API -->|Email| SMTP[📧 Nodemailer]
API -->|Newsletter| Brevo[📬 Brevo]
end
apps/
├── backend/
│ └── src/
│ ├── chat/ # 🤖 Chatbot Lía (Gemini AI)
│ ├── contentful/ # 📦 CMS Endpoints
│ ├── email/ # 📧 Contact + Newsletter
│ └── main.ts # Bootstrap + Swagger
│
└── frontend/
└── src/
├── components/ # UI Components
├── layouts/ # Base layouts
├── lib/ # Chatbot client
├── pages/ # Rutas Astro
├── services/ # Contentful client (SSG)
└── styles/ # Tailwind + CSS
| Método | Ruta | Descripción |
|---|---|---|
POST |
/chat |
Chatbot Lía con Gemini AI |
| Método | Ruta | Descripción |
|---|---|---|
POST |
/email/send |
Formulario de contacto |
POST |
/email/subscribe |
Newsletter (Brevo) |
| Método | Ruta | Descripción |
|---|---|---|
GET |
/content/promos |
Promociones activas |
GET |
/content/planes/libre |
Planes Libre |
GET |
/content/planes/ultra |
Planes Ultra |
GET |
/content/planes/casa-libre |
Internet en Casa |
GET |
/content/knowledge |
Todo para chatbot |
📘 Documentación Swagger: http://localhost:3000/api/docs
| Comando | Descripción |
|---|---|
npm run dev |
Inicia Frontend + Backend |
npm run dev:frontend |
Solo Frontend (Astro) |
npm run dev:backend |
Solo Backend (NestJS) |
npm run build |
Build de ambos proyectos |
- Astro 5 — SSG/SSR ultrarrápido
- React 18 — Componentes interactivos
- TailwindCSS — Utilidades CSS
- Contentful SDK — Datos en build time
- NestJS 10 — Framework empresarial
- TypeScript — Tipado estricto
- Swagger — Documentación automática
- Google Generative AI — Gemini 1.5 Flash
- Nodemailer — SMTP emails
- Brevo SDK — Marketing automation
Desarrollado por el equipo de tecnología de Línea Digital del Sureste.
Propiedad privada de Línea Digital del Sureste. Todos los derechos reservados.