Skip to content

Repository files navigation

πŸš€ TaskFlow

Control your projects from day one.

A modern, full-stack project management platform built with Next.js β€” combining the simplicity of Trello with powerful task management capabilities.

Next.js React TypeScript Prisma Tailwind CSS License: MIT

Live Demo Β· Report Bug Β· Request Feature


πŸ“‹ Table of Contents


🎯 About The Project

TaskFlow is an open-source, Kanban-style project management tool designed for teams and individuals who want a clean, intuitive way to organize work. It solves the problem of scattered task tracking by providing a centralized workspace where teams can create boards, manage lists, track cards with priorities and deadlines, and collaborate in real time.

Whether you're managing a software sprint, coordinating a marketing campaign, or planning personal goals β€” TaskFlow gives you the visual clarity and flexibility to stay on top of everything.

Why TaskFlow?

  • 🧩 Intuitive Kanban Boards β€” drag-and-drop lists and cards, just like you'd expect
  • πŸ‘₯ Multi-Workspace Collaboration β€” invite team members with role-based access
  • πŸ”’ Secure by Default β€” full authentication with email/password, OAuth, and magic links
  • ⚑ Blazing Fast β€” built on Next.js 16 with React Compiler and server actions
  • 🎨 Beautiful UI β€” dark theme with a polished, modern design powered by Radix UI + Tailwind

✨ Features

Boards & Task Management

  • πŸ“‹ Create unlimited boards with Unsplash background images
  • πŸ“ Organize tasks with drag-and-drop lists (powered by @hello-pangea/dnd)
  • πŸƒ Rich card detail view with title, description, status, priority, due dates, and member assignment
  • πŸ” Advanced filtering β€” search cards by keyword, filter by status (Pending/Completed) and priority (High/Moderate/Low)
  • ↕️ Reorder lists and cards across lists with optimistic UI updates

Authentication & Security

  • πŸ” Full auth via Better Auth β€” email/password, Google OAuth, GitHub OAuth, and magic link login
  • βœ‰οΈ Email verification with Nodemailer integration
  • πŸ”‘ Password reset flow with secure token-based links
  • πŸ›‘οΈ Rate limiting to prevent abuse
  • πŸ§‘β€πŸ’Ό Role-based access control β€” User and Admin roles with fine-grained permissions

Workspace & Team Collaboration

  • 🏒 Multi-workspace support β€” create and manage multiple workspaces
  • πŸ‘₯ Team members management with Admin and Member roles
  • βš™οΈ Workspace settings β€” rename, update URL slug, add description, or delete

Admin Panel

  • πŸ”§ Dedicated admin dashboard for user management
  • 🚫 Ability to ban/unban users with reasons and expiration
  • πŸ—‘οΈ Admin-level user deletion

Additional Features

  • πŸ“Š Audit logs β€” track create, update, and delete actions across boards, lists, and cards
  • πŸ“ˆ Usage limits per workspace (configurable board limits)
  • πŸŒ— Sleek dark mode UI throughout
  • πŸ“± Fully responsive β€” mobile-friendly sidebar with hamburger navigation
  • πŸ”” Beautiful toast notifications via Sonner
  • πŸ“„ Pricing page with Starter, Professional, and Enterprise tiers
  • πŸ–ΌοΈ Templates page for quick-start board creation

πŸ› οΈ Tech Stack

Layer Technology
Framework Next.js 16 (App Router, Server Actions)
Language TypeScript 5
UI Library React 19
Styling Tailwind CSS 4
Component Library Radix UI (Dialog, Dropdown, Select, Tabs, Tooltip, etc.)
Database PostgreSQL (via Neon)
ORM Prisma 6
Authentication Better Auth (Email, Google OAuth, GitHub OAuth, Magic Link)
Password Hashing Argon2 via @node-rs/argon2
Form Handling React Hook Form + Zod
Drag & Drop @hello-pangea/dnd
Charts Recharts
Email Nodemailer
Image API Unsplash via unsplash-js
Icons Lucide React
Notifications Sonner
Analytics Vercel Analytics
Linting ESLint 9

πŸ“¦ Prerequisites

Make sure you have the following installed before setting up the project:

Tool Version Installation
Node.js >=18.0.0 Download
npm >=9.0.0 Comes with Node.js
Git Latest Download
PostgreSQL Any (cloud recommended) Neon / Supabase

πŸš€ Installation

1. Clone the repository

git clone https://github.com/your-username/taskflow.git
cd taskflow

2. Install dependencies

npm install

3. Set up environment variables

Copy the example environment file and fill in your credentials:

cp .env.example .env

See the Configuration section for details on each variable.

4. Set up the database

Generate the Prisma client and run migrations:

npx prisma generate
npx prisma db push

5. Start the development server

npm run dev

Open http://localhost:3000 in your browser to see the app πŸŽ‰


πŸ’» Usage

Development Commands

Command Description
npm run dev Start the dev server
npm run build Build for production
npm start Start the production server
npm run lint Run ESLint

Database Commands

Command Description
npx prisma generate Generate Prisma Client
npx prisma db push Push schema to database
npx prisma migrate dev Create & apply migrations
npx prisma studio Open Prisma Studio (DB GUI)

Workflow

  1. Sign up with email/password, Google, GitHub, or a magic link
  2. Verify your email (check inbox for verification link)
  3. Create a workspace from the dashboard
  4. Create a board β€” pick a beautiful Unsplash image as the background
  5. Add lists (e.g., "To Do", "In Progress", "Done")
  6. Create cards within lists β€” add descriptions, set priority, assign due dates
  7. Drag & drop cards between lists or reorder them
  8. Filter cards by status or priority using the board navbar
  9. Invite members to collaborate with your team

πŸ“ Project Structure

taskflow/
β”œβ”€β”€ actions/                  # Server actions (CRUD operations)
β”‚   β”œβ”€β”€ create-board/         # Board creation with validation
β”‚   β”œβ”€β”€ create-card/          # Card creation
β”‚   β”œβ”€β”€ create-list/          # List creation
β”‚   β”œβ”€β”€ delete-board/         # Board deletion
β”‚   β”œβ”€β”€ delete-list/          # List deletion
β”‚   β”œβ”€β”€ update-card/          # Card updates (title, status, priority, etc.)
β”‚   β”œβ”€β”€ update-card-order/    # Drag & drop card reordering
β”‚   β”œβ”€β”€ update-list-order/    # Drag & drop list reordering
β”‚   β”œβ”€β”€ fetch-images.ts       # Unsplash image fetching
β”‚   β”œβ”€β”€ send-email.action.ts  # Email dispatch via Nodemailer
β”‚   └── sign-*.action.ts      # Auth-related actions
β”‚
β”œβ”€β”€ app/                      # Next.js App Router pages
β”‚   β”œβ”€β”€ admin/                # Admin dashboard
β”‚   β”œβ”€β”€ auth/                 # Auth pages (login, register, verify, etc.)
β”‚   β”œβ”€β”€ board/[boardId]/      # Dynamic board view
β”‚   β”œβ”€β”€ card/                 # Card detail page
β”‚   β”œβ”€β”€ dashboard/            # User dashboard (boards overview)
β”‚   β”œβ”€β”€ members/              # Team members management
β”‚   β”œβ”€β”€ pricing/              # Pricing page
β”‚   β”œβ”€β”€ profile/              # User profile
β”‚   β”œβ”€β”€ settings/             # Workspace & app settings
β”‚   β”œβ”€β”€ templates/            # Board templates
β”‚   β”œβ”€β”€ api/                  # API routes
β”‚   β”œβ”€β”€ layout.tsx            # Root layout
β”‚   β”œβ”€β”€ page.tsx              # Landing page
β”‚   └── globals.css           # Global styles
β”‚
β”œβ”€β”€ components/               # React components
β”‚   β”œβ”€β”€ ui/                   # Radix-based UI primitives (Button, Input, Dialog, etc.)
β”‚   β”œβ”€β”€ form/                 # Form-specific components
β”‚   β”œβ”€β”€ board-navbar.tsx      # Board toolbar with search & filters
β”‚   β”œβ”€β”€ card-detail-view.tsx  # Full card detail view with sidebar
β”‚   β”œβ”€β”€ dashboard-sidebar.tsx # Dashboard navigation sidebar
β”‚   β”œβ”€β”€ list-container.tsx    # Drag & drop list container
β”‚   β”œβ”€β”€ list-item.tsx         # Individual list component
β”‚   β”œβ”€β”€ card-item.tsx         # Individual card component
β”‚   └── ...                   # Landing page sections, auth forms, etc.
β”‚
β”œβ”€β”€ lib/                      # Utility libraries & configuration
β”‚   β”œβ”€β”€ auth.ts               # Better Auth configuration
β”‚   β”œβ”€β”€ auth-client.ts        # Client-side auth utilities
β”‚   β”œβ”€β”€ prisma.ts             # Prisma client singleton
β”‚   β”œβ”€β”€ permissions.ts        # RBAC access control definitions
β”‚   β”œβ”€β”€ rate-limit.ts         # Rate limiter implementation
β”‚   β”œβ”€β”€ argon2.ts             # Password hashing utilities
β”‚   β”œβ”€β”€ nodemailer.ts         # Email transport config
β”‚   β”œβ”€β”€ unsplash.ts           # Unsplash API client
β”‚   └── utils.ts              # General helper functions
β”‚
β”œβ”€β”€ prisma/
β”‚   └── schema.prisma         # Database schema (User, Board, List, Card, etc.)
β”‚
β”œβ”€β”€ middleware.ts              # Auth middleware (route protection)
β”œβ”€β”€ next.config.ts             # Next.js configuration
β”œβ”€β”€ package.json               # Dependencies & scripts
└── tsconfig.json              # TypeScript configuration

βš™οΈ Configuration

Create a .env file in the root directory. Here's a template with all required variables:

# ──────────────────────────────────────────────
# πŸ—„οΈ Database (PostgreSQL β€” Neon / Supabase)
# ──────────────────────────────────────────────
DATABASE_URL="postgresql://user:password@host:5432/database?sslmode=require"

# ──────────────────────────────────────────────
# πŸ” Authentication (Better Auth)
# ──────────────────────────────────────────────
BETTER_AUTH_SECRET=your_random_secret_here      # Generate: openssl rand -base64 32
BETTER_AUTH_URL=http://localhost:3000            # Base URL of your app
NEXT_PUBLIC_API_URL=http://localhost:3000/

# ──────────────────────────────────────────────
# πŸ§‘β€πŸ’Ό Admin Configuration
# ──────────────────────────────────────────────
ADMIN_EMAILS="admin1@example.com;admin2@example.com;"

# ──────────────────────────────────────────────
# πŸ”‘ OAuth Providers
# ──────────────────────────────────────────────
# Google β€” https://console.cloud.google.com/
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

# GitHub β€” https://github.com/settings/developers
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret

# ──────────────────────────────────────────────
# πŸ“§ Email (Nodemailer / Gmail App Password)
# ──────────────────────────────────────────────
NODEMAILER_USER=your_email@gmail.com
NODEMAILER_APP_PASSWORD=your_app_password        # Gmail: Security β†’ App Passwords

# ──────────────────────────────────────────────
# πŸ–ΌοΈ Image API (Unsplash)
# ──────────────────────────────────────────────
UNSPLASH_ACCESS_KEY=your_unsplash_access_key     # https://unsplash.com/developers

Tip

Generating BETTER_AUTH_SECRET: Run openssl rand -base64 32 in your terminal.

Important

Never commit your .env file. It's already included in .gitignore.


🀝 Contributing

Contributions are what make the open-source community amazing. Any contributions you make are greatly appreciated!

Getting Started

  1. Fork the repository
  2. Clone your fork locally
    git clone https://github.com/your-username/taskflow.git
  3. Create a feature branch
    git checkout -b feature/amazing-feature
  4. Make your changes and commit them
    git commit -m "feat: add amazing feature"
  5. Push to your fork
    git push origin feature/amazing-feature
  6. Open a Pull Request against main

Branch Naming Convention

Prefix Use Case
feature/ New features
fix/ Bug fixes
docs/ Documentation updates
refactor/ Code refactoring
chore/ Maintenance tasks

Commit Convention

We follow Conventional Commits:

feat: add card assignment feature
fix: resolve drag-drop issue on mobile
docs: update installation instructions
refactor: simplify auth middleware logic

Code Style

  • Use TypeScript for all new files
  • Follow the existing ESLint configuration
  • Use Prettier for formatting (if configured)
  • Write meaningful commit messages
  • Keep PRs focused and small

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.

MIT License

Copyright (c) 2025 Bipul Chamoli

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

πŸ“¬ Contact & Acknowledgements

Author

Bipul Chamoli

Acknowledgements

A huge thanks to the open-source projects and services that make TaskFlow possible:

  • Next.js β€” The React framework for the web
  • Better Auth β€” Authentication for the modern web
  • Prisma β€” Next-generation ORM for Node.js & TypeScript
  • Radix UI β€” Unstyled, accessible UI primitives
  • Tailwind CSS β€” Utility-first CSS framework
  • Unsplash β€” Beautiful free images & photos
  • Lucide β€” Beautiful & consistent icon toolkit
  • @hello-pangea/dnd β€” Drag and drop for lists
  • Neon β€” Serverless PostgreSQL
  • Vercel β€” Deployment platform

⭐ If you found this project helpful, please consider giving it a star! ⭐

Made with ❀️ by Bipul Chamoli

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages