Skip to content

TaskZenith es una aplicación web de gestión de tareas que combina un diseño minimalista con la potencia de la inteligencia artificial.

Notifications You must be signed in to change notification settings

sjaquer/TaskZenith

Repository files navigation

TaskZenith Logo

TaskZenith - Gestión Corporativa de Tareas

"Gestión colaborativa y sincronización en la nube para equipos productivos."



🧠 Descripción General

TaskZenith es una plataforma avanzada de gestión de tareas corporativas diseñada para equipos que necesitan colaboración en tiempo real, sincronización multiplataforma y personalización completa de su espacio de trabajo.

Características Principales

  • Dashboard Adaptativo: Sistema de grid libre (48 columnas) con widgets redimensionables y reorganizables
  • 🔐 Autenticación Robusta: Códigos de acceso con roles diferenciados (Admin/Operador)
  • ☁️ Sincronización en la Nube: Configuración personal guardada en Firestore para acceso desde cualquier dispositivo
  • 🎨 Temas Personalizables: 8 paletas de colores predefinidas con guardado automático
  • 📊 Múltiples Vistas: Todo List, Kanban, Calendario, Historial y Estadísticas
  • ⏱️ Pomodoro Timer: Temporizador integrado para gestión de tiempo
  • 🔔 Alertas Inteligentes: Notificaciones de tareas vencidas y próximas
  • 📱 Responsive Design: Optimizado para escritorio, tablet y móvil

🛠️ Arquitectura Técnica

Stack Tecnológico

  • Frontend: Next.js 15.5.9 (App Router) + React 19 + TypeScript 5
  • UI Framework: TailwindCSS + shadcn/ui components
  • Base de Datos: Firebase Firestore (sincronización en tiempo real)
  • Autenticación: Firebase Authentication con roles personalizados
  • Estado Global: React Context API con persistencia en Firestore
  • Interactividad: Sistema drag-and-drop personalizado con detección de colisiones

Sistema de Grid Personalizable

El dashboard utiliza un sistema de grid adaptativo de 48 columnas virtuales:

  • Posicionamiento fluido: Basado en porcentajes para responsividad total
  • Altura libre: Definida en píxeles para máxima flexibilidad
  • Drag & Drop: Movimiento libre con colisiones opcionales
  • Snap magnético: Alineación automática cada 10px
  • Persistencia: Guardado automático en Firestore por usuario
// Ejemplo de configuración de widget
{
  id: "stats",
  x: 0,        // columna inicial (0-47)
  y: 0,        // posición Y en píxeles
  width: 48,   // ancho en columnas
  height: 180, // altura en píxeles
  minW: 16,    // ancho mínimo
  minH: 140    // altura mínima
}

📋 Estructura del Proyecto

TaskZenith/
├── public/
│   └── logo.png
├── src/
│   ├── app/
│   │   ├── (auth)/
│   │   │   ├── login/page.tsx
│   │   │   └── signup/page.tsx
│   │   ├── dashboard/
│   │   │   ├── page.tsx          # Dashboard principal con grid
│   │   │   ├── todo/page.tsx
│   │   │   ├── kanban/page.tsx
│   │   │   ├── schedule/page.tsx
│   │   │   └── history/page.tsx
│   │   ├── globals.css
│   │   ├── grid-layout.css       # Estilos del grid adaptativo
│   │   └── layout.tsx
│   ├── components/
│   │   ├── layout/
│   │   │   ├── app-shell.tsx     # Sidebar + navegación
│   │   │   └── page-wrapper.tsx
│   │   ├── tasks/
│   │   │   ├── task-stats-cards.tsx    # Widgets responsive
│   │   │   ├── todo-list.tsx
│   │   │   ├── kanban-board.tsx
│   │   │   ├── calendar-widget.tsx
│   │   │   ├── due-tasks-widget.tsx
│   │   │   └── pomodoro-timer.tsx
│   │   └── ui/                   # Componentes shadcn/ui
│   ├── contexts/
│   │   ├── auth-context.tsx      # Autenticación + roles
│   │   ├── task-context.tsx      # Estado de tareas
│   │   └── theme-context.tsx     # Temas + sincronización
│   ├── hooks/
│   │   └── use-toast.ts
│   ├── lib/
│   │   ├── firebase.ts           # Configuración Firebase
│   │   ├── types.ts              # Definiciones TypeScript
│   │   └── utils.ts
│   └── ai/                        # (Funcionalidad futura)
├── package.json
├── tailwind.config.ts
├── next.config.ts
└── tsconfig.json

💾 Instalación y Configuración

Requisitos Previos

  • Node.js 18.17+
  • npm o yarn
  • Proyecto Firebase configurado

1. Clona el Repositorio

git clone https://github.com/sjaquer/TaskZenith.git
cd TaskZenith

2. Instala Dependencias

npm install

3. Configura Variables de Entorno

Crea un archivo .env.local en la raíz del proyecto:

# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=tu_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=tu_proyecto.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=tu_proyecto_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=tu_proyecto.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=123456789
NEXT_PUBLIC_FIREBASE_APP_ID=1:123456789:web:abcdef

4. Configura Firebase

  1. Ve a Firebase Console
  2. Crea un nuevo proyecto o usa uno existente
  3. Habilita Authentication (Email/Password)
  4. Habilita Firestore Database
  5. Configura las reglas de seguridad de Firestore:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    match /tasks/{taskId} {
      allow read, write: if request.auth != null;
    }
    match /projects/{projectId} {
      allow read, write: if request.auth != null;
    }
    match /userPreferences/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

5. Ejecuta en Modo Desarrollo

npm run dev

Abre tu navegador en http://localhost:3000

6. Build de Producción

npm run build
npm start

🎯 Códigos de Acceso

La aplicación usa códigos de acceso para diferenciar roles:

  • TASKZENITH-ADMIN: Acceso de administrador (todas las funcionalidades)
  • TASKZENITH-CORP: Acceso de operador (funciones estándar)

Estos códigos se validan en el registro (signup). Puedes modificarlos en src/app/(auth)/signup/page.tsx.


🎨 Personalización

Temas

El sistema incluye 8 temas predefinidos:

  1. Default Dark - Tema oscuro base
  2. Lavanda Suave - Tonos violetas relajantes
  3. Bosque Neón - Verdes brillantes
  4. Océano Profundo - Azules intensos
  5. Café Caliente - Marrones cálidos
  6. Rojo Escarlata - Rojos dramáticos
  7. Menta Fresca - Verdes agua
  8. Atardecer Neón - Rosas y amarillos

Los temas se configuran en src/contexts/theme-context.tsx y se guardan automáticamente en Firestore por usuario.

Widgets del Dashboard

Puedes activar/desactivar widgets desde el botón "Configuración":

  • Estadísticas: Resumen de tareas
  • Lista de Tareas: Gestión principal
  • Vencimientos: Tareas próximas
  • Pomodoro: Temporizador
  • Calendario: Vista mensual

Cada widget es:

  • Redimensionable: Ajusta ancho y alto libremente
  • Movible: Arrastra a cualquier posición
  • Responsive: Se adapta automáticamente al tamaño de pantalla
  • Persistente: Tu configuración se guarda en la nube

🚀 Funcionalidades Avanzadas

Dashboard Adaptativo

El sistema de grid permite una personalización total:

// Modo Edición
- Click en "Editar" para activar modo de edición
- Arrastra widgets desde la barra de título (azul)
- Redimensiona desde la esquina inferior derecha
- Los cambios se guardan automáticamente en Firestore

// Configuración
- Botón "Configuración" para acceder a:
  - Selector de temas (8 paletas)
  - Activar/desactivar widgets
  - Auto-ordenar (compactación vertical)
  - Reset a configuración por defecto

Sincronización Multi-Dispositivo

Todas las preferencias se sincronizan automáticamente:

  • Layouts del dashboard: Posición y tamaño de cada widget
  • Temas: Paleta de colores seleccionada
  • Tareas y Proyectos: Datos completos en tiempo real
  • Configuración de widgets: Cuáles están activos

Inicia sesión desde cualquier dispositivo y encontrarás tu espacio exactamente como lo dejaste.


📱 Responsive Design

La aplicación se adapta completamente a diferentes tamaños de pantalla:

  • Desktop (>1024px): Sidebar lateral fijo + grid completo
  • Tablet (768-1024px): Navegación adaptada + grid optimizado
  • Mobile (<768px): Bottom navigation + grid en columna única

Los widgets internos también son responsive:

  • Grid adaptativo en estadísticas (2x2 en móvil, 4x1 en desktop)
  • Pomodoro con texto fluido (clamp())
  • Listas con scroll vertical automático
  • Calendario con layout flexible

🔒 Seguridad

  • Autenticación Firebase: Sistema robusto con gestión de sesiones
  • Roles personalizados: Control de acceso basado en códigos
  • Reglas Firestore: Validación de permisos en servidor
  • Validación de formularios: Zod + React Hook Form
  • Variables de entorno: Configuración sensible protegida

📝 Licencia

Distribuido bajo la Licencia MIT. Consulta LICENSE para más información.


👨‍💻 Autor

Desarrollado por Sebastián Jaque


🤝 Contribuciones

Las contribuciones son bienvenidas. Para cambios importantes:

  1. Fork el proyecto
  2. Crea una rama (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📮 Soporte

Si encuentras algún problema o tienes sugerencias, abre un issue.


Hecho con ❤️ usando Next.js, React y Firebase

About

TaskZenith es una aplicación web de gestión de tareas que combina un diseño minimalista con la potencia de la inteligencia artificial.

Topics

Resources

Stars

Watchers

Forks

Languages