This web-based application is designed for project management, featuring user authentication, board, section, and task management. It uses React for the frontend and Express.js with MongoDB for the backend.
- Frontend: React, Redux, Material-UI
- Backend: Express.js, MongoDB
- Authentication: JWT
- User Authentication:
- Register new users with encrypted password storage.
- Login functionality with JWT token generation.
- Token verification endpoint.
- Task Management:
- Create, update, delete, and reposition (drag & drop) tasks.
- Update the position of multiple tasks within or between sections.
- Board Management:
- Create, retrieve, update, and delete boards.
- Mark boards as favorites and update their positions.
- Section Handling:
- Group tasks into sections for better organization. Manage tasks within sections.
- Create, update, and delete sections within boards.
- Animation and visuals <3
- Main Entry:
client/src/App.jsx
- Main application component. - Components:
components/
- Reusable components.- Common Components:
EmojiPicker
,FavouriteList
,Kanban
,Loading
,Sidebar
,TaskModal
. - Layout Components:
AppLayout
,AuthLayout
.
- Common Components:
- Pages:
pages/
- redux Pages like Home, Board, Login, and Signup.Home.jsx
- The homepage of the application.Board.jsx
- For managing and viewing boards.Login.jsx
andSignup.jsx
- Authentication pages.
- Redux: Centralized state and logic
boardSlice.js
,favouriteSlice.js
,userSlice.js
- Redux slices for state management.store.js
- The Redux store configuration.
- API Calls:
api/
- API calls for authentication, boards, sections, and tasks.authApi.js
,boardApi.js
,sectionApi.js
,taskApi.js
- API services for handling HTTP requests.
- Utilities:
authUtils.js
- Utility functions related to authentication. - Assets and Styles: Images and CSS files for customizing the appearance.
- Main Entry:
server/app.js
,server/bin/www.js
- The starting point of the Node.js server. - Controllers:
controllers/
- Controllers for boards, sections, tasks, and users.board.js
,section.js
,task.js
,uploadController.js
,user.js
- Controllers for handling business logic.
- Models:
models/
- Mongoose models for boards, sections, tasks, and users.board.js
,section.js
,task.js
,user.js
- Mongoose models for database interactions.
- Routes:
routes/
- Express routes for handling API requests.auth.js
,board.js
,section.js
,task.js
,upload.js
- Routes for handling API requests.
- Middleware and Handlers:
tokenHandler.js
,validation.js
- Middleware for token handling and request validation.
- Environment:
.env.Example
- Template for environment variables.
- Package Management:
package.json
andyarn.lock
files for dependency management.
- Node.js
- npm or Yarn
- MongoDB
- Clone the repository
git clone https://github.com/adelansari/project-management.git
- Install dependencies for the server
cd server yarn install
- Install dependencies for the client
cd ../client yarn install
- Set up environment variables
- Duplicate
server/.env.Example
and rename it to.env
. - Fill in the necessary environment variables.
# server/.env PORT=5000 MONGODB_URL=mongodb://127.0.0.1:27017/project-management PASSWORD_SECRET_KEY= TOKEN_SECRET_KEY=
- Duplicate
- Start the server
cd server yarn start
- In a new terminal, start the client
cd client yarn start
- The application should now be running on
localhost:3000
.
- Login/Signup: Create an account or log in to access the dashboard.
- Creating Boards/Projects: Manage different projects or aspects of your work.
- Adding Secion: Add multiple section to manage different tasks and progress.
- Adding Tasks: Break down your work into manageable tasks.
- Organizing Tasks: Drag/Drop and group tasks for better clarity.
Contributions to the Project Management System are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/AmazingFeature
). - Commit your changes (
git commit -m 'Add some AmazingFeature'
). - Push to the branch (
git push origin feature/AmazingFeature
). - Open a pull request.
Distributed under the MIT License. See LICENSE
for more information.