Skip to content

Contador de tiempo de Proyectos. Permite crear Proyectos y tareas dentro de el para llevar el tiempo de desarrollo.

Notifications You must be signed in to change notification settings

conejoRojo/DeployTime

Repository files navigation

DeployTime - Time Tracking System

Sistema completo de seguimiento de tiempo para equipos de desarrollo con aplicación de escritorio y backend API.


Descripción

DeployTime es un sistema de time tracking diseñado para colaboradores y administradores que permite:

  • Trackear tiempo trabajado en tareas específicas
  • Gestionar proyectos y colaboradores (admin)
  • Aplicación de escritorio en la bandeja del sistema (Windows 11)
  • Sincronización automática con servidor
  • Trabajo offline con base de datos local
  • Detector de inactividad de 10 minutos

Arquitectura

Backend (Laravel 11 API)

  • Framework: Laravel 11
  • Base de datos: MySQL 8.0
  • Autenticación: JWT (tymon/jwt-auth)
  • Deployment: Docker (dev) + Debian server (prod)
  • Puerto: 8000

Desktop App (Electron)

  • Framework: Electron + React + TypeScript
  • Build: Vite
  • Base de datos local: SQLite (offline)
  • Plataforma: Windows 11 / 10

Estructura del Proyecto

DeployTime/
├── backend/               # Laravel 11 API
│   ├── app/
│   │   ├── Http/Controllers/
│   │   │   ├── AuthController.php
│   │   │   ├── ProjectController.php
│   │   │   ├── TaskController.php
│   │   │   └── TimeEntryController.php
│   │   ├── Models/
│   │   │   ├── User.php
│   │   │   ├── Project.php
│   │   │   ├── Task.php
│   │   │   └── TimeEntry.php
│   │   └── Middleware/
│   │       └── AdminMiddleware.php
│   ├── database/
│   │   ├── migrations/      # 5 tablas
│   │   └── seeders/
│   ├── routes/api.php       # 20+ endpoints
│   ├── docker-compose.yml
│   └── .env
│
├── desktop/               # Electron App
│   ├── src/
│   │   ├── main/          # Electron main process
│   │   ├── preload/       # IPC Bridge
│   │   └── renderer/      # React UI
│   ├── public/
│   ├── package.json
│   └── vite.config.ts
│
└── docs/                  # Documentación
    ├── BACKEND_COMPLETADO.md
    ├── BACKEND_STATUS.md
    ├── ELECTRON_SETUP_COMPLETADO.md
    ├── API_TESTING.md
    └── PROGRESO.md

Quick Start

Backend API

# Iniciar con Docker
cd backend
docker-compose up -d

# Ejecutar migraciones y seeders
docker-compose exec app php artisan migrate --seed

# API disponible en http://localhost:8000

Usuarios de prueba:

  • Admin: admin@deploytime.com / admin123
  • Colaborador 1: juan@deploytime.com / colaborador123
  • Colaborador 2: maria@deploytime.com / colaborador123

Desktop App

cd desktop
npm install
npm run dev

La aplicación se abrirá en la bandeja del sistema.


Base de Datos

Tablas

  1. users - Usuarios (admin/collaborator)
  2. projects - Proyectos
  3. project_collaborators - Relación N:M proyectos-usuarios
  4. tasks - Tareas de proyectos
  5. time_entries - Registros de tiempo

Relaciones

User
├── hasMany Projects (created_by)
├── belongsToMany Projects (collaborator)
└── hasMany TimeEntries

Project
├── belongsTo User (creator)
├── belongsToMany Users (collaborators)
└── hasMany Tasks

Task
├── belongsTo Project
└── hasMany TimeEntries

TimeEntry
├── belongsTo Task
└── belongsTo User

API Endpoints

Autenticación

  • POST /api/auth/login - Login con JWT
  • POST /api/auth/logout - Logout
  • POST /api/auth/refresh - Renovar token
  • GET /api/auth/me - Usuario actual

Proyectos (Admin)

  • GET /api/projects - Listar
  • POST /api/projects - Crear
  • GET /api/projects/{id} - Ver
  • PUT /api/projects/{id} - Actualizar
  • DELETE /api/projects/{id} - Eliminar
  • POST /api/projects/{id}/collaborators - Agregar colaborador
  • DELETE /api/projects/{id}/collaborators/{userId} - Remover

Tareas

  • GET /api/projects/{id}/tasks - Listar por proyecto
  • POST /api/tasks - Crear
  • GET /api/tasks/{id} - Ver
  • PUT /api/tasks/{id} - Actualizar
  • DELETE /api/tasks/{id} - Eliminar

Time Entries

  • POST /api/time-entries - Iniciar timer
  • PUT /api/time-entries/{id}/stop - Detener timer
  • GET /api/my/active-time-entry - Timer activo del usuario
  • GET /api/my/time-entries - Mis registros
  • GET /api/tasks/{id}/time-entries - Registros de una tarea
  • DELETE /api/time-entries/{id} - Eliminar

Ver documentación completa en docs/API_TESTING.md


Estado del Desarrollo

Backend 100% Completado

  • Docker Compose configurado
  • MySQL 8.0 + phpMyAdmin
  • Migraciones y modelos
  • JWT Authentication
  • 4 Controllers completos
  • 20+ endpoints funcionales
  • Middleware admin
  • Seeders con datos de prueba
  • TESTEADO Y FUNCIONANDO

Desktop App 100% Completado

  • Electron + React + TypeScript
  • System tray integration
  • UI completa (login + timer)
  • Build scripts
  • Ventana frameless con auto-hide
  • Integración con API Laravel
  • SQLite local storage
  • Sincronización automática
  • Detector de inactividad
  • COMPLETAMENTE FUNCIONAL

Tecnologías

Backend

  • Laravel 11
  • MySQL 8.0
  • JWT Authentication
  • Docker & Docker Compose
  • PHP 8.2

Frontend Desktop

  • Electron 39
  • React 19
  • TypeScript 5
  • Vite 6
  • SQLite (pendiente)

Documentación


Próximos Pasos

Fase 1: Backend API - COMPLETADO

  • Laravel 11 + MySQL + Docker
  • JWT Authentication
  • 20+ endpoints API REST
  • Seeders con datos de prueba

Fase 2: Desktop App - COMPLETADO

  • Electron + React + TypeScript
  • Integración completa con API
  • SQLite local storage
  • Servicio de sincronización
  • Detector de inactividad (10 min)

Fase 3: Mejoras Futuras (Opcional)

  1. Dashboard web para administradores
  2. Reportes y estadísticas
  3. Comparación estimado vs real
  4. Exportación de datos

Seguridad

  • JWT con tokens renovables
  • Passwords hasheados con bcrypt
  • Middleware de autenticación y autorización
  • Context Isolation en Electron
  • Preload script con whitelist de canales IPC
  • SQL injection prevention (Eloquent)
  • CORS configurado

Testing

Backend API

# Con REST Client (VSCode)
Abrir: backend/api-test.http
Click: "Send Request"

# Con curl
curl -X POST http://localhost:8000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"admin@deploytime.com","password":"admin123"}'

Desktop App

cd desktop
npm run dev

Deployment

Backend (Producción)

# En servidor Debian
git clone <repo>
cd backend
composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan route:cache
php artisan migrate --force

Desktop App (Build)

cd desktop
npm run build
npm run package:win
# Instalador en: desktop/release/

Roles y Permisos

Administrador

  • CRUD completo de proyectos
  • Gestionar colaboradores
  • Ver todos los proyectos
  • Asignar tareas

Colaborador

  • Ver proyectos asignados
  • CRUD de tareas en sus proyectos
  • Iniciar/detener timer
  • Ver su historial de tiempos

URLs de Desarrollo


Licencia

MIT


Contribuir

Este es un proyecto privado de DeployTime.


Soporte

Para soporte, contactar al equipo de desarrollo.


Desarrollado por: Luis Gastiarena con Claude Code AI Fecha: Noviembre 2025 Versión: 1.0.0 Principio: KISSES (Keep It Simple, Smart, Efficient & Secure)

About

Contador de tiempo de Proyectos. Permite crear Proyectos y tareas dentro de el para llevar el tiempo de desarrollo.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •