Una aplicación web moderna de gestión de tareas con seguimiento preciso de tiempo, diseñada para medir el tiempo efectivo de trabajo versus tiempo pausado.
🎥 Este proyecto fue desarrollado durante el video: Ver en YouTube
- ✅ Crear, editar y completar tareas
- 📝 Descripciones opcionales para cada tarea
- 🗑️ Eliminación de tareas (excepto completadas)
▶️ Iniciar sesiones de trabajo con cronómetro en tiempo real- ⏸️ Pausar con motivo obligatorio
- 🔄 Reanudar sesiones pausadas
- 📊 Diferenciación automática entre tiempo de trabajo y tiempo pausado
- 🚫 Solo una tarea puede estar activa a la vez (pausa automática de otras)
- 📉 Gráficas visuales de tiempos por sesión (Recharts)
- 📊 Estadísticas detalladas al completar tareas:
- Tiempo total de trabajo
- Tiempo total de pausas
- Tiempo global
- Contador de pausas
- Lista de motivos de pausa con duraciones
- 🎨 Visualización con colores (verde = trabajo, naranja = pausa)
- 💿 Almacenamiento local con
localStorage - 🔄 Recuperación automática al recargar la página
- 🔧 Migración automática de datos antiguos
Este proyecto está construido con tecnologías modernas:
- Next.js 16 - Framework React con App Router
- React 19 - Biblioteca UI
- TypeScript - Tipado estático
- Zustand - Gestión de estado global
- Recharts - Gráficas y visualizaciones
- Tailwind CSS - Estilos utilitarios
- shadcn/ui - Componentes UI accesibles
- localStorage - Persistencia del lado del cliente
- Node.js 18+
- npm, pnpm o yarn
-
Clonar el repositorio
git clone <tu-repositorio> cd video
-
Instalar dependencias
npm install # o pnpm install # o yarn install
-
Ejecutar en desarrollo
npm run dev # o pnpm dev # o yarn dev
-
Abrir en el navegador
http://localhost:3000
npm run build
npm startEste proyecto está configurado para desplegarse fácilmente en GitHub Pages.
- Configura GitHub Actions (ya incluido en
.github/workflows/deploy.yml) - Actualiza
next.config.tscon el nombre de tu repositorio:basePath: '/nombre-de-tu-repositorio',
- Push a la rama
main- El deploy se ejecutará automáticamente
# Build y deploy
npm run deploy
# O manualmente:
npm run build
git subtree push --prefix out origin gh-pages- Ve a Settings → Pages en tu repositorio
- En Source, selecciona GitHub Actions
- Tu sitio estará disponible en:
https://tu-usuario.github.io/nombre-del-repo/
📖 Para más detalles, consulta GITHUB_PAGES_SETUP.md
video/
├── app/ # Next.js App Router
│ ├── layout.tsx # Layout principal
│ ├── page.tsx # Página principal
│ └── globals.css # Estilos globales
├── components/ # Componentes React
│ ├── ui/ # Componentes UI (shadcn)
│ ├── CreateTaskForm.tsx
│ ├── TaskItem.tsx
│ ├── TaskList.tsx
│ ├── Timer.tsx
│ ├── PauseModal.tsx
│ ├── CompletionSummaryModal.tsx
│ └── TimeChart.tsx
├── domain/ # Tipos y modelos de dominio
│ └── types.ts
├── store/ # Estado global (Zustand)
│ └── useTaskStore.ts
├── utils/ # Utilidades
│ ├── time.ts # Cálculos de tiempo
│ └── storage.ts # Persistencia localStorage
└── lib/ # Utilidades compartidas
└── utils.ts
- Completa el formulario "Nueva tarea"
- Ingresa un título (obligatorio)
- Opcionalmente, agrega una descripción
- Haz clic en "Crear tarea"
- Haz clic en "Iniciar" para comenzar a trabajar
- El cronómetro comenzará a contar el tiempo de trabajo
- Si necesitas pausar:
- Haz clic en "Pausar"
- Ingresa un motivo obligatorio
- El tiempo de pausa se registrará por separado
- Para reanudar, haz clic en "Reanudar"
- Haz clic en "Completar" cuando termines
- Se abrirá automáticamente un modal con:
- Estadísticas de tiempo (trabajo, pausa, total)
- Número de pausas
- Lista de motivos de pausa
- Gráfica visual de tiempos por sesión
- Las tareas completadas muestran un resumen básico
- Haz clic en "Ver resumen completo" para ver todas las estadísticas y la gráfica
type Task = {
id: string
title: string
description?: string
status: 'idle' | 'running' | 'paused' | 'completed'
createdAt: number
completedAt?: number
sessions: Session[]
pauseCount: number
}type Session = {
id: string
type: 'work' | 'pause'
reason?: string // obligatorio si type === 'pause'
startAt: number
endAt?: number
}- Solo una tarea activa: Solo una tarea puede estar en estado
runninga la vez - Pausa automática: Al iniciar una nueva tarea, la tarea activa se pausa automáticamente
- Motivo obligatorio: Toda pausa requiere un motivo explícito
- Tareas completadas: No se pueden modificar después de completarse
- Cálculos en tiempo real: Los tiempos se calculan dinámicamente, no se almacenan
npm run dev # Servidor de desarrollo
npm run build # Build de producción
npm run start # Servidor de producción
npm run lint # Ejecutar linterEste proyecto es de código abierto y está disponible bajo la MIT License.
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Si tienes preguntas o sugerencias, no dudes en abrir un issue en el repositorio.
⭐ Si te gusta este proyecto, considera darle una estrella ⭐
Hecho con ❤️ usando Next.js y React