Skip to content

Repository files navigation

TaskForge

Kanban-style project management platform with real-time collaboration, REST API, CLI client, and React dashboard.


Badges

TypeScriptExpressReactVitePostgreSQLWebSocketJWTVitestNodeLicense


English

Overview

TaskForge is a full-stack task management application built with a RESTful API backend in Express + TypeScript, a React + Vite dashboard, and a CLI client for terminal usage. It supports real-time collaboration via WebSockets, full-text search with PostgreSQL tsvector, JWT authentication, and activity audit logging.

Features

  • User authentication — register, login, refresh tokens (JWT access + refresh)
  • Card management — create, read, update, delete cards with optimistic concurrency (version field)
  • Full-text search — powered by PostgreSQL tsvector with Spanish language support
  • Labels — create, assign, and unassign labels to cards
  • Activity log — audit trail of all mutations with actor, action, entity type, and metadata
  • Real-time events — WebSocket server broadcasts card.created, card.updated, card.deleted, card.moved events
  • Reordering — move cards between lists with position tracking
  • Dashboard — React + Vite SPA with dark theme, login/register, card search, create, and delete
  • CLI — terminal client to login, list, create, move, and search cards
  • CI — GitHub Actions workflow running tests on Node 20 and 22

Tech Stack

LayerTechnology
BackendExpress 5, TypeScript 6, Node 22
DatabasePostgreSQL (via pg pool)
AuthJWT (access + refresh tokens), bcryptjs
Real-timeWebSocket (ws library)
FrontendReact 19, Vite 8, TypeScript 6
CLITypeScript, fetch API
TestingVitest 4, Supertest
CI/CDGitHub Actions

Getting Started

# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Fill in DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD# Seed the database with demo Kanban data
npm run db:seed
# Start development server
npm run dev
# Run tests
npm run test:run
# Start dashboard (separate terminal)cd dashboard && npm install && npm run dev

Demo Credentials

After seeding, you can log into the dashboard using:

  • Email:demo@taskforge.com
  • Password:password123

API Endpoints

MethodPathAuthDescription
POST/auth/registerNoRegister new user
POST/auth/loginNoLogin
POST/auth/refreshNoRefresh access token
GET/healthNoHealth check
GET/api/pingNoPing
GET/api/ping/meYesAuth check
GET/api/lists/:listId/cardsYesList cards in a list
POST/api/lists/:listId/cardsYesCreate card
GET/api/cards/:idYesGet card by id
PATCH/api/cards/:idYesUpdate card
DELETE/api/cards/:idYesDelete card
POST/api/cards/:id/moveYesMove card to another list
GET/api/cards/search?q=YesFull-text search
POST/api/labelsYesCreate label
GET/api/labelsYesList all labels
POST/api/cards/:cardId/labels/:labelIdYesAssign label
DELETE/api/cards/:cardId/labels/:labelIdYesUnassign label

Español

Resumen

TaskForge es una aplicación full-stack de gestión de tareas con una API REST en Express + TypeScript, un dashboard en React + Vite y un CLI para terminal. Soporta colaboración en tiempo real via WebSockets, búsqueda de texto completo con PostgreSQL tsvector, autenticación JWT y registro de auditoría de actividades.

Características

  • Autenticación de usuarios — registro, inicio de sesión, renovación de tokens (JWT access + refresh)
  • Gestión de tarjetas — crear, leer, actualizar, eliminar tarjetas con concurrencia optimista (campo version)
  • Búsqueda de texto completo — mediante PostgreSQL tsvector con soporte para español
  • Etiquetas — crear, asignar y desasignar etiquetas a las tarjetas
  • Registro de actividad — trazabilidad de auditoría de todas las mutaciones
  • Eventos en tiempo real — servidor WebSocket que transmite eventos card.created, card.updated, card.deleted, card.moved
  • Reordenamiento — mover tarjetas entre listas con seguimiento de posición
  • Dashboard — SPA en React + Vite con tema oscuro, login/registro, búsqueda, creación y eliminación de tarjetas
  • CLI — cliente de terminal para iniciar sesión, listar, crear, mover y buscar tarjetas
  • CI — flujo de GitHub Actions ejecutando pruebas en Node 20 y 22

Tecnologías

CapaTecnología
BackendExpress 5, TypeScript 6, Node 22
Base de datosPostgreSQL (pool pg)
AutenticaciónJWT (access + refresh tokens), bcryptjs
Tiempo realWebSocket (ws)
FrontendReact 19, Vite 8, TypeScript 6
CLITypeScript, API fetch
PruebasVitest 4, Supertest
CI/CDGitHub Actions

Primeros pasos

# Instalar dependencias
npm install
# Configurar entorno
cp .env.example .env
# Completar DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD# Sembrar la base de datos con datos de prueba
npm run db:seed
# Iniciar servidor de desarrollo
npm run dev
# Ejecutar pruebas
npm run test:run
# Iniciar dashboard (terminal separada)cd dashboard && npm install && npm run dev

Credenciales de Prueba

Tras sembrar la base de datos, puedes iniciar sesión en el dashboard usando:

  • Correo:demo@taskforge.com
  • Contraseña:password123

Project Structure

taskforge/
├── cli/ # CLI client
│ └── index.ts
├── dashboard/ # React + Vite frontend
│ ├── src/
│ │ ├── App.tsx
│ │ ├── api.ts
│ │ └── main.tsx
│ └── package.json
├── src/ # Backend API
│ ├── app.ts
│ ├── server.ts
│ ├── config.ts
│ ├── websocket.ts
│ ├── db/
│ │ └── pool.ts
│ ├── errors/
│ │ └── AppError.ts
│ ├── middleware/
│ │ ├── auth.ts
│ │ ├── errorHandler.ts
│ │ └── notFound.ts
│ ├── repositories/
│ │ ├── userRepository.ts
│ │ ├── cardRepository.ts
│ │ ├── labelRepository.ts
│ │ └── activityLogRepository.ts
│ ├── routes/
│ │ ├── auth.ts
│ │ ├── card.ts
│ │ ├── health.ts
│ │ ├── label.ts
│ │ └── ping.ts
│ ├── services/
│ │ ├── auth.ts
│ │ ├── card.ts
│ │ ├── label.ts
│ │ └── ping.ts
│ └── types/
│ └── api.ts
├── tests/ # Integration tests
│ ├── auth.test.ts
│ ├── card.test.ts
│ └── health.test.ts
├── .github/workflows/
│ └── test.yml
├── package.json
└── tsconfig.json

License

MIT — see LICENSE for details.

About

TaskForge — Kanban-style project management platform with REST API, WebSockets, React + Vite dashboard and CLI client. Real-time collaboration, PostgreSQL full-text search, JWT authentication.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages