A simple, responsive Kanban board application built with React, TypeScript, and Redux Toolkit. This project allows users to create and manage boards with cards that can be moved between different status columns (To Do, In Progress, Done).
This Kanban board application provides a simple yet powerful way to organize tasks and projects. Users can:
- Create multiple boards for different projects
- Add cards to boards with custom titles
- Drag and drop cards between status columns (To Do, In Progress, Done)
- Delete boards when no longer needed
The application features a clean, responsive design that works well on both desktop and mobile devices.
To set up the project locally, follow these steps:
-
Clone the repository:
git clone <repository-url>
-
Navigate to the project directory:
cd kanban
-
Install dependencies:
npm install
To run the application in development mode:
npm run dev
This will start the development server, usually on http://localhost:5173.
To create a production build:
npm run build
To preview the production build locally:
npm run preview
-
Creating a Board:
- Click the "افزودن جدول" (Add Board) button on the main page
- Enter a title for your new board
- Click "ساخت جدول" (Create Board)
-
Managing Cards:
- Click on a board to view its details
- Click "افزودن کارت" (Add Card) to create a new card
- Enter a title for your card
- Cards can be dragged between columns to update their status
-
Deleting a Board:
- From the board detail view, click the "حذف جدول" (Delete Board) button
- Confirm deletion in the popup dialog
src/
├── page/ # Page components
│ ├── BoardDetail.tsx # Board detail view with columns
│ ├── Boards.tsx # Main boards list view
│ ├── CardDetail.tsx # Card detail view (placeholder)
│ ├── Layout.tsx # Main layout component
│ └── Notfound.tsx # 404 error page
├── store/ # Redux store configuration
│ ├── boardSlice.ts # Board-related reducers and actions
│ └── index.ts # Store configuration
├── types/ # TypeScript type definitions
│ └── index.ts
├── App.tsx # Main application component with routing
├── index.css # Global styles
└── main.tsx # Application entry point
- react (^19.1.1) - UI library
- react-dom (^19.1.1) - React DOM rendering
- react-router (^7.8.2) - Routing library
- @reduxjs/toolkit (^2.8.2) - State management
- react-redux (^9.2.0) - React bindings for Redux
- tailwindcss (^4.1.12) - Utility-first CSS framework
- @tailwindcss/vite (^4.1.12) - Tailwind CSS Vite integration
- lucide-react (^0.542.0) - Icon library
- react-hot-toast (^2.6.0) - Notification library
- typescript (~5.8.3) - TypeScript compiler
- vite (^7.1.2) - Build tool and development server
- @vitejs/plugin-react-swc (^4.0.0) - React plugin for Vite
- @types/react (^19.1.10) - TypeScript definitions for React
- @types/react-dom (^19.1.7) - TypeScript definitions for React DOM
- eslint (^9.33.0) - Linting utility
- typescript-eslint (^8.39.1) - TypeScript ESLint plugin
Contributions are welcome! To contribute to this project:
- Fork the repository
- Create a new branch for your feature or bug fix
- Make your changes
- Ensure your code follows the existing style and conventions
- Write clear, descriptive commit messages
- Submit a pull request with a detailed description of your changes
Please ensure all tests pass before submitting a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
For support, feature requests, or bug reports, please:
- Open an issue on the project's GitHub repository
- Provide detailed information about the problem or request
- Include steps to reproduce any bugs if applicable
For general inquiries, you can contact the development team through the repository's discussion section.