A modern, responsive Kanban board application built with React and TypeScript, featuring a beautiful UI powered by shadcn/ui and Tailwind CSS. Perfect for teams and individuals to manage tasks efficiently with drag-and-drop functionality, real-time updates, and responsive design.
| Desktop | Tablet | Mobile |
|---|---|---|
![]() |
![]() |
![]() |
- Drag & Drop Interface: Intuitive task management with smooth drag-and-drop between columns
- Real-time Updates: Instant synchronization of task changes across the board
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Dark/Light Theme: Toggle between themes with persistent user preference
- Search & Filter: Advanced search functionality with multiple filter options
- Authentication System: Secure login and registration with local storage
- User Profiles: Customizable avatars and profile management
- Multi-user Support: Assign tasks to different team members
- Session Persistence: Automatic login state management
- Create & Edit Tasks: Comprehensive task creation with rich descriptions
- Priority Levels: Set task priorities (Low, Medium, High, Critical)
- Issue Types: Categorize tasks as Bug, Feature, Enhancement, or Documentation
- Due Dates: Set and track task deadlines
- Tags & Labels: Organize tasks with customizable tags
- Comments & Attachments: Track task discussions and file attachments
- Task Analytics: Visual indicators for task progress and statistics
- Modern UI Components: Built with shadcn/ui component library
- Smooth Animations: Elegant transitions and micro-interactions
- Accessibility: WCAG compliant with proper ARIA labels and keyboard navigation
- Progressive Web App: Offline support and native app-like experience
- Notifications: Toast notifications for user actions and updates
- React 18.3.1 - Modern React with hooks and concurrent features
- TypeScript 5.5.3 - Type-safe JavaScript development
- Vite 5.4.1 - Fast build tool and development server
- Tailwind CSS 3.4.11 - Utility-first CSS framework
- shadcn/ui - High-quality, accessible component library
- Radix UI - Low-level UI primitives
- Lucide React - Beautiful & consistent icon library
- Tailwind Merge - Utility for merging Tailwind classes
- TanStack Query 5.56.2 - Powerful data synchronization for React
- React Hook Form 7.53.0 - Performant forms with easy validation
- Zod 3.23.8 - TypeScript-first schema validation
- UUID - RFC4122 UUID generation
- date-fns 3.6.0 - Modern JavaScript date utility library
- Sonner - Opinionated toast component for React
- React Router DOM 6.26.2 - Declarative routing for React
- Class Variance Authority - Creating variant APIs for components
- ESLint 9.9.0 - Code linting and formatting
- TypeScript ESLint - TypeScript-specific linting rules
- PostCSS 8.4.47 - CSS transformation tool
- Autoprefixer - CSS vendor prefixing
Make sure you have the following installed on your development machine:
- Node.js (version 16.0 or higher)
- npm (version 7.0 or higher) or yarn (version 1.22 or higher)
- Git for version control
# Check your versions
node --version
npm --version
git --version- Clone the repository
git clone https://github.com/Ayokanmi-Adejola/Task-Management.git
cd Task-Management- Install dependencies
# Using npm
npm install
# Or using yarn
yarn install- Start the development server
# Using npm
npm run dev
# Or using yarn
yarn dev- Open your browser Navigate to http://localhost:8081 to see the application.
The application runs on port 8081 by default. You can modify this in the vite.config.ts file if needed.
// vite.config.ts
export default defineConfig({
server: {
host: "::",
port: 8081, // Change this port if needed
},
// ... other config
});| Script | Description |
|---|---|
npm run dev |
Starts the development server with hot reload |
npm run build |
Creates an optimized production build |
npm run build:dev |
Creates a development build |
npm run lint |
Runs ESLint to check code quality |
npm run preview |
Preview the production build locally |
Task-Management/
βββ public/ # Static assets
βββ src/
β βββ components/ # Reusable UI components
β β βββ ui/ # shadcn/ui components
β β βββ KanbanBoard.tsx # Main Kanban board component
β β βββ TaskCard.tsx # Individual task component
β β βββ ...
β βββ contexts/ # React context providers
β β βββ AuthContext.tsx # Authentication state
β β βββ ThemeContext.tsx # Theme management
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions
β βββ pages/ # Page components
β βββ types/ # TypeScript type definitions
β βββ utils/ # Helper functions
β βββ main.tsx # Application entry point
βββ components.json # shadcn/ui configuration
βββ tailwind.config.ts # Tailwind CSS configuration
βββ vite.config.ts # Vite build configuration
βββ tsconfig.json # TypeScript configuration
- Click the "Create Task" button or "Add Task" in any column
- Fill in the task details (title, description, priority, etc.)
- Assign team members and set due dates
- Click "Create" to add the task to the board
- Move Tasks: Drag and drop tasks between columns (To Do, In Progress, Completed)
- Edit Tasks: Click on any task to open the edit dialog
- Filter Tasks: Use the filter button to search by status, priority, assignee, or tags
- Delete Tasks: Remove tasks using the delete button in the task card
- Register a new account or login with existing credentials
- User sessions are persisted in local storage
- Access user settings through the profile dropdown
- Toggle between light and dark themes
The application supports custom theming through CSS variables. Modify the theme in src/index.css:
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--primary: 221.2 83.2% 53.3%;
/* Add your custom colors */
}Extend the task types in src/types/kanban.ts:
export type IssueType = 'bug' | 'feature' | 'enhancement' | 'documentation' | 'your-new-type';Currently, the project focuses on TypeScript compilation and ESLint for code quality. To run the linter:
npm run lintnpm run buildThis creates a dist folder with optimized production files.
- Vercel: Deploy directly from GitHub repository
- Netlify: Drag and drop the
distfolder - GitHub Pages: Use GitHub Actions for automated deployment
- Docker: Containerize the application for cloud deployment
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
- run: npm install
- run: npm run build
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./distWe welcome contributions from the community! Please follow these steps:
- Fork the repository
git clone https://github.com/your-username/Task-Management.git
cd Task-Management- Create a feature branch
git checkout -b feature/amazing-feature-
Make your changes
- Follow the existing code style and conventions
- Add TypeScript types for new components
- Update documentation if needed
-
Test your changes
npm run lint # Check code quality
npm run build # Ensure build works- Commit your changes
git commit -m "feat: add amazing feature"- Push to your fork
git push origin feature/amazing-feature- Open a Pull Request
- Provide a clear description of changes
- Link any related issues
- Add screenshots for UI changes
- Code Style: Follow the existing TypeScript and React patterns
- Commits: Use conventional commit messages (feat, fix, docs, style, refactor, test, chore)
- Documentation: Update README.md for significant changes
- Testing: Ensure your changes don't break existing functionality
When reporting bugs, please include:
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots (if applicable)
- Browser and device information
- shadcn/ui for the beautiful component library
- Radix UI for accessible primitives
- Tailwind CSS for the utility-first CSS framework
- Lucide for the comprehensive icon library
- The React and TypeScript communities for continuous innovation


