{"repo": "antonyayansi/genz-emprende", "files": {"README.md": {"0434c358fc8e373712e350a502629d628b2d0c58": {"t": 1785746393.531997, "n": 2630, "h": "8d3c94c0890f8ab5", "c": "# RUTA FORMAL · Crece, Formalízate, Emprende v2\n\nPlataforma LMS para el programa de capacitación y formalización de jóvenes\nindependientes de **25 a 29 años en Lima Metropolitana**.\n\n> Vue 3 + Vite + TypeScript · Pinia · Tailwind · shadcn-vue · Supabase · DeepSeek (opcional)\n\n---\n\n## Qué incluye\n\n| Página | Ruta | Descripción |\n|--------|------|-------------|\n| Landing | `/` | Hero, beneficios, dos rutas, 6 meses, testimonios |\n| Inscripción | `/inscripcion` | Chatbot (4 preguntas) + formulario de perfilamiento |\n| Dashboard | `/dashboard` | 6 módulos, progreso, entregables, hitos |\n| Módulos | `/cursos` | Catálogo de los 6 meses del programa |\n| Biblioteca | `/recursos` | Plantillas, SUNAT, Verifica tu Chamba, CIFA, etc. |\n| Admin | `/admin` | Panel del gestor público (solo rol `admin`) |\n\n---\n\n## 1. Instalación\n\n```bash\nnpm install\ncp .env.example .env\n```\n\n## 2. Variables de entorno (`.env`)\n\n```env\n# Obligatorio — Supabase Dashboard → Project Settings → API\nVITE_SUPABASE_URL=https://TU-PROYECTO.supabase.co\nVITE_SUPABASE_ANON_KEY=tu-clave-anon-publica\n\n# Opcional — Chatbot con DeepSeek (https://platform.deepseek.com)\nVITE_DEEPSEEK_API_KEY=\nVITE_DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions\nVITE_DEEPSEEK_MODEL=deepseek-chat\n```\n\nSin `VITE_DEEPSEEK_API_KEY` el chatbot funciona en **modo guiado** (preguntas predefinidas).\n\n> Google OAuth se configura en **Supabase Dashboard**, no en `.env`.\n\n## 3. Base de datos (Supabase SQL Editor)\n\nEjecuta en este orden:\n\n1. `supabase/schema.sql`\n2. `supabase/migration-ruta-formal.sql`\n3. `supabase/seed-ruta-formal.sql`\n\n## 4. Crear un administrador\n\nTras registrarte con Google, ejecuta en SQL Editor (reemplaza el email):\n\n```sql\nupdate public.profiles\nset role = 'admin'\nwhere id = (\n select id from auth.users where email = 'tu-email@gmail.com'\n);\n```\n\n## 5. Google OAuth (manual)\n\n1. [Google Cloud Console](https://console.cloud.google.com/) → OAuth Client ID (Web)\n2. Supabase → Authentication → Providers → Google\n3. Supabase → URL Configuration:\n - Site URL: `http://localhost:5173`\n - Redirect: `http://localhost:5173/auth/callback`\n\n## 6. Ejecutar\n\n```bash\nnpm run dev # http://localhost:5173\nnpm run build # producción\n```\n\n---\n\n## Flujo del participante\n\n1. Landing → **Quiero formalizarme**\n2. Chatbot (4 preguntas) → Formulario de perfilamiento\n3. Login con Google → Confirmación automática\n4. Dashboard con 6 módulos mensuales\n5. Entregables por mes → Revisión desde panel admin\n\n## Paleta de diseño\n\n- Azul principal `#1A3A5C` · Verde `#2E7D32` · Naranja CTA `#E67E22`\n- Tipografía: Montserrat (títulos) + Inter (cuerpo)\n"}, "1024e82963d057e6fd8334e2fc53e9d7b62c5a51": {"t": 1785763230.0261955, "n": 2627, "h": "c67556d2499b8cc8", "c": "# RUTA FORMAL · Crece, Formalízate, Emprende\n\nPlataforma LMS para el programa de capacitación y formalización de jóvenes\nindependientes de **25 a 29 años en Lima Metropolitana**.\n\n> Vue 3 + Vite + TypeScript · Pinia · Tailwind · shadcn-vue · Supabase · DeepSeek (opcional)\n\n---\n\n## Qué incluye\n\n| Página | Ruta | Descripción |\n|--------|------|-------------|\n| Landing | `/` | Hero, beneficios, dos rutas, 6 meses, testimonios |\n| Inscripción | `/inscripcion` | Chatbot (4 preguntas) + formulario de perfilamiento |\n| Dashboard | `/dashboard` | 6 módulos, progreso, entregables, hitos |\n| Módulos | `/cursos` | Catálogo de los 6 meses del programa |\n| Biblioteca | `/recursos` | Plantillas, SUNAT, Verifica tu Chamba, CIFA, etc. |\n| Admin | `/admin` | Panel del gestor público (solo rol `admin`) |\n\n---\n\n## 1. Instalación\n\n```bash\nnpm install\ncp .env.example .env\n```\n\n## 2. Variables de entorno (`.env`)\n\n```env\n# Obligatorio — Supabase Dashboard → Project Settings → API\nVITE_SUPABASE_URL=https://TU-PROYECTO.supabase.co\nVITE_SUPABASE_ANON_KEY=tu-clave-anon-publica\n\n# Opcional — Chatbot con DeepSeek (https://platform.deepseek.com)\nVITE_DEEPSEEK_API_KEY=\nVITE_DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions\nVITE_DEEPSEEK_MODEL=deepseek-chat\n```\n\nSin `VITE_DEEPSEEK_API_KEY` el chatbot funciona en **modo guiado** (preguntas predefinidas).\n\n> Google OAuth se configura en **Supabase Dashboard**, no en `.env`.\n\n## 3. Base de datos (Supabase SQL Editor)\n\nEjecuta en este orden:\n\n1. `supabase/schema.sql`\n2. `supabase/migration-ruta-formal.sql`\n3. `supabase/seed-ruta-formal.sql`\n\n## 4. Crear un administrador\n\nTras registrarte con Google, ejecuta en SQL Editor (reemplaza el email):\n\n```sql\nupdate public.profiles\nset role = 'admin'\nwhere id = (\n select id from auth.users where email = 'tu-email@gmail.com'\n);\n```\n\n## 5. Google OAuth (manual)\n\n1. [Google Cloud Console](https://console.cloud.google.com/) → OAuth Client ID (Web)\n2. Supabase → Authentication → Providers → Google\n3. Supabase → URL Configuration:\n - Site URL: `http://localhost:5173`\n - Redirect: `http://localhost:5173/auth/callback`\n\n## 6. Ejecutar\n\n```bash\nnpm run dev # http://localhost:5173\nnpm run build # producción\n```\n\n---\n\n## Flujo del participante\n\n1. Landing → **Quiero formalizarme**\n2. Chatbot (4 preguntas) → Formulario de perfilamiento\n3. Login con Google → Confirmación automática\n4. Dashboard con 6 módulos mensuales\n5. Entregables por mes → Revisión desde panel admin\n\n## Paleta de diseño\n\n- Azul principal `#1A3A5C` · Verde `#2E7D32` · Naranja CTA `#E67E22`\n- Tipografía: Montserrat (títulos) + Inter (cuerpo)\n"}, "c5626d25c7785da74cd502de62fbb11840bec3ba": {"t": 1785763232.4809225, "n": 6140, "h": "c7430bcc4181a442", "c": "# Generación Z emprende\n\nPlataforma de cursos para la **formalización del trabajo** pensada para jóvenes emprendedores.\nAprende a registrar tu negocio, facturar, pagar impuestos sin miedo, cotizar seguridad\nsocial y ordenar tus finanzas — todo a tu ritmo.\n\n> Construido con **Vue 3 + Vite + TypeScript**, **Vue Router**, **Pinia**, **shadcn-vue** (sobre\n> reka-ui), **Tailwind CSS**, **vue-sonner** y **Supabase** (auth con Google + base de datos).\n\n---\n\n## Identidad de diseño\n\nNo es un tema genérico de IA. La interfaz usa una identidad propia y minimalista:\n\n- **Paleta \"papel cálido + ámbar/ember\"**: fondo crema, tinta casi negra y un único acento naranja.\n- **Tipografía con carácter**: `Space Grotesk` para títulos, `Inter` para texto.\n- Detalles: subrayado tipo trazo (`.ink-underline`), retícula de puntos (`.dot-grid`),\n micro-animaciones y un modo oscuro listo (variables CSS en `src/assets/index.css`).\n\n---\n\n## 1. Requisitos\n\n- Node.js 20+ (probado con 22)\n- Una cuenta de [Supabase](https://supabase.com)\n\n## 2. Instalación\n\n```bash\nnpm install\n```\n\n## 3. Variables de entorno\n\nYa hay un archivo `.env` con las credenciales del proyecto. Si vas a usar **tu propio**\nproyecto de Supabase, copia el ejemplo y reemplaza los valores:\n\n```bash\ncp .env.example .env\n```\n\n```env\nVITE_SUPABASE_URL=https://TU-PROYECTO.supabase.co\nVITE_SUPABASE_ANON_KEY=tu-clave-anon-publica\n```\n\n> Solo se usa la clave **anon** (pública) en el frontend. **Nunca** pongas la `service_role`\n> en variables `VITE_*`: esa clave es secreta y solo debe usarse en el servidor.\n\n## 4. Configurar la base de datos (Supabase)\n\nEn el **Dashboard de Supabase → SQL Editor**, ejecuta en este orden:\n\n1. `supabase/schema.sql` → crea tablas, RLS, políticas y el trigger que crea el perfil\n automáticamente cuando alguien entra con Google.\n2. `supabase/seed.sql` → carga el catálogo de 6 cursos con módulos y lecciones reales.\n\nAmbos archivos son **idempotentes** (puedes correrlos de nuevo sin duplicar datos).\n\n## 5. Activar el login con Google ⚠️ (paso manual obligatorio)\n\nEl código ya implementa el flujo OAuth; solo falta habilitar el proveedor:\n\n### a) Crear credenciales en Google Cloud\n\n1. Entra a [Google Cloud Console](https://console.cloud.google.com/) → crea/usa un proyecto.\n2. **APIs & Services → OAuth consent screen**: configúralo (tipo *External*) y publícalo.\n3. **APIs & Services → Credentials → Create Credentials → OAuth client ID**.\n - Tipo: *Web application*.\n - **Authorized JavaScript origins**:\n - `http://localhost:5173`\n - tu dominio de producción (ej. `https://tu-app.com`)\n - **Authorized redirect URIs** (¡importante!): la URL de callback de Supabase:\n - `https://aepayhmrqziwingshfpx.supabase.co/auth/v1/callback`\n *(reemplaza por la URL de tu proyecto si usas otro)*\n4. Copia el **Client ID** y el **Client Secret**.\n\n### b) Habilitar Google en Supabase\n\n1. Dashboard de Supabase → **Authentication → Providers → Google**.\n2. Activa el proveedor y pega el **Client ID** y **Client Secret**. Guarda.\n\n### c) Configurar las URLs de redirección de la app\n\n1. Dashboard → **Authentication → URL Configuration**.\n2. **Site URL**: `http://localhost:5173` (y tu dominio en producción).\n3. **Redirect URLs**: agrega\n - `http://localhost:5173/auth/callback`\n - `https://TU-DOMINIO/auth/callback`\n\nLa app redirige a `/auth/callback` tras el login (ver `src/stores/auth.ts` y\n`src/views/AuthCallbackView.vue`).\n\n## 6. Ejecutar\n\n```bash\nnpm run dev # entorno de desarrollo → http://localhost:5173\nnpm run build # build de producción (typecheck + bundle)\nnpm run preview # previsualizar el build\nnpm run typecheck # solo verificación de tipos\n```\n\n---\n\n## Estructura del proyecto\n\n```\nsrc/\n├─ assets/index.css # design system (variables, capas Tailwind)\n├─ components/\n│ ├─ brand/ # Logo, ícono de Google\n│ ├─ layout/ # Navbar, Footer\n│ ├─ ui/ # primitivos estilo shadcn-vue (Button, Card, ...)\n│ └─ CourseCard.vue\n├─ lib/\n│ ├─ supabase.ts # cliente de Supabase\n│ └─ utils.ts # cn(), helpers de formato\n├─ router/index.ts # rutas + guard de autenticación\n├─ stores/\n│ ├─ auth.ts # sesión, perfil, login/logout con Google\n│ └─ courses.ts # catálogo, inscripciones y progreso\n├─ types/database.ts # tipos del dominio\n└─ views/ # Home, Cursos, Detalle, Lección, Dashboard, Login, ...\nsupabase/\n├─ schema.sql # tablas + RLS + trigger de perfiles\n└─ seed.sql # contenido de ejemplo\n```\n\n## Modelo de datos\n\n| Tabla | Para qué sirve |\n| ------------------ | -------------------------------------------------------- |\n| `profiles` | Perfil del usuario (se crea solo al registrarse) |\n| `courses` | Cursos publicados |\n| `modules` | Módulos de cada curso |\n| `lessons` | Lecciones (contenido en texto/markdown ligero) |\n| `enrollments` | Inscripción de un usuario a un curso |\n| `lesson_progress` | Lecciones marcadas como completadas |\n\nTodas las tablas tienen **Row Level Security**: el catálogo es de lectura pública, pero\nlas inscripciones y el progreso solo los ve y modifica su dueño.\n\n## Funcionalidades\n\n- Landing con identidad propia, catálogo con búsqueda y filtros por nivel.\n- Detalle de curso con temario, inscripción gratuita y barra de progreso.\n- Reproductor/lector de lecciones con navegación lateral y marcado de avance.\n- Panel del estudiante con métricas y \"mis cursos\".\n- Autenticación con Google, sesión persistente y guard de rutas.\n- Notificaciones con vue-sonner.\n\n---\n\n## ¿Qué falta configurar? (resumen)\n\n- [ ] Ejecutar `supabase/schema.sql` y `supabase/seed.sql` en el SQL Editor.\n- [ ] Habilitar el proveedor **Google** en Authentication → Providers.\n- [ ] Configurar **Site URL** y **Redirect URLs** (incluyendo `/auth/callback`).\n\nCon esos tres pasos, `npm run dev` queda 100% funcional.\n"}}}}