Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Planifica el menú de la semana y genera la lista de la compra. App instalable, gratuita y sin conexión.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Aplicación de ordenador, instalable desde una página web, para planificar el menú de la semana y generar la lista de la compra. Los requisitos están en ESPECIFICACION.md.README 전문 보기 ↗
Aplicación de ordenador, instalable desde una página web, para planificar el menú de la semana y generar la lista de la compra. Los requisitos están en ESPECIFICACION.md.
| Orden | Qué hace |
|---|---|
npm run dev | Arranca el servidor de desarrollo. La app está en http://localhost:5173/app/ y la página de instalación en http://localhost:5173/. |
npm test | Ejecuta las pruebas unitarias (planificador, lista de la compra, copias de seguridad, migraciones). |
npm run test:e2e | Recorre la app en un navegador real, en tamaño de ordenador y de móvil, y comprueba la accesibilidad y el uso sin conexión. Usa el Edge instalado en el equipo. |
npm run check:layers | Comprueba la regla de capas (ui → data → domain). |
npm run catalog:images | Genera las imágenes de las recetas a partir de catalog/images/. |
npm run screenshots | Captura las pantallas principales en test-results/screens/ (necesita npm run dev en marcha). |
npm run catalog:check | Valida el catálogo. Los errores impiden compilar; los avisos señalan trabajo pendiente. Con -- --kcal lista además las calorías por ración de cada receta. |
npm run catalog:nutrition -- <carpeta> | Regenera catalog/nutrition.json a partir de los CSV de USDA FoodData Central (véase «Calorías»). |
npm run catalog:review | Genera revision/recetas.html: todas las recetas con lo que la app calcula de cada una, para revisarlas una a una. |
npm run photos:propose | Busca en Wikimedia Commons fotos candidatas con licencia abierta y genera revision/fotos.html para elegirlas. No descarga ninguna. |
npm run build | Valida el catálogo, genera las imágenes, comprueba las capas y los tipos, y compila en dist/. |
npm run preview | Sirve dist/ en http://localhost:4173/ para probar la instalación y el modo sin conexión. |
npm run icons | Regenera los iconos PNG a partir de public/icons/icon.svg. |
npm run deploy | Compila y publica el sitio en GitHub Pages. |
La app se usa directamente en el navegador; instalarla es opcional.
El sitio está publicado con GitHub Pages en https://pedetewapo-png.github.io/menu-a-mano/. El código está en la rama main y el sitio compilado en la rama gh-pages.
npm run deploy compila con la ruta base /menu-a-mano/ y publica en gh-pages. Requiere tener el equipo autorizado con gh auth login.main (git push) guarda el código, pero no publica; para publicar hay que ejecutar npm run deploy.La app instalada se actualiza sola la siguiente vez que se abre con conexión. GitHub mantiene los archivos en caché unos 10 minutos, así que una versión nueva puede tardar ese tiempo en ofrecerse.
Se descartó Cloudflare porque sus direcciones compartidas no eran accesibles desde España el día de la publicación (sábado 10 de octubre de 2026, en horario de partidos de LaLiga), mientras que GitHub Pages sí lo era.
index.html Página de instalación.
app/index.html Entrada de la app.
catalog/ Ingredientes, recetas (un archivo por receta) y calorías de cada ingrediente.
revision/ Páginas generadas para revisar recetas y elegir fotos. No se guardan en el repositorio.
src/domain/ Lógica pura: planificador, lista de la compra, filtros, unidades.
src/data/ Catálogo, esquemas, base de datos local, copias de seguridad.
src/ui/ Pantallas y componentes.
src/i18n/ Textos de la interfaz.
src/landing/ Código de la página de entrada.
src/install.ts Instalación opcional, compartida por la página de entrada y la app.
src/pwa.ts Service worker: uso sin conexión y actualizaciones.
src/tests/ Pruebas unitarias.
e2e/ Pruebas de recorrido en navegador.
scripts/ Validación del catálogo, imágenes, capas, iconos, capturas y publicación.
Dependencias entre capas: ui → data → domain. domain no importa nada de las otras dos.
catalog/recipes/<id>.json; el nombre del archivo debe coincidir con el id.catalog/ingredients.json con su dieta, alérgenos (allergens) y posibles trazas según la marca (mayContain).npm run catalog:check.La dieta y los alérgenos de una receta se calculan a partir de sus ingredientes; no se escriben en la receta. Las calorías, también.
Si el ingrediente es nuevo, añade además su alimento equivalente en catalog/nutrition-sources.json y ejecuta npm run catalog:nutrition.
Las calorías salen de una tabla oficial, no de una estimación: USDA FoodData Central, conjunto SR Legacy de abril de 2018, de dominio público.
catalog/nutrition-sources.json dice a qué alimento de la tabla corresponde cada ingrediente (fdcId) y, cuando hace falta, cuánto pesa una unidad o una cucharada.npm run catalog:nutrition -- <carpeta con los CSV> lee la tabla y escribe catalog/nutrition.json, que es lo que usa la app. Los CSV no están en el repositorio: se descargan de la página de FoodData Central.Las cifras son orientativas y así se presentan («unas 350 kcal»). Se calculan con el peso de compra de cada ingrediente, sin descontar pieles ni huesos, y cuentan todo el aceite de la receta. Lo que va «al gusto» o en pizcas no suma. Si a un ingrediente le falta el dato, la receta no muestra cifra.
Una receta no entra en la app hasta que una persona la revisa con la lista de comprobación de la especificación (v2, §9.3): el validador rechaza las que no tienen reviewedOn.
npm run catalog:review genera revision/recetas.html. Se abre con doble clic y se marca cada receta como correcta o por corregir.npm run photos:propose genera revision/fotos.html con las fotos candidatas de cada receta. Los términos de búsqueda están en catalog/photo-queries.json y las candidatas encontradas, con su autor y su licencia, en catalog/photo-candidates.json.reviewedOn en cada receta revisada. Las fotos elegidas, cuando las haya, se descargan a catalog/images/.Los requisitos están en ESPECIFICACION-v2.md, que divide el trabajo en fases.
| Fase | Contenido | Estado |
|---|---|---|
| 0 | Pruebas de recorrido y accesibilidad, comprobación de capas, procesado de imágenes | Hecha |
| 1 | Móvil y navegador: navegación inferior, menú día a día, uso en pestaña, instalación opcional | Hecha |
| 2 | Notas en las comidas, modo cocina, desayunos y migración de los datos de la v1 | Hecha |
| 3 | Perfiles de comensal: una ficha por persona, menú que respeta a todas y avisos que dicen de quién es cada restricción | Hecha |
| 4 | Recetas propias: editor, ingredientes propios, foto, exportar e importar por archivo | Hecha |
| 5 | Catálogo: 70 recetas y 8 desayunos, revisados; calorías | Hecha. Las fotos se aplazan a la v3 |
| 6 | Cuenta con Google y sincronización | Pendiente |
| 7 | Plan familiar y copia personal | Pendiente |
| 8 | IA de texto a receta | Pendiente |
| 9 | Política de privacidad y prueba con 5–10 personas | Pendiente |
Pendiente dentro de lo ya hecho:
reviewedOn impide compilar.rolluppackage.json sustituye rollup por @rollup/wasm-node. Solo lo usa el paso que genera el service worker. En este equipo, el Control de aplicaciones de Windows bloquea el binario nativo de rollup; la variante WebAssembly hace lo mismo sin código nativo.