- Sidebar fija en todas las pantallas (md+): logo, nav, logout - index.html: grid 3/5 + 2/5 en desktop (movimientos | donut chart) - add.html: 2 columnas desktop (form | monto+numpad), botones mobile/desktop unificados - historial.html: max-w-3xl, header con botón Nuevo integrado - dashboard.js: formato de moneda con toLocaleString, skeleton loading, mes dinámico - add.js: lógica simplificada con doSave(), teclado ignora inputs de texto - auth.php + login.php: cookie con httponly y SameSite=Lax - docs/plan/00_PLAN.md: estado actualizado, CLI marcado como fase futura Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
Plan de Desarrollo — rm-PAGOs (Quiet Wealth)
Stack
| Capa | Tecnología |
|---|---|
| Frontend | HTML + Tailwind CSS (CDN local) + Vanilla JS |
| Backend | PHP 8.2 (FastCGI) |
| Base de datos | SQLite3 (PDO) |
| Auth | Sesión PHP nativa |
| Servidor local | Docker Compose: NGINX + PHP-FPM |
Estado actual por pantalla
✅ login.html — Completa
- Formulario propio con diseño Quiet Wealth (sin popup del browser)
- Validación de credenciales contra
config.php(gitignoreado) - Redirección automática si ya hay sesión activa
✅ index.html — Dashboard
- Balance total dinámico desde SQLite
- Gráfico donut de distribución de gastos por categoría (SVG puro)
- Últimos 5 movimientos con ícono, descripción y monto
- Navegación inferior funcional
✅ add.html — Nuevo movimiento
- Selector Gasto / Ingreso
- Numpad táctil + soporte teclado físico (desktop)
- Categorías cargadas dinámicamente desde la API
- Campo fecha (default: hoy) y notas opcionales
- POST a la API con redirect al dashboard al guardar
✅ historial.html — Historial completo
- Lista de todos los movimientos agrupados por mes
- Botón eliminar con modal de confirmación
- Toast de confirmación tras eliminar
✅ API (movimientos.php)
- GET dashboard: balance + últimos 5 + donut + categorías
- GET ?view=historial: todos los movimientos
- POST: nuevo movimiento
- DELETE: eliminar por ID
✅ Infraestructura Docker
- NGINX + PHP-FPM en contenedores separados
- Tailwind CDN descargado en build y servido localmente
- Auth por sesión PHP (sin Basic Auth del browser)
- Script
_app --status / --start / --stop
Pendientes / En progreso
✅ UI — Responsive desktop
- Sidebar de navegación fijo en pantallas ≥768px (con logout)
- Dashboard en 2 columnas en desktop (balance+movimientos | donut)
- add.html: formulario + numpad en 2 columnas en desktop
- historial.html: ancho extendido en desktop, header con botón Nuevo
- Soporte teclado físico en numpad (0-9, punto, Backspace, Enter)
🔶 UI — Polish
- Fecha en formato legible en movimientos recientes del dashboard
- Indicador de mes actual dinámico (hoy hardcodeado como "Octubre 2023")
- El "+12.4% este mes" del balance card → calculado real
- Estado vacío más visual en historial (primer uso)
🔶 Funcionalidades faltantes
- Editar movimiento existente
- Filtro por categoría / mes en historial
- Resumen mensual (ingresos vs gastos del mes)
⏳ Fase futura — CLI
- Interfaz de línea de comandos que replique las operaciones de la GUI
- Comandos:
pagos add,pagos list,pagos delete <id>,pagos balance - Mismo SQLite como backend → datos compartidos con la web
Notas de arquitectura
- Credenciales en
pagos/api/config.php(gitignoreado, verconfig.example.php) - SQLite en
pagos/db/finanzas.sqlite(gitignoreado) - Tailwind CDN se descarga en
docker buildy se copia al volumen en el entrypoint