Skip to content

Latest commit

Β 

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

404 FOUND - Task Management System

πŸŽ₯ Video Link

πŸ“‹ Introduction

The Task Management System is a comprehensive web application designed to help teams efficiently manage their workflow. It provides essential features such as user authentication, task assignment, role-based access control, and automated email notifications. Our goal is to streamline task tracking, improve productivity, and enhance team collaboration.

βš™οΈ Features

  • User Authentication: Secure login and registration system with JWT-based authentication
  • Email Verification: Users must verify their email before accessing the system
  • Role-Based Access Control: Three user roles (USER, MANAGER, TEAM_LEAD) with different permissions
  • Task Management:
    • Create, assign, and update tasks with detailed information
    • Track task status (NotStarted, InProgress, Completed)
    • View personal tasks and all tasks based on user role
    • Real-time task status updates
  • User Management:
    • Managers can change user roles
    • View users by role
    • User profile management
  • Email Notifications:
    • Automated email notifications for task assignments
    • Status update notifications for task creators and assignees
    • Professional HTML email templates
  • Responsive UI: Modern, clean interface built with React and Tailwind CSS

πŸ“‹ UML Diagram

TMS UML Week2

πŸ§‘β€πŸ’» Technology Stack

Backend

  • Framework: ASP.NET Core 8.0 & C#
  • Authentication: JSON Web Token (JWT) with ASP.NET Identity
  • Database: MySQL with Entity Framework Core
  • API: RESTful API with Swagger documentation
  • Email Service: SMTP-based email notifications
  • Authorization: Role-based access control

Frontend

  • Framework: React.js with modern hooks
  • UI Styling: Tailwind CSS for responsive design
  • HTTP Client: Fetch API for backend communication
  • State Management: React useState and useEffect

DevOps & Infrastructure

  • Version Control: Git & GitHub
  • Containerization: Docker & Docker Compose
  • Database: MySQL 8.0
  • Development: Hot reload and development servers

πŸ“‚ Project Structure

task-management-system/
β”œβ”€β”€ backend/                    # ASP.NET Core Web API
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ ApplicationUser/    # User entity and management
β”‚   β”‚   β”œβ”€β”€ Authentication/     # JWT authentication logic
β”‚   β”‚   β”œβ”€β”€ Task/              # Task management (Entity, Service, Controller, DTOs)
β”‚   β”‚   β”œβ”€β”€ User/              # User management endpoints
β”‚   β”‚   β”œβ”€β”€ Notification/      # Email notification services
β”‚   β”‚   └── Services/          # Email and other services
β”‚   β”œβ”€β”€ Data/                  # Database context and configurations
β”‚   β”œβ”€β”€ Interfaces/            # Repository and service interfaces
β”‚   β”œβ”€β”€ Migrations/            # Entity Framework migrations
β”‚   └── Program.cs             # Application entry point
β”œβ”€β”€ frontend/                  # React.js application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/             # Main application pages
β”‚   β”‚   β”œβ”€β”€ components/        # Reusable UI components
β”‚   β”‚   └── styles/            # CSS and styling files
β”‚   β”œβ”€β”€ public/                # Static files
β”‚   └── package.json           # Frontend dependencies
β”œβ”€β”€ docker-compose.yml         # Docker orchestration
└── README.md                  # Project documentation

πŸ› οΈ Installation & Setup

Prerequisites

For Normal Setup:

  • .NET SDK 8.0 or later
  • Node.js 18+ and npm/yarn
  • MySQL Server 8.0 or later

For Docker Setup:

  • Docker and Docker Compose

πŸš€ Quick Start with Docker (Recommended)

1. Clone the Repository

git clone <repository-url>
cd task-management-system

2. Start with Docker Compose

# Build and start all services (MySQL, Backend, Frontend)
docker-compose up --build

# Or run in detached mode
docker-compose up -d --build

3. Access the Applications

4. Stop Services

docker-compose down

πŸ”§ Manual Setup (Development)

Backend Setup

cd backend

# Install dependencies
dotnet restore

# Set up database connection string in appsettings.json
# Update DefaultConnection with your MySQL credentials

# Apply database migrations
dotnet ef database update

# Run the backend application
dotnet run
# Backend will be available at: https://localhost:5001 or http://localhost:5000

Backend Configuration

Create appsettings.json with your configurations:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=TaskManagementDB;User=root;Password=yourpassword;"
  },
  "Jwt": {
    "Key": "your-super-secret-key-here",
    "Issuer": "TaskManagementAPI",
    "Audience": "TaskManagementClient"
  },
  "EmailSettings": {
    "SmtpServer": "smtp.gmail.com",
    "SmtpPort": 587,
    "SenderEmail": "your-email@gmail.com",
    "SenderPassword": "your-app-password"
  }
}

Frontend Setup

cd frontend

# Install dependencies
npm install

# Create environment file
echo "REACT_APP_API_URL=http://localhost:5132" > .env

# Start the frontend application
npm start
# Frontend will be available at: http://localhost:3000

πŸ—„οΈ Database Setup

Automatic Setup (Docker)

The database is automatically created and migrated when using Docker Compose.

Manual Setup

  1. Install MySQL Server 8.0+
  2. Create a database named TaskManagementDB
  3. Update connection string in appsettings.json
  4. Run migrations: dotnet ef database update

🎯 API Endpoints

Authentication

  • POST /api/auth/register - User registration
  • POST /api/auth/login - User login
  • POST /api/auth/verify-email - Email verification

Tasks

  • GET /api/task - Get all tasks
  • GET /api/task/my - Get user's assigned tasks
  • POST /api/task - Create new task (MANAGER/TEAM_LEAD only)
  • PUT /api/task/{id} - Update task
  • DELETE /api/task/{id} - Delete task (MANAGER/TEAM_LEAD only)
  • POST /api/task/{id}/assign - Assign task to users (MANAGER/TEAM_LEAD only)

Users

  • GET /api/user - Get all users
  • PUT /api/user/{id}/role - Change user role (MANAGER only)
  • GET /api/user/role/{role} - Get users by role (MANAGER/TEAM_LEAD only)

πŸ‘₯ User Roles & Permissions

Feature USER TEAM_LEAD MANAGER
View own tasks βœ… βœ… βœ…
View all tasks ❌ βœ… βœ…
Create tasks ❌ βœ… βœ…
Update task status βœ… βœ… βœ…
Delete tasks ❌ βœ… βœ…
Assign tasks ❌ βœ… βœ…
Manage user roles ❌ ❌ βœ…
View all users ❌ βœ… βœ…

πŸ“§ Email Notifications

The system automatically sends HTML-formatted emails for:

  • Task Assignment: When a task is assigned to users
  • Status Updates: When task status changes, notifications are sent to:
    • Task creator
    • All assigned users

πŸ”’ Security Features

  • JWT token-based authentication
  • Role-based authorization
  • Secure password hashing with ASP.NET Identity
  • CORS protection
  • Input validation and sanitization

🐳 Docker Configuration

The project includes Docker support with:

  • Multi-stage builds for optimized images
  • Docker Compose for easy orchestration
  • MySQL container with persistent data
  • Networking between services
  • Environment variable management

πŸš€ Production Deployment

Using Docker

# Build for production
docker-compose -f docker-compose.prod.yml up --build -d

Manual Deployment

  1. Build frontend: npm run build
  2. Publish backend: dotnet publish -c Release
  3. Configure production database and email settings
  4. Deploy to your hosting provider

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License.

About

Full-stack task management system with JWT authentication, role-based permissions (USER/MANAGER/TEAM_LEAD), and automated email notifications - built using ASP.NET Core 8.0, React.js, MySQL, and Docker.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages