Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

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

Ver códigoProblemas y ayudaRepositorio ↗Sitio oficial
00

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/.

CASOS DE USO
  • 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.
PUNTOS DESTACADOS
  • 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.
PRECAUCIONES
  • 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.
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU1 vCPUrecomendación inicial
MEMORIA1 GBRAM estimada
DISCO10 GBalmacenamiento base
COMPLEJIDADlownivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Docker detectado

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.

✓Dockerfile
—Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Rails
SERVICIOS
S3/MinIO
BASES DE DATOS
No detectadas
PUERTOS
80
05

Puede sustituir a

Relaciones detectadas por el análisis del repositorio y su categoría.

06

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.