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.
- About The Project
- Features
- Tech Stack
- Prerequisites
- Installation
- Usage
- Project Structure
- Configuration
- Contributing
- License
- Contact & Acknowledgements
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.
- π§© 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
- π 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
- π 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
- π’ 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
- π§ Dedicated admin dashboard for user management
- π« Ability to ban/unban users with reasons and expiration
- ποΈ Admin-level user deletion
- π 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
| 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 |
| Nodemailer | |
| Image API | Unsplash via unsplash-js |
| Icons | Lucide React |
| Notifications | Sonner |
| Analytics | Vercel Analytics |
| Linting | ESLint 9 |
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 |
git clone https://github.com/your-username/taskflow.git
cd taskflownpm installCopy the example environment file and fill in your credentials:
cp .env.example .envSee the Configuration section for details on each variable.
Generate the Prisma client and run migrations:
npx prisma generate
npx prisma db pushnpm run devOpen http://localhost:3000 in your browser to see the app π
| 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 |
| 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) |
- Sign up with email/password, Google, GitHub, or a magic link
- Verify your email (check inbox for verification link)
- Create a workspace from the dashboard
- Create a board β pick a beautiful Unsplash image as the background
- Add lists (e.g., "To Do", "In Progress", "Done")
- Create cards within lists β add descriptions, set priority, assign due dates
- Drag & drop cards between lists or reorder them
- Filter cards by status or priority using the board navbar
- Invite members to collaborate with your team
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
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/developersTip
Generating BETTER_AUTH_SECRET: Run openssl rand -base64 32 in your terminal.
Important
Never commit your .env file. It's already included in .gitignore.
Contributions are what make the open-source community amazing. Any contributions you make are greatly appreciated!
- Fork the repository
- Clone your fork locally
git clone https://github.com/your-username/taskflow.git
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes and commit them
git commit -m "feat: add amazing feature" - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request against
main
| Prefix | Use Case |
|---|---|
feature/ |
New features |
fix/ |
Bug fixes |
docs/ |
Documentation updates |
refactor/ |
Code refactoring |
chore/ |
Maintenance tasks |
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
- 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
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.
Bipul Chamoli
- GitHub: @bipulchamoli
- Email: bipulchamoli45@gmail.com
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