Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Real-Time Full-Stack Todo List Application

A full-stack task management application featuring role-based permissions, and real-time data synchronization using WebSockets.

an app screenshot


Tech Stack

  • 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

Features

User Features

  • 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 Features

  • Admin Dashboard: View all users and their tasks from a separate dashboard.
  • Create, view, edit, and delete tasks for any user.

Real-Time Features

  • 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.

Local Installation & Setup

Follow these steps to run the project locally.

Database Setup

  • Install and run MySQL Server.
  • Create the todo_app database
  • Run the schema.sql file (included in this repo) to create the tables.

Backend Setup

# 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 start

The backend will run on:
👉 http://localhost:5000


Frontend Setup

# Open a new terminal and navigate to the frontend folder
cd todo-app-frontend

# Install dependencies
npm install

# Start the Angular development server
npm start

The frontend will run on:
👉 http://localhost:4200


Environment Variables

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

About

see the Readme

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages