- Introduction
- Features
- System Requirements
- Technology Stack
- Project Structure
- Implementation Details
- Setup Instructions
- Conclusion
CheckMate is a robust task management application designed using the MERN stack (MongoDB, Express, React, Node.js). It offers an intuitive interface for users to manage their tasks efficiently with features like advanced filtering, theme customization, and drag-and-drop task reordering.
-
User Authentication:
- Sign up, Login, and Logout functionality.
- Password encryption and validation.
-
Task Management:
- Create, Read, Update, Delete (CRUD) operations for tasks.
- Task categorization (e.g., Work, Personal).
- Task prioritization.
-
Advanced Filtering:
- Filter tasks by date, priority, category, and status.
- Search functionality.
-
Dark and Light Theme:
- Toggle between dark and light modes.
- Persistent theme setting.
-
Drag and Drop:
- Reorder tasks using drag-and-drop.
- Kanban board-style task management.
-
Additional Features:
- Responsive design.
- Notifications for task deadlines.
- User profile management.
- Node.js (v14 or higher)
- MongoDB (v4 or higher)
- npm (v6 or higher) or Yarn
- Frontend: React, Vite, Tailwind CSS, React Router, react-lucide
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT, bcrypt
- Other Libraries: Redux (for state management), react-beautiful-dnd (for drag-and-drop functionality)
CheckMate/
├── backend/
│ ├── config/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── utils/
│ ├── server.js
│ └── package.json
├── frontend/
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ ├── contexts/
│ │ ├── hooks/
│ │ ├── pages/
│ │ ├── services/
│ │ ├── styles/
│ │ ├── App.js
│ │ └── index.js
│ └── package.json
├── README.md
└── .gitignore
Backend:
- Use
bcryptto hash passwords before storing them in the database. - Implement JWT for secure authentication tokens.
Frontend:
- Create forms for signup and login.
- Use Context API or Redux to manage authentication state.
- Protect routes using a higher-order component (HOC) or custom hooks.
Backend:
- Create a Task schema in MongoDB with fields such as title, description, category, priority, due date, and status.
- Implement CRUD operations in the task controller.
Frontend:
- Create components for displaying tasks, task forms, and task lists.
- Use state management to handle task data and operations.
Frontend:
- Implement filtering logic using JavaScript.
- Create filter components (e.g., dropdowns, checkboxes) to update the filter state.
- Display filtered tasks based on the selected criteria.
Frontend:
- Use Tailwind CSS for styling.
- Create a toggle switch to change themes.
- Store the selected theme in local storage to persist user preference.
Frontend:
- Use
react-beautiful-dndfor drag-and-drop functionality. - Implement a Kanban board layout for task organization.
- Update the task order in the state when a task is moved.
-
Clone the repository:
git clone https://github.com/Shakilofficial/CheckMate cd CheckMate -
Setup Backend:
cd backend npm install-
Create a
.envfile with the following variables:MONGO_URI=<your-mongodb-uri> JWT_SECRET=<your-jwt-secret> PORT=5000
-
Start the backend server:
npm run dev
-
-
Setup Frontend:
cd ../frontend npm install- Start the frontend server:
npm run dev
- Start the frontend server:
-
Access the application:
- Open your browser and go to
http://localhost:3000.
- Open your browser and go to
CheckMate provides a comprehensive solution for managing tasks efficiently. With its robust features and user-friendly interface, it aims to enhance productivity and task organization for its users. This documentation should guide you through the setup and implementation of the project, ensuring a smooth development experience.