====== Koffan ====== **Koffan** es una [[..:aplicaciones_web|aplicación web]] ligera y autoalojable para gestionar listas de la compra compartidas en familia o pareja. Hecho en [[..:..:programacion:go|Go]] y con SQLite como almacenamiento. * [[https://github.com/PanSalut/Koffan/|Repositorio de código]] {{ https://raw.githubusercontent.com/PanSalut/Koffan/refs/heads/main/screenshots/hero.png |}} ===== Características ===== * **Extremadamente ligero**: ~16 MB de espacio en disco, ~2,5 MB de RAM. * **Múltiples listas**: crea listas separadas para diferentes tiendas o propósitos, con iconos personalizados. * **PWA**: instálala en tu teléfono como si fuera una aplicación nativa. * **Modo sin conexión**: añade, edita y marca/desmarca productos sin conexión a Internet (sincronización automática al recuperar la conexión). * **Autocompletado**: sugerencias mediante búsqueda difusa basadas en tu historial; recuerda las secciones. * Organización de productos por secciones (por ejemplo: lácteos, verduras, limpieza). * Marcar productos como comprados. * Marcar productos como "dudosos" (cuando no se encuentran en la tienda). * Sincronización en tiempo real mediante WebSocket. * Interfaz adaptable (diseñada con enfoque mobile-first, priorizando dispositivos móviles). * **Modo oscuro**: tema automático basado en las preferencias del sistema. * Soporte multilingüe: PL (polaco), EN (inglés), DE (alemán), ES (español), FR (francés), PT (portugués), UK (ucraniano), NO (noruego), LT (lituano), EL (griego), SK (eslovaco), SV (sueco) y RU (ruso). * Sistema de inicio de sesión sencillo. * Protección mediante limitación de intentos (rate limiting) contra ataques de fuerza bruta. * **API REST**: acceso programático para integraciones y migraciones. ===== Instalación ===== ==== Docker ==== Ejemplo de fichero Compose: services: app: image: ghcr.io/pansalut/koffan:latest container_name: koffan ports: - "8080:8080" environment: - APP_ENV=production - APP_PASSWORD=${APP_PASSWORD:-shopping123} - PORT=8080 - DB_PATH=/data/shopping.db volumes: - ./data:/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://127.0.0.1:$${PORT}/login || exit 1"] interval: 30s timeout: 3s retries: 3 ===== Recursos ===== * [[https://github.com/PanSalut/Koffan/wiki/Multiple-Instances|Running Multiple Instances]] * [[https://github.com/PanSalut/Koffan/wiki/REST-API|REST API]]