Task Manager is a React-based Kanban board application that allows users to organize tasks into customizable columns with drag-and-drop functionality. The application features task creation, editing, filtering, and organization with assignees and tags.
-
Drag-and-Drop Interface:
- Reorder tasks within columns
- Move tasks between columns
- Smooth animations during drag operations
-
Task Management:
- Create, edit, and delete tasks
- Add titles and descriptions
- Assign tags to tasks
- Assign team members to tasks
-
Column Management:
- Add new columns
- Delete existing columns
- Rename columns
-
Filtering and Search:
- Filter tasks by time period
- Search across all tasks
-
Persistence:
- All data is saved to localStorage
- State persists between sessions
-
Frontend:
- React 19
- Vite (build tool)
- SCSS for styling
- @dnd-kit for drag-and-drop functionality
-
Key Dependencies:
@dnd-kit/core
and@dnd-kit/sortable
for drag-and-dropdate-fns
for date handlinguuid
for ID generationreact-router-dom
for routing
/src
/components
Column.jsx
Icon.jsx
PeriodSelector.jsx
SortableTaskCard.jsx
TaskCard.jsx
TagSelector.jsx
Dropdown.jsx
AssigneesSelector.jsx
/data
appData.js
/helpers
filterTasks.js
useColumnsState.js
/styles
btn.scss
(other SCSS files)
/utils
localStorageService.js
- Clone the repository
- Install dependencies:
npm install
- Run the development server:
npm run dev
- Build for production:
npm run build
npm run dev
: Starts the development servernpm run build
: Creates a production buildnpm run lint
: Runs ESLint to check code qualitynpm run preview
: Previews the production build locally
The main component that renders the entire Kanban board, including:
- Column management
- Task filtering
- Drag-and-drop context
A memoized component that renders individual tasks with:
- Editable fields (title, description)
- Tag assignment
- Assignee management
- Delete functionality
Manages all state and logic for:
- Column operations (add, delete, update)
- Task operations (add, delete, update)
- Drag-and-drop handling
- LocalStorage persistence
useColumnsState
: Central state management for columns and tasks- Various utility hooks for drag-and-drop, filtering, etc.
- Initial data stored in
appData.js
- Persistent storage using
LocalStorageService
- UUID generation for all new items
- SCSS modules for component-specific styles
- BEM methodology for class naming
- Responsive design considerations
- Add backend integration
- Implement user authentication
- Add due dates and reminders
- Enable task commenting
- Add dark mode support
- Implement keyboard shortcuts
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.