Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Project Repository for team-25 at Platanus Hack 26: Caracas ft. Yummy
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Un teléfono viejo que cuida a los que se quedaron solos. Enchufado en la mesa de un adulto mayor que vive solo, lo acompaña en el día a día (la pastilla, llamar a su hijo con un toque) y oye lo que pasa en la casa: una alarma de humo, un vidrio roto, un golpe, un grito o un «¡ayuda!» dicho en voz alta. Antes de avisar, pregunta «¿Está bien?». Si nadie responde en 60 s, avisa a la familia, que suele estar en otro país, por Telegram y con una llamada de WhatsApp; si nadie contesta, la casa llama a emergencias, y sin internet llama igual por la línea. El audio se procesa en el teléfono y nunca sale de él. Su asistente de voz se llama Lucero: «Lucero, estoy bien» calla la alarma y «Lucero, llama a mi hijo» llama.
Track: 🚨 Emergencias
/demo./f/demo?escenario=alerta.app/).presente.apk
(105 MB, Android 7 o posterior, Release casa-v0.1.0).
Oye, entiende «Lucero» y pregunta «¿Está bien?» con 60 s de espera, sin internet. Va sin los
números ni la clave de la casa de demo, así que no llama ni escribe en la base: para eso se
compila con su propio app/config/local.json.web/src/app/privacidad/). El audio no sale del teléfono.TELÉFONO DE LA CASA · Flutter en Android
micrófono ─► buffer de 5 s en memoria ─┬─► compuerta de dB ─► YAMNet (TFLite) ─► alarma, vidrio, golpe, grito
└─► Vosk, sin internet ─► «¡ayuda!», «me siento mal», ~70 frases
«Lucero, llama a mi hijo»: 5 s para decir «no»
│
▼
«¿Está bien?» ─► casa_alerta(vence en 60 s) ──────────────────────────────────┐
├─ «Estoy bien», deslizando o con la voz ─► casa_responder('cancelar') │
├─ «ayuda», «me caí» o «no» ─► escala sin esperar los 60 s │
└─ vence sin respuesta ─► llama al hijo por WhatsApp; si no, por teléfono │
si tampoco contesta, llama a emergencias │
latido cada 90 s, con enchufado y batería ─► casa_latido │
▼
SUPABASE · Postgres
alertas: pendiente ─► escalada ─► atendida · escalar_vencidas(): una sola escritura gana
pg_cron cada 5 s ─► GET /api/vigilar: escala lo vencido, manda los avisos y los sella
│
▼
FAMILIA · Next.js 16 en Vercel, sin login: el enlace de invitación es la llave
/f/[token] lee familia_casa cada 5 s ─► 🔴 alerta · 🟡 para saber · 🟢 todo bien · sin señal
Telegram (/start <token>) ◄─ el aviso del vigilante
Pastillas: foto de la factura ─► Claude ─► se cruza con el récipe ─► la familia confirma
anillo.dart); a la base van etiquetas de eventos, alertas y
latidos. Es privacidad y es costo: no hay un servidor de audio que pagar por minuto.camara.dart). Va a un bucket privado de Supabase, Claude dice lo
que se ve y la familia la recibe por Telegram y en la alerta roja
(api/casa/foto). Se borra a las 24 h. La llamada la
espera 4 s como mucho: si la cámara falla, se llama igual. «Lucero, llama a mi hijo» es una
llamada normal y no toma foto.| Qué | Cuántas | Cómo |
|---|---|---|
| Web: estado de la familia, audio, inventario, factura, el tope de lecturas y la foto de la emergencia | 63 | cd web && bun test |
| Contra la base real: alertas, escalamiento y pastillas | 11 | cd web && bun run test:integracion (llaves en web/.env.local) |
| App de la casa: alerta, pastillas, pedidos y órdenes por voz, nube con cola, la foto antes de llamar | 127 | make test |
| Carga del pitch: 50 teléfonos durante 2 min | 1124 lecturas, 0 fallas, p95 1,5 s | cd web && bun --env-file=.env.local scripts/carga.ts 50 120 |
| Carga con 150 teléfonos durante 1 min | 1653 lecturas, 0 fallas, p95 2,9 s | … scripts/carga.ts 150 60 |
| Modelos de audio: 9 modelos, 640 clips | resultados | cd experimentos/modelos-audio && uv run comparar.py |
| Voz de personas mayores (sintética): 138 frases × 6 voces, con y sin ruido | 94 % sin ruido, 77 % con TV a 10 dB (resultados) | cd experimentos/voz-mayor && uv run evaluar.py |
La carga se midió el sábado 24-oct contra producción, desde una laptop en Caracas (detalle).
Hacia dónde va el producto, en tres pasos: futuro.md.
# La web de la familia
cd web && bun install
bun dev # http://localhost:3000/f/demo
bun test
# La app de la casa, en un Android conectado por USB
cp app/config/local.example.json app/config/local.json # el número de emergencia y la clave de la casa
make run # make muestra todos los atajos; make run-demo usa una cuenta regresiva de 15 s
Las llaves van en web/.env.local y en Vercel, nunca en el repo: está
web/.env.example. Cada push a main despliega la web; si el build falla,
producción no cambia.
app/ Flutter: el teléfono de la casa (oído, voz, alerta, pastillas, llamadas)
web/ Next.js: la web de la familia, el vigilante y los webhooks
supabase/migrations/ el esquema, las funciones, quién puede llamar qué y el vigilante
experimentos/modelos-audio/ la comparación de modelos de audio, reproducible
docs/plan.md lo que se presenta, el demo y la venta
docs/contexto.md el problema, lo que ya existe y en qué nos distinguimos
docs/riesgos.md los muros técnicos y cómo contarlos
docs/futuro.md hacia dónde va
docs/pendientes.md lo que falta, con dónde está el código y cómo probarlo
docs/investigacion-*.md alertas y apagones, audio y sensores, cómo saber si el teléfono carga
| Quién | Qué hizo |
|---|---|
| Abrahan David Quintero Teran (@abrahanq) | La app de la casa: el oído, la voz, las llamadas y las pastillas |
| Josuep Simon Turmero Brito (@jkou02) | Los avisos: Telegram y el vigilante |
| Anttonny Rodelo (@rodeloa) | Las cifras con fuente y la investigación del problema |
| Luis Rogelio Gomez Montes (@rogelio-electronic) | La web de la familia, la base, la orquestación y el pitch |
/api/vigilar cada 5 s con pg_net, y
el secreto está en Vault, no en el repo (migración).
Manda en tandas en paralelo para terminar antes de la pasada siguiente, y sella por alerta y por
destinatario para no repetir mensajes (route.ts).demo es público a propósito: es el del QR.leer/route.ts).
También describe la foto de la emergencia, pero eso va después de llamar y no la frena.inventario.ts).