A full-stack task management application designed to help individuals and teams organize, track, and manage their tasks efficiently. It features a robust backend API and a dynamic React-based user interface, offering both list and calendar views of tasks.
- ๐ Personal Task Management โ Create, view, update status, and delete your own tasks.
- ๐ฅ Team Collaboration โ Invite team members via email, assign tasks to them, and manage assigned tasks.
- ๐ Real-time Notifications โ Get notified about accepted team invites and deleted assigned tasks.
- ๐ Secure User Authentication โ Signup, login, and password reset functionalities with OTP verification.
- โญ Gamified Task Completion โ Earn points for completing tasks.
- ๐ง Email Integration โ Send OTPs for password reset and comprehensive task lists to email.
- ๐ Dashboard Overview โ A personal dashboard showing task statistics (total, completed, in-progress, not started).
- ๐
Calendar View โ Visualize tasks on a calendar with month/week/day navigation using
react-big-calendar. - ๐ Task Export โ Download task lists as PDF or Word documents.
- ๐๏ธ Account Management โ Update profile details and securely delete your account.
The project is divided into a frontend (UI) and a backend (API) service.
- React โ Frontend library for building user interfaces.
- Vite โ Fast build tool and development server.
- React Router DOM โ For declarative routing in React applications.
- Axios / Fetch API โ For making HTTP requests to the backend.
react-big-calendarโ A flexible and highly customizable calendar component.moment/date-fnsโ For robust date and time manipulation.framer-motionโ For smooth animations and transitions.docx&file-saverโ For generating and downloading Word documents.jspdf&jspdf-autotableโ For generating and downloading PDF documents.- Tailwind CSS (implied by class names like
text-3xl,bg-indigo-600) โ Utility-first CSS framework for rapid UI development. lucide-react,@heroicons/react,react-iconsโ For UI icons.
- Node.js โ JavaScript runtime environment.
- Express.js โ Web framework for building RESTful APIs.
- MySQL2 (with Promises) โ MySQL client for Node.js, providing promise-based API.
corsโ Middleware for enabling Cross-Origin Resource Sharing.bcryptโ For hashing and salting passwords securely.jsonwebtokenโ For implementing JSON Web Tokens for authentication.nodemailerโ For sending emails (e.g., OTPs, task summaries, invites).dotenvโ For loading environment variables from a.envfile in development.
.
โโโ server/ # Node.js Express API
โ โโโ db.js # Database connection pool setup
โ โโโ package-lock.json
โ โโโ package.json
โ โโโ server.js # Main Express application, API routes
โโโ src/ # React Vite UI (Frontend code)
โ โโโ App.jsx # Main application router
โ โโโ assets/ # Images, logos
โ โ โโโ googleicon.png
โ โ โโโ microsoftpng.png
โ โ โโโ profile.png
โ โ โโโ tasklistlogo.svg
โ โ โโโ taskui.png
โ โ โโโ workingdesk.png
โ โโโ components/ # Reusable UI components
โ โ โโโ AddTaskButton/
โ โ โโโ AddTaskPopup/
โ โ โโโ AssignTaskPopup/
โ โ โโโ LoginForm/
โ โ โโโ NavBarLogin/
โ โ โโโ Navbar/
โ โ โโโ ProtectedRoute/
โ โ โโโ ResetPasswordForm/
โ โ โโโ SideNavbar/
โ โ โโโ SignupForm/
โ โ โโโ SocialLoginButtons/
โ โ โโโ SupportForm/
โ โ โโโ TasksTable/
โ โ โโโ UpdateProfilePopup/
โ โโโ index.css
โ โโโ main.jsx # Entry point for React app rendering
โ โโโ pages/ # Page-level components
โ โโโ Account/
โ โโโ AddTaskPage/
โ โโโ Calendar/
โ โโโ Dashboard/
โ โโโ Features/
โ โโโ Login/
โ โโโ ResetPassword/
โ โโโ Signup/
โ โโโ Support/
โ โโโ Tasks/
โ โโโ Teams/
โโโ .eslintrc.cjs # ESLint configuration (renamed from eslint.config.js for common Node.js usage)
โโโ index.html # Main HTML file for frontend
โโโ package-lock.json
โโโ package.json
โโโ tasklistdb_backup.sql # Database dump file
โโโ vite.config.js # Vite build configuration for frontend
- Node.js (v18 or higher recommended) and npm installed.
- MySQL Server running locally (e.g., via XAMPP, Docker, or direct installation).
- A Gmail account for Nodemailer, with App Passwords enabled for
EMAIL_PASS.
- Create a MySQL database (e.g.,
tasklistdb). - Import your SQL dump file (
tasklistdb_backup.sql) into this database. You can use MySQL CLI or PHPMyAdmin.(Replacemysql -h localhost -P 3306 -u root -p tasklistdb < path/to/your/tasklistdb_backup.sqllocalhost,3306,root,tasklistdb, and path/to/your/ with your local MySQL credentials and dump file path)
- Navigate to the
backend/directory:cd backend - Create a
.envfile in thebackend/directory with your local database and email credentials:(Replace placeholders with your actual values)PORT=5000 DB_HOST=localhost DB_USER=root DB_PASSWORD=your_mysql_root_password DB_NAME=tasklistdb JWT_SECRET=supersecretkey # Use a strong, random key for production! EMAIL_USER=your_gmail_email@gmail.com EMAIL_PASS=your_gmail_app_password
- Install dependencies:
npm install
- Start the backend server:
The backend will run on
npm start
http://localhost:5000.
- Navigate to the
frontend/directory (from the project root):cd frontend - Create a
.envfile in thefrontend/directory:VITE_BACKEND_URL=http://localhost:5000
- Install dependencies:
npm install
- Start the frontend development server:
npm run dev
- Open your browser and go to:
http://localhost:5173
This project is configured for deployment on Render.
- Prepare Backend Code: Ensure your backend code (especially
server.jsanddb.js) is updated to use environment variables (MYSQL_ADDON_HOST,MYSQL_ADDON_USER,MYSQL_ADDON_PASSWORD,MYSQL_ADDON_DB,MYSQL_ADDON_PORT,FRONTEND_URL,BACKEND_URL,EMAIL_USER,EMAIL_PASS,JWT_SECRET) instead of hardcodedlocalhostvalues. (This has already been done in the provided updated code). - Git Repository: Push your
backend/folder (excludingnode_modulesand.env) to a separate GitHub repository. - Create Web Service on Render:
- Log in to Render and click "New" > "Web Service".
- Connect your backend GitHub repository.
- Name:
tasklist-backend-api(or your chosen name). - Region: Select a region close to your Clever Cloud MySQL database (e.g., a European region if Clever Cloud is in Paris).
- Root Directory: If your
backendcode is in abackend/folder, set this tobackend. - Build Command:
npm install - Start Command:
npm start - Environment Variables: Add the following Render environment variables:
MYSQL_ADDON_DB:YOUR_MYSQL_ADDON_DBMYSQL_ADDON_HOST:YOUR_MYSQL_ADDON_HOSTMYSQL_ADDON_PASSWORD:YOUR_MYSQL_ADDON_PASSWORDMYSQL_ADDON_PORT:YOUR_MYSQL_ADDON_PORTMYSQL_ADDON_USER:YOUR_MYSQL_ADDON_USERMYSQL_ADDON_URI:YOUR_MYSQL_ADDON_URIJWT_SECRET: (A strong, unique secret key for production)EMAIL_USER: (Your Gmail email)EMAIL_PASS: (Your Gmail App Password)NODE_ENV:productionFRONTEND_URL: (Will be added after frontend deployment, e.g.,https://tasklist-frontend-p2pl.onrender.com)BACKEND_URL:https://tasklist-backend-api.onrender.com(Your backend's public URL once deployed)
- Click "Create Web Service".
- Prepare Frontend Code: Ensure your frontend code (e.g.,
AddTaskPopup.jsx,LoginForm.jsx,TasksTable.jsx,Teams.jsx,vite.config.js) is updated to useimport.meta.env.VITE_BACKEND_URLfor API calls and configured for Render's port binding andallowedHosts. (This has already been done in the provided updated code). - Git Repository: Push your
frontend/folder (excludingnode_modulesand.env) to a separate GitHub repository. - Update Google OAuth Client Credentials: Go to your Google Cloud Console > APIs & Services > Credentials. Edit your OAuth 2.0 Client ID to add your deployed frontend URL (
https://tasklist-frontend-p2pl.onrender.com) to Authorized JavaScript origins and Authorized redirect URIs. - Create Web Service on Render:
- Log in to Render and click "New" > "Web Service".
- Connect your frontend GitHub repository.
- Name:
tasklist-frontend-p2pl(or your chosen name). - Region: Select the same region as your backend for optimal performance.
- Root Directory: If your
frontendcode is in afrontend/folder, set this tofrontend. - Build Command:
npm install && npm run build - Start Command:
npm run preview - Environment Variables: Add:
VITE_BACKEND_URL:https://tasklist-backend-api.onrender.com(Your deployed backend's public URL)NODE_ENV:production
- Click "Create Web Service".
- Update Backend's
FRONTEND_URL: Once your frontend is deployed and you have its public URL (https://tasklist-frontend-p2pl.onrender.com), go back to your backend service settings on Render, navigate to the "Environment" tab, editFRONTEND_URL, and set its value to your frontend's public URL. Save changes to trigger a redeploy of the backend. - Test: Access your deployed frontend URL (
https://tasklist-frontend-p2pl.onrender.com) to test the full application.
Provides an overview of task statistics.
Shows tasks in a structured table format with filtering and sorting options.
Displays tasks visually on a month/week/day calendar for better planning.
- Implement Google and Microsoft social login functionalities.
- Enhance task editing capabilities.
- Implement full search functionality for tasks.
- Integrate with external calendar services (Google Calendar, Outlook Calendar).
- Add Slack integration for notifications.
This project is licensed under the MIT License.