Herramienta web para dividir gastos en grupo — sin registrarse, sin instalar nada. Funciona en el celular, se comparte por WhatsApp y se puede instalar como app.
Splitwise y Tricount son buenos, pero piden cuenta, instalar una app y a veces pagar. Este lo abrís, cargás los nombres y en 10 segundos estás dividiendo la cuenta del restorán.
- Sin registro — solo el link. Compartilo por WhatsApp y listo.
- Sesiones permanentes — la sesión vive en el servidor; quien tenga el link puede volver cuando quiera.
- División inteligente — partes iguales, entre algunos, o montos custom por persona.
- Minimización de deudas — calcula la menor cantidad de transferencias para saldar todo.
- QR en la mesa — para compartir al instante sin tipear la URL.
- Instalable como app — PWA: funciona desde la pantalla de inicio como app nativa.
- Abrí mammoli.ar/split
- Escribí un nombre para el grupo y los participantes separados por coma
- Cargá los gastos: quién pagó, cuánto, entre quiénes
- El balance y las transferencias se calculan solos
- Compartí el link por WhatsApp para que todos lo vean
- PHP 7.4+ — lógica de servidor, creación de sesiones, API REST
- SQLite (via PDO) — base de datos embebida, sin servidor de BD externo
- Vanilla JS — sin frameworks, sin dependencias externas
- PWA — manifest + service worker para instalación como app
- PHP 7.4+ con extensiones
pdo_sqliteygd - HTTPS (requerido para PWA)
- Directorio con permisos de escritura para la base de datos
git clone https://github.com/camammoli/split.git
cp -r split/web/ /var/www/html/split/
chmod 755 /var/www/html/split/data/Listo. La base de datos SQLite se crea automáticamente en web/data/split.db con el primer uso.
web/
├── index.php # UI principal (landing + sesión)
├── api.php # API JSON (7 endpoints)
├── db.php # Esquema SQLite + algoritmo de deudas
├── manifest.json # PWA manifest
├── sw.js # Service worker (passthrough)
├── icon.php # Genera ícono PNG dinámicamente con GD
├── .htaccess # Bloquea acceso a archivos .db
└── data/
├── .htaccess # Bloquea acceso al directorio
└── split.db # Base de datos (se crea automáticamente)
El problema de dividir gastos tiene una solución óptima que minimiza la cantidad de transferencias necesarias para saldar todo el grupo.
El algoritmo:
- Calcular el balance neto de cada persona:
pagado - adeudado - Separar en acreedores (balance positivo) y deudores (balance negativo)
- Emparejar greedily el mayor deudor con el mayor acreedor
- La transferencia es
min(deuda, crédito), reducir ambos - Repetir hasta saldar todos
Esto garantiza el mínimo número de transacciones posible.
Ejemplo:
Juan pagó $3.000 de una cuenta de $9.000 entre 3 personas
María pagó $6.000
Balance neto:
Juan: +3.000 - 3.000 = $0
María: +6.000 - 3.000 = +$3.000 ← acreedor
Pedro: $0 - 3.000 = -$3.000 ← deudor
Transferencia: Pedro → María $3.000
Cada sesión típica (5 personas, 10 gastos) ocupa ~10 KB en disco. Con 1 GB disponible: ~100.000 sesiones. Para uso real, prácticamente ilimitado.
Las sesiones no expiran automáticamente. Para instalaciones con mucho uso, se recomienda implementar un script de limpieza periódica de sesiones inactivas.
MIT — hacé lo que quieras, si te sirvió invitame un café. ☕