# MayaContigo Monorepo

Bonjour,
Este monorepo contiene todas las applicaciones RAG del equipo de Innovacion en Banorte.
Su proposito es poder acelerar la creacion de nuevos RAGs, e ir construyendo una libreria de componentes reutilizables.
Adicionalmente, tambien contiene una serie de notebooks para procesar documentos, evaluar RAGs, generar preguntas sinteticas, etc/

## 🚀 Inicio Rápido

```bash
# Instala el monorepo
mise setup

# Crea una nueva aplicación RAG
mise new prueba

# Creación interactiva
mise dev --app prueba
```

### Prerrequisitos

Si estas en el ambiente de desarrollo oficial, tu maquina virtual ya cuenta con estos programas.

- **Mise** [Docs](https://mise.jdx.dev/)
- **Docker** [Docs](https://www.docker.com/)
- **Vault** [Docs](https://developer.hashicorp.com/vault/)

## 📁 Estructura del Proyecto

```
mayacontigo/
├── apps/           # Aplicaciones individuales
├── packages/       # Paquetes compartidos
├── notebooks/      # Marimo notebooks
├── .templates/     # Plantillas de proyecto
├── .containers/    # Configuraciones de Docker
└── compose.yaml    # Servicios de Docker Compose
```

## 🛠️ Comandos de Desarrollo

### Crear Nuevos Proyectos

```bash
# Crea una nueva aplicación RAG
mise new <nombre-app>

# Creación interactiva
mise new
```

### Entorno de Desarrollo

```bash
# Inicia servidores de desarrollo (frontend + backend)
mise dev                        # Selección interactiva de aplicación
mise dev --app <nombre-app>     # Inicia aplicación específica
mise dev --no-dashboard         # Deshabilita el dashboard en vivo
mise dev --check-deps           # Solo verifica dependencias
mise dev --list-apps            # Lista aplicaciones disponibles
```

### Gestión de Contenedores

```bash
# Inicia contenedores localmente
mise container:start                    # Selección interactiva
mise container:start <nombre-app>       # Inicia aplicación específica
mise container:start --list             # Lista contenedores disponibles

# Sube a Azure Container Registry
mise container:push                     # Selección interactiva
mise container:push <nombre-imagen>     # Sube imagen específica
mise container:push --list              # Lista imágenes disponibles
```

## 🏗️ Stack Tecnológico

### Tecnologías Centrales
- **Frontend**: React/Next.js con TypeScript
- **Backend**: Python con FastAPI/Uvicorn
- **Gestión de Paquetes**: pnpm (Node.js), uv (Python)
- **Contenedorización**: Docker & Docker Compose

### Infraestructura
- **Gestión de Secretos**: HashiCorp Vault
- **Registro de Contenedores**: Azure Container Registry
- **Observabilidad**: OpenTelemetry
- **Proxy Inverso**: Traefik

## 🎯 Creando tu Primera Aplicación

1. **Genera desde plantilla**
   ```bash
   mise new mi-app-rag
   ```

2. **Inicia desarrollo**
   ```bash
   mise dev --app mi-app-rag
   ```

3. **Accede a tu aplicación**
   - Frontend: http://localhost:3000
   - API Backend: http://localhost:8000

## 🔧 Configuración

### Desarrollo Local

- Frontend corre en puerto 3000
- APIs Backend corren en puerto 8000
- Servicios Docker usan puertos auto-asignados (8001+)

### Depuración
- Usa `--no-dashboard` para salida más simple
- Verifica `mise dev --check-deps` para problemas de dependencias
- Ve logs de contenedores con `docker logs <nombre-contenedor>`

## 🤝 Contribuyendo

1. Crea nuevas aplicaciones usando el sistema de plantillas
2. Sigue la estructura del monorepo
3. Usa los comandos de desarrollo proporcionados
4. Asegúrate de que todas las dependencias estén correctamente configuradas

## 📖 Recursos Adicionales

- **Plantillas**: Revisa `.templates/` para plantillas de proyecto disponibles
- **Docker**: Ve `.containers/` para configuraciones de contenedorización
- **Tareas**: Explora `.mise/tasks/` para scripts de automatización disponibles

---

*¡Feliz programación! 🚀*
