MK Asistente Pasivo — PWA + Backend (PHP) ================================================= Objetivo - Escucha (mic) + chunks de audio + STT opcional (WebSpeech) en modo "pasivo". - Offline-first: guarda eventos/audio en IndexedDB. - Si hay internet: sincroniza eventos + sube chunks al backend. - UI mínima: círculos concéntricos (estado "sintiente"). Estructura - public/ => sirve como web root de la PWA - server/ => backend PHP (api.php) + storage Deploy (Apache) 1) Copia la carpeta public y server a tu web root, por ejemplo: /var/www/html/mk_assistant/ ├─ index.html, app.js, styles.css, sw.js, manifest.json, icons/ └─ server/api.php, server/storage/ 2) Asegura permisos para escribir: sudo chown -R www-data:www-data /var/www/html/mk_assistant/server/storage sudo chmod -R 775 /var/www/html/mk_assistant/server/storage 3) (Opcional) API Key: - Setea en Apache / php-fpm env: MK_API_KEY="TU_TOKEN" - Cliente puede enviar header: X-API-KEY: TU_TOKEN Test rápido - Abre: https://TU_DOMINIO/mk_assistant/index.html - Instala (Chrome: "Install app") para habilitar "Iniciar escucha". - Permisos → Iniciar escucha → verás los círculos reaccionando al audio. - Online: sincroniza automáticamente; o botón "Sincronizar". Notas - Navegadores requieren gesto del usuario para iniciar mic. - El mic no puede correr en Service Worker: si el SO suspende la app en background, se detiene.