This project is a task management application with a backend built using Express.js and Firebase, and a frontend using React, react-beautiful-dnd for drag-and-drop functionality, axios for API calls, and node-fetch for server-side requests. The application supports Google login and signup, and allows users to manage tasks across different columns.
- Clone the repository.
- Navigate to the
backend
directory. - Run
npm install
to install dependencies. - Create a
.env
file and add your Firebase credentials. - Run
npm start
to start the server.
Handles user authentication including signup, login, and logout.
- Signup: Creates a new user with Firebase Authentication and saves user data to Firestore.
- Login: Verifies user credentials, generates a JWT token, and returns the token.
- Logout: Signs out the user from Firebase Authentication.
Handles CRUD operations for tasks.
- Create Task: Adds a new task to the 'todo' column in Firestore.
- Read Tasks: Retrieves tasks from Firestore for a given user.
- Update Task: Updates task details or moves the task between columns.
- Delete Task: Deletes a task from Firestore.
Defines the endpoints for authentication and task management.
- Auth Routes:
/api/auth/signup
,/api/auth/login
,/api/auth/logout
- Task Routes:
/api/tasks
,/api/tasks/:id
Main entry point for the backend server. Sets up Express.js, connects to Firebase, and defines routes.
```javascript const express = require('express'); const cors = require('cors'); const bodyParser = require('body-parser'); const authRoutes = require('./routes/authRoutes'); const taskRoutes = require('./routes/taskRoutes'); const app = express(); const port = process.env.PORT || 5000;
app.use(cors()); app.use(bodyParser.json());
app.use('/api/auth', authRoutes); app.use('/api/tasks', taskRoutes);
app.listen(port, () => { console.log(`Server is running on port ${port}`); }); ```
- express
- cors
- body-parser
- firebase-admin
- jsonwebtoken
- Navigate to the
frontend
directory. - Run
npm install
to install dependencies. - Run
npm start
to start the React application.
Navigation bar that changes based on the page (login/signup on other pages, logout on the Manager page).
Displays individual task details with options to edit, view details, and delete.
Container for tasks within a specific column (TODO, IN PROGRESS, DONE). Supports drag-and-drop functionality.
Allows users to search and sort tasks.
Main page for managing tasks, includes the Navbar, Add Task button, SearchBar, and Columns for tasks.
Modal for editing task details.
Modal for viewing task details.
- react
- react-dom
- react-router-dom
- axios
- react-beautiful-dnd
- Register or login using the provided forms.
- Add, edit, view, or delete tasks.
- Drag and drop tasks between columns.
- Fork the repository.
- Create a new branch (
git checkout -b feature-branch
). - Make your changes.
- Commit your changes (
git commit -m 'Add new feature'
). - Push to the branch (
git push origin feature-branch
). - Open a pull request.
This project is licensed under the MIT License.