Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Qubi

Agenda de equipo para organizar el trabajo por proyectos: crea un equipo, asigna tareas a sus miembros, sigue su estado en un tablero y registra las horas dedicadas a cada proyecto. Gratuita, con cuentas propias e inicio de sesión con Google, autoalojada en un VPS.

El plan de trabajo completo y el roadmap por fases está en PLAN.md.

Funcionalidades

  • Equipos — cada espacio de trabajo es un equipo con sus miembros y roles (OWNER / ADMIN / MEMBER / GUEST); invitación por email.
  • Proyectos — agrupan las tareas y las horas; cada uno con su color.
  • Tareas — asignar responsable, prioridad y fecha límite; estado en tres fases (Por hacer / En curso / Hecha). Tres vistas por proyecto: tablero (kanban), lista (edición en línea) y calendario (por fecha límite). Detalle de tarea con descripción y comentarios.
  • Mi agenda — vista transversal de tus tareas pendientes, agrupadas en Vencidas / Hoy / Esta semana / Más adelante / Sin fecha.
  • Registro de horas — hoja semanal por proyecto y día, con totales por día, por proyecto y de la semana.
  • Cronómetro — siempre ligado a un proyecto y una tarea concreta (pendiente o en curso; si estaba pendiente pasa a En curso al arrancar). Widget flotante con pausa, avance rápido y botón de cámara que lleva a las evidencias de la tarea, donde se pega una captura del portapapeles, se arrastran archivos y se escribe el avance con enlaces y menciones. Las sesiones de menos de 10 minutos no cuentan como horas (se avisa y el avance sí se conserva). Mientras se documenta, el reloj se pausa o cuenta la mitad, según lo que decida el manager al crear el proyecto (afinable tarea por tarea).

Stack

  • Next.js 16 (App Router) + React 19 + TypeScript
  • PostgreSQL + Prisma 7 (con driver adapter @prisma/adapter-pg)
  • Tailwind CSS v4 + shadcn/ui
  • Auth.js (NextAuth v5) — Google OAuth y email/contraseña
  • Redis (presencia/caché) y MinIO (almacenamiento de archivos S3) en local
  • Calidad: ESLint + Prettier + Husky + lint-staged

Requisitos

  • Node.js 22+ (probado con Node 26)
  • Docker (para la base de datos, Redis y MinIO en local)

Puesta en marcha (desarrollo)

# 1. Instalar dependencias
npm install

# 2. Crear el archivo .env (mínimo: DATABASE_URL y AUTH_SECRET; ver más abajo)

# 3. Levantar la infraestructura local (Postgres, Redis, MinIO)
docker compose up -d

# 4. Aplicar las migraciones de la base de datos
npm run db:migrate

# 5. Arrancar la app
npm run dev

Abre http://localhost:3000.

Cuentas de invitado (datos de demostración)

npm run db:seed crea el espacio Qubi Demo con contenido en todas las pantallas y dos cuentas listas para usar (las credenciales se muestran en el login):

Cuenta Correo Rol
Manager invitado.admin@qubi.local OWNER (admin)
Trabajador invitado.miembro@qubi.local MEMBER

Contraseña de ambas: QubiDemo2026!. El seed es idempotente y solo toca ese espacio, así que se puede repetir sin miedo — también en producción (ver DEPLOY-VPS.md).

Variables de entorno (desarrollo)

Mínimo para arrancar (coincide con docker-compose.yml):

DATABASE_URL="postgresql://qubi:qubi_dev_password@localhost:5433/qubi?schema=public"
AUTH_SECRET="genera-uno-con: openssl rand -base64 32"

Opcionales: AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET (login con Google) y las S3_* (MinIO, para subir archivos). El listado completo está en .env.production.example.

Postgres se expone en el puerto 5433 del host (para no chocar con otros Postgres locales). La consola de MinIO está en http://localhost:9001 (usuario/clave: qubi / qubi_dev_password).

Scripts

Script Descripción
npm run dev Servidor de desarrollo
npm run build Build de producción
npm run start Servir el build
npm run lint ESLint
npm run format Formatear con Prettier
npm run typecheck Comprobar tipos (tsc)
npm run db:migrate Crear/aplicar migraciones
npm run db:generate Generar el cliente de Prisma
npm run db:seed Espacio de demo + cuentas de invitado
npm run db:studio Abrir Prisma Studio
npm test Tests (Vitest)

Estructura

src/
├─ app/          # Rutas (App Router): w/[workspaceId]/{projects,tasks,agenda,hours,...}
├─ components/   # UI (shadcn + propios)
├─ features/     # Lógica por dominio: project, task, time, workspace, chat, ...
├─ lib/          # db (prisma), auth, storage, utils
├─ server/       # Server actions y servicios (por dominio)
└─ generated/    # Cliente Prisma (generado, no se commitea)
prisma/          # schema.prisma y migraciones
docker-compose.yml

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages