A modern, real-time Kanban board application built with Next.js, React, and Supabase. OpenKanban provides a seamless, collaborative experience for managing tasks and workflows with beautifully fluid animations and drag-and-drop capabilities.
- Real-time Collaboration: Experience instant updates across clients using Supabase Broadcast and Presence.
- Fluid Drag and Drop: Intuitively reorganize columns and tasks with
@hello-pangea/dndand Framer Motion. - Task Management: Create, edit, and organize tasks with descriptions and priority levels (low, medium, high, urgent).
- Column Controls: Customize your board layout by collapsing columns to focus on what matters most.
- Import and Export: Easily migrate your board data in and out of the application.
- Modern UI: A responsive, accessible, and aesthetically pleasing interface powered by Tailwind CSS v4.
- Framework: Next.js 14+ (App Router)
- Library: React 19
- Database and Real-time: Supabase (PostgreSQL)
- Styling: Tailwind CSS v4
- Animations: motion (Framer Motion)
- Drag and Drop:
@hello-pangea/dnd - Icons: Tabler Icons
- Linting and Formatting: Biome
- Language: TypeScript
Ensure you have the following installed on your local machine:
- Node.js (v20 or newer recommended)
- pnpm (preferred package manager)
- A Supabase account and project
- Clone the repository:
git clone https://github.com/your-username/openkanban.git
cd openkanban- Install dependencies:
pnpm install- Create a new Supabase project.
- Navigate to the SQL Editor in your Supabase dashboard.
- Execute the migration scripts found in the
supabase/migrationsdirectory in sequential order:001_create_boards.sql002_create_columns.sql003_create_tasks.sql004_add_is_collapsed_to_columns.sql
- Copy your Supabase URL and Anon Key.
Create a .env.local file in the root of your project and add your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keyStart the development server:
pnpm devOpen http://localhost:3000 in your browser to view the application.
/src/app: Next.js App Router pages and layouts./src/components: Reusable React components./board: Kanban board specific components (columns, tasks, modals)./landing: Components for the marketing and landing pages./ui: Shared UI elements.
/src/hooks: Custom React hooks, including real-time synchronization logic (use-realtime.ts,use-board.ts)./src/lib: Utility functions, database integrations, and TypeScript definitions./supabase: Database migration scripts and configurations.
- Optimistic UI Updates: The board implements optimistic updates for drag-and-drop operations, ensuring immediate visual feedback before the server confirms the change.
- Component Modularity: Complex UI parts are broken down into manageable components such as
Board,Column,TaskCard, andColumnHeader. - Real-time Sync: Changes are broadcasted across clients instantly, resolving conflicts seamlessly by preferring the latest server truth.
Contributions are welcome. Please ensure that you follow the existing code style. We use Biome for linting and formatting.
- Fork the project.
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m "Add some amazing feature" - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request.
Make sure to run the following commands before committing:
pnpm run format
pnpm run lintThis project is licensed under the MIT License. See the LICENSE file for more details.