Vision General de la Arquitectura
Sección titulada «Vision General de la Arquitectura»TalentBricksAI es un monorepo con tres directorios principales:
TalentBricksAI/├── app/ # aplicación principal Wasp├── blog/ # Sitio de documentación (Astro + Starlight)└── e2e-tests/ # Tests end-to-end (Playwright)aplicación Principal (app/)
Sección titulada «aplicación Principal (app/)»La aplicación está construida con el framework Wasp, que compila configuración declarativa en una aplicación full-stack completa.
Archivos de configuración Principales
Sección titulada «Archivos de configuración Principales»| Archivo | Proposito |
|---|---|
main.wasp | configuración central: rutas, páginas, auth, operaciones, jobs, APIs |
schema.prisma | Definicion de modelos de base de datos (Prisma) |
Estructura de Directorios
Sección titulada «Estructura de Directorios»app/src/├── auth/ # autenticación (login, signup, etc.)├── courses/ # Sistema de cursos│ ├── components/ # Componentes de cursos│ └── operations.ts # Queries y Actions├── payment/ # Procesamiento de pagos│ └── stripe/ # integración con Stripe├── admin/ # Panel de administración│ └── dashboards/ # Dashboards de admin├── landing-page/ # página de inicio├── user/ # Gestión de usuarios├── file-upload/ # Subida de archivos (S3)├── server/ # Utilidades del servidor├── shared/ # Utilidades compartidas│ └── content/ # Contenido en español└── client/ # Componentes de cliente └── components/ └── ui/ # Componentes ShadCNFlujo de Datos
Sección titulada «Flujo de Datos»┌─────────────────────────────────────────────────────────────┐│ FRONTEND ││ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││ │ Pages │───▶│ useQuery │───▶│ React │ ││ │ (Routes) │ │ useAction │ │ Components │ ││ └─────────────┘ └─────────────┘ └─────────────┘ │└─────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────┐│ WASP OPERATIONS ││ ┌─────────────┐ ┌─────────────┐ ││ │ Queries │ │ Actions │ ││ │ (read-only) │ │ (writes) │ ││ └─────────────┘ └─────────────┘ │└─────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────┐│ PRISMA ORM ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ PostgreSQL │ ││ └─────────────┘ │└─────────────────────────────────────────────────────────────┘Tabla de Rutas
Sección titulada «Tabla de Rutas»Todas las rutas de la aplicación, organizadas por nivel de acceso:
Rutas Públicas (sin autenticación)
Sección titulada «Rutas Públicas (sin autenticación)»| Ruta | Descripción |
|---|---|
/ | Landing page |
/login | Inicio de sesión |
/signup | Registro |
/request-password-reset | Solicitar reset de contraseña |
/password-reset | Confirmar reset de contraseña |
/email-verification | Verificar email |
/courses | Catálogo de cursos (solo visualización) |
/courses/:slug | Detalle de curso (sin ver lecciones) |
/privacy | Política de privacidad |
/terms | Términos de servicio |
/pricing | Página de precios |
/certificate/:code | Verificación pública de certificado |
Rutas Protegidas (requieren login)
Sección titulada «Rutas Protegidas (requieren login)»| Ruta | Descripción |
|---|---|
/courses/:slug/lessons/:id | Lección de curso (requiere inscripción) |
/account | Configuración de cuenta |
/my-progress | Progreso del usuario |
/certificates | Mis certificados |
/checkout/course/:id | Proceso de compra de curso |
Rutas Admin (requieren isAdmin: true)
Sección titulada «Rutas Admin (requieren isAdmin: true)»| Ruta | Descripción |
|---|---|
/admin | Dashboard principal de admin |
/admin/users | Gestión de usuarios |
/admin/courses | Gestión de cursos |
/admin/messages | Mensajes de contacto |
/admin/analytics | Analytics de la plataforma |
/admin/referrals | Sistema de referidos |
/admin/settings | Configuración del sitio |
Integraciones Externas
Sección titulada «Integraciones Externas»AWS S3 + CloudFront (Videos)
Sección titulada «AWS S3 + CloudFront (Videos)»- S3: Almacenamiento de videos de cursos
- CloudFront: CDN para streaming optimizado
- URLs Firmadas: Acceso seguro a contenido privado
Stripe (Pagos)
Sección titulada «Stripe (Pagos)»- Compra individual de cursos
- Suscripciones mensuales/anuales
- Webhooks para confirmar pagos
SendGrid (Emails)
Sección titulada «SendGrid (Emails)»- verificación de email
- Reset de password
- Notificaciones
Patron de Operaciones
Sección titulada «Patron de Operaciones»Las operaciones de Wasp son el mecanismo principal de comunicación cliente-servidor:
// Query (lectura) - se usa con useQueryexport const getCourses: GetCourses = async (args, context) => { return context.entities.Course.findMany({ where: { isPublished: true }, });};
// Action (escritura) - se llama directamente con awaitexport const enrollInCourse: EnrollInCourse = async ({ courseId }, context) => { // Crear enrollment};Features Heredados del Template
Sección titulada «Features Heredados del Template»TalentBricksAI está construido sobre Open SaaS. Las siguientes features vienen del template y se mantienen sin cambios significativos. Consulta la documentación de Open SaaS para detalles:
| Feature | Ruta en la app | documentación Open SaaS |
|---|---|---|
| autenticación (email) | src/auth/ | Authentication |
| Demo AI App (GPT) | src/demo-ai-app/ | Incluido en template |
| File Upload (S3) | src/file-upload/ | File Uploading |
| Analytics Dashboard | src/admin/ | Analytics |
| Daily Stats Job | src/analytics/ | Incluido en template |
| Contact Form | src/admin/ | Admin Dashboard |
| Email Sending | configuración en Wasp | Email Sending |