Aplicación web completa para la gestión de ingresos y gastos personales, con backend en PHP, frontend en React y bot de Telegram.
- ✅ Múltiples cuentas (bancarias y efectivo)
- ✅ Registro de ingresos y gastos
- ✅ Balance automático con triggers SQL
- ✅ Metas de ahorro con seguimiento
- ✅ Archivos adjuntos (PDF, imágenes)
- ✅ Exportación e importación (CSV/JSON)
- ✅ Autenticación con tokens JWT
- ✅ Verificación en 2 pasos (2FA)
- ✅ Contraseñas encriptadas con bcrypt
- ✅ Protección CSRF
- ✅ Sanitización de inputs
- ✅ Roles de usuario (4 niveles)
- ✅ Panel de administración completo
- ✅ Gestión de usuarios
- ✅ Historial de acciones (auditoría)
- ✅ Estadísticas del sistema
- ✅ Gestión de etiquetas
- ✅ Inicio de sesión desde Telegram
- ✅ Consulta de balance y cuentas
- ✅ Crear movimientos con archivos
- ✅ Ver historial de movimientos
- ✅ Eliminar movimientos
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │────▶│ Backend API │◀────│ Telegram Bot │
│ React + Vite │ │ PHP + MySQL │ │ Python │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
└───────────────────────┘
Docker Network
- PHP 8.2
- MySQL 8.0
- Apache 2.4
- Composer
- PHPMailer
- React 18
- Vite
- Tailwind CSS
- React Router
- Axios
- Python 3.11
- python-telegram-bot
- requests
- Docker
- Docker Compose
- Nginx
git clone https://github.com/tu-usuario/gestion-gastos.git
cd gestion-gastoscp .env.example .env
nano .envConfigurar:
- Credenciales SMTP (Gmail, etc.)
- Token del bot de Telegram
- URLs si es necesario
docker-compose up -d- Frontend: http://localhost:3000
- Backend API: http://localhost:8080/api
- phpMyAdmin: http://localhost:8081
- Ir a http://localhost:8080
- Completar el formulario de instalación
- Crear usuario propietario
- Buscar @BotFather en Telegram
- Crear bot:
/newbot - Copiar el token
- Añadir token en
.env:TELEGRAM_BOT_TOKEN=tu_token_aqui - Reiniciar servicios:
docker-compose restart - Buscar tu bot en Telegram y usar
/start
gestion-gastos/
├── backend/ # API REST en PHP
├── frontend/ # Aplicación React
├── telegram_bot/ # Bot de Telegram
├── docker-compose.yml # Orquestación Docker
└── .env.example # Variables de entorno
POST /api/auth/login # Iniciar sesión
POST /api/auth/register # Registrarse
GET /api/user/profile # Ver perfil
GET /api/accounts # Listar cuentas
POST /api/accounts # Crear cuenta
GET /api/movements # Listar movimientos
POST /api/movements # Crear movimiento
GET /api/movements/export/csv # Exportar CSV
POST /api/movements/import # Importar JSON
Ver documentación completa en /backend/README.md
/login # Iniciar sesión
/balance # Ver balance
/cuentas # Listar cuentas
/movimientos # Ver últimos movimientos
/nuevo # Crear movimiento
/eliminar [ID] # Eliminar movimiento
/logout # Cerrar sesión
Ver guía completa en /telegram_bot/README.md
| Rol | Permisos |
|---|---|
| Propietario | Control total del sistema, no eliminable |
| Administrador | Gestión de usuarios (excepto propietario) |
| Usuario | Gestión de sus propias cuentas y movimientos |
| Solicita | Usuario que solicitó ser administrador |
cd backend
composer install
# Configurar config.php si es necesariocd frontend
npm install
npm run dev # Desarrollo
npm run build # Produccióncd telegram_bot
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python bot.py# Backend (PHPUnit)
cd backend
composer test
# Frontend (Vitest)
cd frontend
npm testLos triggers SQL actualizan el balance automáticamente al crear, editar o eliminar movimientos.
Configura objetivos de ahorro y ve tu progreso en tiempo real.
Auditoría de todas las acciones realizadas en el sistema (solo propietario).
Exporta tus datos en CSV o JSON y migra entre cuentas fácilmente.
Adjunta recibos, facturas o comprobantes (PDF, imágenes hasta 5MB).
- Contraseñas hasheadas con bcrypt (cost 12)
- Tokens seguros con
random_bytes() - Prepared statements (prevención SQL Injection)
- Validación y sanitización de inputs
- Headers de seguridad configurados
- CORS configurado
- Rate limiting preparado
El sistema incluye un cron job para:
- Enviar recordatorios a usuarios inactivos
- Eliminar cuentas inactivas (>2 años)
- Limpiar sesiones expiradas
- Limpiar tokens expirados
# Ejecutar manualmente
docker exec gastos_backend php /var/www/html/scripts/cron.php- Fork el proyecto
- Crear rama:
git checkout -b feature/nueva-funcionalidad - Commit:
git commit -m 'Añadir nueva funcionalidad' - Push:
git push origin feature/nueva-funcionalidad - Crear Pull Request
Este proyecto es de código abierto.
Crear un issue en GitHub con:
- Descripción del problema
- Pasos para reproducir
- Logs relevantes
- Screenshots si aplica
⭐ Si te gusta el proyecto, dale una estrella en GitHub!
Apliación creada usando Claude 4.5