Skip to content

valentimpalacio/taskflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

51 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ TaskFlow

Modern Task Management β€” Full Stack Application

🌐 Live: taskflow-gestao.vercel.app

Next.js 16 TypeScript Prisma 7 Tailwind CSS 4 React 19 PostgreSQL

PRs Welcome MIT License Built with Next.js Live Demo

πŸ‡§πŸ‡· PortuguΓͺs Β· πŸ‡ΊπŸ‡Έ English Β· πŸ‡ͺπŸ‡Έ EspaΓ±ol



✨ Features

Feature Description
🌐 Multilingual Portuguese, English, and Spanish β€” switch with one click
πŸ” Authentication Secure sign-up/sign-in with NextAuth.js & bcrypt
πŸ“‹ Kanban Board Drag-and-drop tasks with optimistic updates for zero-latency UX
πŸ“Š Productivity Analytics Interactive bar charts powered by Recharts
πŸ—‚οΈ Gantt Chart View Visual timeline of project tasks
πŸ“… Calendar View See tasks organized by due dates in a calendar layout
πŸ” Advanced Search & Filters Real-time search and project filtering
🏷️ Tags System Categorize and filter tasks with custom tags
πŸ“ Subtasks Break down tasks into checklist subtasks
πŸ’¬ Comments Discuss tasks with inline comments
πŸ”” Notifications Real-time notification bell with unread indicators
πŸ”— Project Sharing Share projects with other users
πŸ” Duplicate Tasks Clone tasks with a single click
πŸ“‹ Advanced Reports Detailed productivity and project reports
πŸ•ΈοΈ Webhooks Integrate with external services via webhooks
πŸ“€ CSV Export Export your tasks to CSV with one click
πŸŒ™ Dark Mode System-aware theme with manual toggle, persisted in localStorage
πŸ“± Fully Responsive Mobile-first design that works on every screen size
⚑ Server State Management Expert-level caching with TanStack Query
🎨 Animated UI Smooth animations, counters, and micro-interactions
πŸ›‘οΈ Type Safety Full TypeScript with strict mode
πŸ§ͺ CI/CD & E2E Testing Jest unit tests + Playwright E2E tests

πŸ“Έ Screenshots

Authentication Views

Portuguese English Spanish
Sign In PT Sign In EN Sign In ES

Dashboard & Main Views

Portuguese English Spanish
Dashboard PT Dashboard EN Dashboard ES

Feature Showcases

Kanban Board Gantt Chart Calendar View
Kanban Board Gantt Chart Calendar View

Advanced Features

Analytics Reports Light Mode
Analytics Reports Dark Mode

Responsive Design

Mobile View
Mobile

οΏ½πŸ–₯️ Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
UI Library React 19
Styling Tailwind CSS 4
Icons Lucide React
Database PostgreSQL 16 + Prisma ORM 7
Auth NextAuth.js v4
State Management TanStack Query v5
Charts Recharts
i18n next-intl
Validation Zod
Testing Jest + Playwright
DevOps Docker + GitHub Actions

πŸš€ Quick Start

Prerequisites

  • Node.js 18+
  • npm / yarn / pnpm
  • PostgreSQL 16 (or use Docker)

Installation

# Clone the repository
git clone https://github.com/valentimpalacio/taskflow.git
cd taskflow

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env

Database Setup

# Generate Prisma client
npx prisma generate

# Push schema to database
npx prisma db push

Seed Demo Data

npm run seed

This creates a demo user:

  • Email: demo@taskflow.com
  • Password: demo123456

With 3 sample projects and 10 tasks to explore.

Run Development Server

npm run dev

Open http://localhost:3000 β€” automatically redirects to Portuguese.

Language URL
πŸ‡§πŸ‡· PortuguΓͺs http://localhost:3000/pt
πŸ‡ΊπŸ‡Έ English http://localhost:3000/en
πŸ‡ͺπŸ‡Έ EspaΓ±ol http://localhost:3000/es

🌍 Internationalization

TaskFlow supports 3 languages out of the box:

Language Code Status
πŸ‡§πŸ‡· PortuguΓͺs pt βœ… Default
πŸ‡ΊπŸ‡Έ English en βœ… Supported
πŸ‡ͺπŸ‡Έ EspaΓ±ol es βœ… Supported

Translations are stored in JSON files under src/i18n/messages/.


πŸ“ Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ [locale]/          # Internationalized routes
β”‚   β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”‚   β”œβ”€β”€ signin/    # Sign-in page
β”‚   β”‚   β”‚   └── signup/    # Sign-up page
β”‚   β”‚   β”œβ”€β”€ profile/       # User profile page
β”‚   β”‚   β”œβ”€β”€ error.tsx      # Error boundary
β”‚   β”‚   β”œβ”€β”€ loading.tsx    # Loading state
β”‚   β”‚   β”œβ”€β”€ not-found.tsx  # 404 page
β”‚   β”‚   β”œβ”€β”€ layout.tsx     # Locale layout
β”‚   β”‚   └── page.tsx       # Dashboard page
β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”‚   β”œβ”€β”€ auth/          # NextAuth + signup
β”‚   β”‚   β”œβ”€β”€ comments/      # Task comments
β”‚   β”‚   β”œβ”€β”€ duplicate/     # Duplicate tasks
β”‚   β”‚   β”œβ”€β”€ health/        # Health check
β”‚   β”‚   β”œβ”€β”€ notifications/ # User notifications
β”‚   β”‚   β”œβ”€β”€ project-access/# Project sharing
β”‚   β”‚   β”œβ”€β”€ projects/      # CRUD projects (+ templates)
β”‚   β”‚   β”œβ”€β”€ subtasks/      # Task subtasks
β”‚   β”‚   β”œβ”€β”€ tags/          # Task tags
β”‚   β”‚   β”œβ”€β”€ tasks/         # CRUD tasks (+ dependencies)
β”‚   β”‚   β”œβ”€β”€ test-db/       # DB connection test
β”‚   β”‚   β”œβ”€β”€ user/          # User profile
β”‚   β”‚   └── webhooks/      # Webhook management
β”‚   └── globals.css        # Global styles + animations
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ Dashboard.tsx       # Main dashboard
β”‚   └── dashboard/         # Dashboard sub-components
β”‚       β”œβ”€β”€ Header.tsx
β”‚       β”œβ”€β”€ StatsCards.tsx
β”‚       β”œβ”€β”€ KanbanBoard.tsx
β”‚       β”œβ”€β”€ ProjectList.tsx
β”‚       β”œβ”€β”€ AllTasks.tsx
β”‚       β”œβ”€β”€ ProjectForm.tsx
β”‚       β”œβ”€β”€ TaskForm.tsx
β”‚       β”œβ”€β”€ TaskEditModal.tsx
β”‚       β”œβ”€β”€ ProjectEditModal.tsx
β”‚       β”œβ”€β”€ Modal.tsx
β”‚       β”œβ”€β”€ Toast.tsx
β”‚       β”œβ”€β”€ ProductivityChart.tsx
β”‚       β”œβ”€β”€ AdvancedReports.tsx
β”‚       β”œβ”€β”€ CalendarView.tsx
β”‚       β”œβ”€β”€ CommentsSection.tsx
β”‚       β”œβ”€β”€ DuplicateTaskModal.tsx
β”‚       β”œβ”€β”€ GanttChartView.tsx
β”‚       β”œβ”€β”€ NotificationBell.tsx
β”‚       β”œβ”€β”€ ProjectSharingModal.tsx
β”‚       β”œβ”€β”€ SubtasksPanel.tsx
β”‚       β”œβ”€β”€ TagsInput.tsx
β”‚       └── WebhookManager.tsx
β”œβ”€β”€ i18n/                  # Internationalization config
β”œβ”€β”€ lib/                   # Utilities, auth, prisma
└── types/                 # TypeScript types

πŸ”— API Endpoints

Authentication

Method Endpoint Description
POST /api/auth/signup Register a new user
POST /api/auth/signin Sign in (NextAuth)
GET /api/auth/session Get current session

Projects

Method Endpoint Description
GET /api/projects Get all user projects with tasks
POST /api/projects Create a new project
PUT /api/projects/[id] Update a project
DELETE /api/projects/[id] Delete a project and its tasks
GET /api/projects/templates Get project templates

Tasks

Method Endpoint Description
POST /api/tasks Create a new task
PUT /api/tasks/[id] Update a task
DELETE /api/tasks/[id] Delete a task
POST /api/tasks/dependencies Manage task dependencies

Comments

Method Endpoint Description
GET /api/comments Get task comments
POST /api/comments Add a comment

Subtasks

Method Endpoint Description
GET /api/subtasks Get task subtasks
POST /api/subtasks Create / update subtasks

Tags

Method Endpoint Description
GET /api/tags Get all tags
POST /api/tags Create / manage tags

Notifications

Method Endpoint Description
GET /api/notifications Get user notifications
PUT /api/notifications Mark as read

Project Sharing

Method Endpoint Description
GET /api/project-access Get project collaborators
POST /api/project-access Share project with user

Webhooks

Method Endpoint Description
GET /api/webhooks List webhooks
POST /api/webhooks Create / manage webhook

Duplicate

Method Endpoint Description
POST /api/duplicate Duplicate a task

Profile

Method Endpoint Description
GET /api/user/profile Get current user profile
PUT /api/user/profile Update display name

Health

Method Endpoint Description
GET /api/health Application health check
GET /api/test-db Database connection test

πŸ§ͺ Testing

# Run unit tests
npm test

# Run E2E tests (Playwright)
npx playwright test

🐳 Docker

# Start PostgreSQL
docker compose up -d

# Run the app
npm run dev

πŸ›‘οΈ Security

  • Passwords hashed with bcrypt (10 salt rounds)
  • JWT-based session management
  • All API routes protected with session authentication
  • Server-side input validation on all endpoints
  • Cascade deletion ensures data consistency
  • Rate limiting on auth endpoints

πŸ“œ Scripts

Command Description
npm run dev Start development server
npm run build Build for production
npm start Start production server
npm run lint Run ESLint
npm test Run tests
npm run seed Seed database with demo data
npm run db:generate Regenerate Prisma client
npm run db:push Push schema to database
npm run db:migrate Run Prisma migrations
npm run db:studio Open Prisma Studio

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.



Built with ❀️ using Next.js, TypeScript, Prisma, and Tailwind CSS
⭐ Star this repo if you find it useful!

About

Modern task management platform built with Next.js 16, React 19 & PostgreSQL. Features Kanban board, Gantt charts, analytics, and real-time collaboration. Multilingual (PT/EN/ES) with full TypeScript support.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors