maincourse
MainCourse es un gestor de recetas open-source con backend Rails 8.1 y clientes nativos iOS/Android. Permite capturar recetas desde redes sociales, web y fotos mediante OCR, planificar comidas semanales y generar listas de compra agrupadas por pasillo.
Ficha actualizada 22 sept 2026, 15:34 · upstream 21 sept 2026, 14:45 · release sin release detectada
Qué es maincourse
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
MainCourse es una aplicación open-source para gestionar recetas con un backend compartido en Rails 8.1 y tres interfaces: iOS (SwiftUI), Android (Kotlin/Jetpack Compose) y web (Hotwire). La arquitectura utiliza SQLite como base de datos principal, complementada con Solid Cache/Queue/Cable, y soporta extracción de recetas desde Instagram, TikTok, YouTube, sitios web y fotos mediante OCR en dispositivo.
El proyecto mantiene compatibilidad con el nombre original 'Hauptgang' en el código. El backend maneja cuentas de usuario, sincronización, compartir recetas y lógica de extracción. Los clientes iOS e Android son offline-first; el cliente Android está en desarrollo activo. La autenticación y suscripciones se gestionan vía RevenueCat en iOS.
Para despliegue, utiliza Kamal en VPS Hetzner con Docker para persistencia de SQLite y uploads. Las copias de seguridad van a S3 mediante Litestream. El sistema incluye suites de CI completas (rubocop, brakeman, tests Rails/iOS/Android) y documentación técnica detallada en docs/.
- Capturar recetas desde videos de Instagram/TikTok/YouTube mediante transcripción automática de audio y texto en pantalla.
- Importar recetas de cualquier sitio web extrayendo ingredientes y pasos usando JSON-LD o LLM como fallback.
- Digitalizar recetas manuscritas o páginas de libros de cocina con OCR en dispositivo para editarlas rápidamente.
- Planificar comidas semanales en calendario y consolidar ingredientes en una lista de compra agrupada por pasillo del supermercado.
- Sincronizar recetas entre dispositivos iOS/Android mediante backend Rails con SQLite multi-database.
- Desplegar instancia propia en VPS usando Kamal, Docker y Litestream para backups automáticos a S3.
- Extracción de recetas desde múltiples fuentes (social media, web, fotos) con soporte OCR nativo en iOS.
- Arquitectura modular con backend Rails compartido y clientes nativos independientes para iOS y Android.
- Persistencia SQLite optimizada con Litestream para backups a S3 sin migrar a bases de datos relacionales complejas.
- Suite de CI completa que incluye rubocop, brakeman, bundler-audit, tests Rails/iOS/Android y verificación de seed.
- Soporte oficial para despliegue en VPS Hetzner con Kamal y Docker para persistencia de datos y uploads.
- Documentación técnica exhaustiva en docs/ con guías específicas para Android, iOS, backups y recipe import.
- Requiere Ruby 3.4.7 y SQLite; no soporta bases de datos relacionales externas como PostgreSQL por defecto.
- El cliente Android está en desarrollo activo y puede tener funcionalidades limitadas comparado con iOS.
- La extracción de recetas desde sitios web depende de JSON-LD o LLM, lo que puede fallar en páginas mal estructuradas.
- OCR funciona mejor en iOS; la calidad del reconocimiento en Android depende de librerías externas no detalladas.
- No incluye Docker Compose por defecto; el despliegue requiere configuración manual con Kamal.
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Desplegar con Kamal en VPS Hetzner. Usar Docker para persistencia de SQLite y uploads. Configurar Litestream para backups a S3. Ejecutar bin/ci antes del deploy para validar estilo, seguridad y tests. Verificar docs/sqlite-backups-litestream.md para configuración de backups.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Puede sustituir a
Relaciones detectadas por el análisis del repositorio y su categoría.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.