A full-stack task management application featuring role-based permissions, and real-time data synchronization using WebSockets.
- Frontend : Angular, Angular Material, TypeScript, Socket.io-client
- Backend : Node.js, Express.js, Socket.io
- Database : MySQL
- Authentication & API : JSON Web Tokens (JWT), bcrypt.js, Cors, Dotenv, Nodemailer
- Register and log in with JWT (JSON Web Tokens) for secure authentication.
- Create, view, edit, and delete tasks with titles and descriptions.
- Add, edit, complete, and delete nested sub-tasks for detailed task tracking.
- Mark tasks and sub-tasks as pending or completed.
- Receive notifications for some events like registration or task updates.
- Admin Dashboard: View all users and their tasks from a separate dashboard.
- Create, view, edit, and delete tasks for any user.
- The app uses Socket.io for instant communication between clients and the server.
- When an admin edits a user’s task, the user’s interface updates immediately — no manual refresh needed.
Follow these steps to run the project locally.
- Install and run MySQL Server.
- Create the
todo_appdatabase - Run the
schema.sqlfile (included in this repo) to create the tables.
# Navigate to the backend directory
cd todo-app-backend
# Create your .env file (see example below)
# Install dependencies
npm install
# Start the backend server
npm startThe backend will run on:
👉 http://localhost:5000
# Open a new terminal and navigate to the frontend folder
cd todo-app-frontend
# Install dependencies
npm install
# Start the Angular development server
npm startThe frontend will run on:
👉 http://localhost:4200
The backend requires a .env file with the following variables:
(Never commit this file to Git.)
# .env : example here:
# Database Configuration
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_mysql_root_password
DB_NAME=todo_app
# JWT Configuration
JWT_SECRET=your_super_secret_key
# Nodemailer Configuration (use a Gmail App Password)
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_gmail_app_password