Skip to content

purushpsm147/Basic-Task-Management

Repository files navigation

RamSoft Task Management System

A comprehensive full-stack task management application built with ASP.NET Core Web API backend and Angular frontend. This system provides a modern Kanban board interface for managing tasks with drag-and-drop functionality, advanced filtering, and real-time updates.

πŸš€ Features

  • Enhanced Kanban Board Interface: Drag-and-drop task management with customizable columns and modern visual design
  • Advanced Task Management: Create, read, update, and delete tasks with rich metadata and file attachments
  • Sophisticated Filtering: Filter tasks by status, search terms, favorites with advanced dialog interface
  • Dynamic Column Management: Create and manage custom workflow columns with color coding
  • Modern Glass Morphism UI: Material Design components with enhanced visual appeal featuring glass morphism effects
  • Responsive Design: Works seamlessly on desktop and mobile devices with dark mode support
  • Real-time Updates: Instant UI updates for task and column changes
  • Enhanced Visual Effects: Modern gradients, shadows, and animations throughout the interface
  • File Upload Support: Drag-and-drop file upload functionality for task attachments
  • Deadline Management: Visual deadline indicators with color-coded urgency levels

πŸ—οΈ Architecture

This is a full-stack application consisting of:

Backend (ASP.NET Core Web API)

  • Framework: .NET 8.0
  • Database: Entity Framework Core with SQL Server
  • Architecture: Clean Architecture with Repository Pattern
  • API Documentation: RESTful API with comprehensive endpoints
  • Validation: FluentValidation for robust input validation
  • Testing: Comprehensive unit tests with xUnit

Frontend (Angular)

  • Framework: Angular 19.2.14 (Latest Stable)
  • UI Library: Angular Material 18.2.14 + CDK
  • Styling: SCSS with modern design patterns, glass morphism effects
  • State Management: Service-based state management
  • Drag & Drop: Angular CDK Drag and Drop
  • Build System: Angular Application Builder (esbuild)
  • TypeScript: 5.8.3 with ES2022 target

🎨 Recent Improvements & Updates

Angular 19 Migration (May 2025)

  • βœ… Upgraded to Angular 19.2.14 - Latest stable version with improved performance
  • βœ… TypeScript 5.8.3 - Enhanced type checking and ES2022 features
  • βœ… New Build System - Migrated to Angular Application Builder (esbuild) for faster builds
  • βœ… Standalone Components - Updated component architecture for better tree-shaking
  • βœ… Breaking Changes Fixed - Resolved all Angular Material migration issues (mat-chip-list β†’ mat-chip-set)

Enhanced Visual Design System

  • βœ… Glass Morphism Effects - Modern backdrop blur and transparency effects
  • βœ… Purple Gradient Theme - Consistent color scheme (#667eea to #764ba2) across all components
  • βœ… Advanced Shadows - Multi-layered box shadows for depth and hierarchy
  • βœ… Smooth Animations - 0.3s cubic-bezier transitions for all interactive elements
  • βœ… Mobile Responsive - Enhanced mobile experience with touch-friendly interactions
  • βœ… Dark Mode Support - Comprehensive dark theme implementation

Component Enhancements

  • 🎯 Kanban Board: Enhanced task cards with hover effects and improved deadline indicators
  • 🎯 Filter Dialog: Glass morphism design with gradient headers and enhanced form fields
  • 🎯 Task Dialog: Modern file upload with drag-and-drop zone and improved form layout
  • 🎯 Task List: Advanced visual effects with loading states and empty state designs

Performance & Build Optimizations

  • ⚑ Bundle Size Optimization - Updated CSS budgets for enhanced styling (15kB limit)
  • ⚑ Build Performance - Faster compilation with Angular 19 Application Builder
  • ⚑ Development Experience - Improved hot reload and development server performance

πŸ“‹ Prerequisites

Before running this application, ensure you have the following installed:

πŸ› οΈ Getting Started

1. Clone the Repository

git clone https://github.com/RamSoft/RamSoft-Task-Management.git
cd RamSoft-Task-Management

2. Backend Setup (ASP.NET Core API)

Navigate to the API project

cd RamSoft-Task-Management

Install dependencies

dotnet restore

Update database connection string

Edit appsettings.json or appsettings.Development.json to configure your SQL Server connection:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=RamSoftTaskManagement;Trusted_Connection=true;"
  }
}

Build and run the API

dotnet build
dotnet run

The API will be available at https://localhost:7000 and http://localhost:5000

3. Frontend Setup (Angular)

Navigate to the UI project

cd ../task-management-ui

Install dependencies

npm install

Start the development server

ng serve

The Angular application will be available at http://localhost:4200

πŸ§ͺ Running Tests

Backend Tests

cd RamSoft-Task-Management
dotnet test

Frontend Tests

cd task-management-ui
ng test

🐳 Docker Support

The application includes Docker support for easy deployment:

docker build -t ramsoft-task-management .
docker run -p 8080:80 ramsoft-task-management

πŸ“š API Documentation

Base URL

  • Development: https://localhost:7000/api
  • Production: https://your-domain.com/api

Task Endpoints

Get All Tasks

  • URL: GET /api/task
  • Description: Retrieve all tasks
  • Response: 200 OK
  • Response Body: Array of JiraTask objects

Get Task by ID

  • URL: GET /api/task/{id}
  • Description: Retrieve a specific task by ID
  • Parameters:
    • id (integer): Task ID
  • Response: 200 OK | 404 Not Found
  • Response Body: JiraTask object

Search Tasks by Status

  • URL: GET /api/task/search?status={status}
  • Description: Filter tasks by status
  • Parameters:
    • status (string): Task status (ToDo, InProgress, Done, etc.)
  • Response: 200 OK
  • Response Body: Array of filtered JiraTask objects

Sort Tasks

  • URL: GET /api/task/sort
  • Description: Get sorted tasks
  • Query Parameters:
    • sortBy (string): Property to sort by (Name, Deadline, Status)
    • direction (string): Sort direction (Asc, Desc)
  • Response: 200 OK
  • Response Body: Array of sorted JiraTask objects

Create Task

  • URL: POST /api/task
  • Description: Create a new task
  • Request Body: JiraTask object
  • Response: 201 Created
  • Response Body: Created JiraTask object

Update Task

  • URL: PUT /api/task/{id}
  • Description: Update an existing task
  • Parameters:
    • id (integer): Task ID
  • Request Body: JiraTask object
  • Response: 200 OK | 404 Not Found

Delete Task

  • URL: DELETE /api/task/{id}
  • Description: Delete a task
  • Parameters:
    • id (integer): Task ID
  • Response: 200 OK | 404 Not Found

Column Endpoints

Get All Columns

  • URL: GET /api/columns
  • Description: Retrieve all kanban columns
  • Response: 200 OK
  • Response Body: Array of Column objects

Create Column

  • URL: POST /api/columns
  • Description: Create a new kanban column
  • Request Body: Column object
  • Response: 201 Created

Update Column

  • URL: PUT /api/columns/{id}
  • Description: Update a kanban column
  • Response: 200 OK | 404 Not Found

Delete Column

  • URL: DELETE /api/columns/{id}
  • Description: Delete a kanban column
  • Response: 200 OK | 404 Not Found

Data Models

JiraTask

{
  "id": 1,
  "name": "Task Name",
  "description": "Task description",
  "status": "ToDo",
  "deadline": "2025-12-31T23:59:59",
  "columnId": 1,
  "isFavorite": false,
  "createdDate": "2025-05-28T10:00:00",
  "updatedDate": "2025-05-28T10:00:00"
}

Column

{
  "id": 1,
  "name": "To Do",
  "color": "#e3f2fd",
  "order": 1,
  "isDefault": true
}

πŸ› οΈ Technologies Used

Backend

  • ASP.NET Core 8.0 - Web API framework
  • Entity Framework Core 9.0 - ORM for database operations
  • SQL Server - Primary database
  • FluentValidation - Input validation
  • xUnit - Testing framework
  • FluentAssertions - Assertion library for tests

Frontend

  • Angular 19.2.14 - Latest frontend framework
  • Angular Material 18.2.14 - UI component library
  • Angular CDK 18.2.14 - Component dev kit for drag & drop
  • TypeScript 5.8.3 - Primary programming language with ES2022 target
  • SCSS - Styling preprocessor with modern glass morphism effects
  • RxJS 7.8.0 - Reactive programming library
  • Zone.js 0.15.1 - Change detection

Development Tools

  • Docker - Containerization
  • Git - Version control
  • Visual Studio/VS Code - IDEs

πŸ“ Project Structure

RamSoft-Task-Management/
β”œβ”€β”€ RamSoft-Task-Management/          # ASP.NET Core Web API
β”‚   β”œβ”€β”€ Controllers/                  # API Controllers
β”‚   β”œβ”€β”€ Models/                       # Data models
β”‚   β”œβ”€β”€ Services/                     # Business logic
β”‚   β”œβ”€β”€ Infrastructure/               # Database context & migrations
β”‚   β”œβ”€β”€ Validations/                  # Input validation rules
β”‚   └── Program.cs                    # Application entry point
β”œβ”€β”€ TamSoft-Task-Management-UnitTests/ # Backend unit tests
β”œβ”€β”€ task-management-ui/               # Angular frontend
β”‚   β”œβ”€β”€ src/app/
β”‚   β”‚   β”œβ”€β”€ kanban-board/            # Main kanban interface
β”‚   β”‚   β”œβ”€β”€ task-dialog/             # Task creation/editing
β”‚   β”‚   β”œβ”€β”€ filter-dialog/           # Advanced filtering
β”‚   β”‚   β”œβ”€β”€ column-dialog/           # Column management
β”‚   β”‚   β”œβ”€β”€ models/                  # TypeScript models
β”‚   β”‚   └── services/                # API services
β”‚   └── src/assets/                  # Static assets
└── README.md                        # This file

πŸš€ Deployment

Production Build

Backend

cd RamSoft-Task-Management
dotnet publish -c Release -o ./publish

Frontend

cd task-management-ui
ng build --prod

Environment Configuration

Update production settings in:

  • appsettings.Production.json for API configuration
  • environment.prod.ts for Angular environment variables

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ Development Guidelines

Code Standards

  • Follow C# coding conventions for backend development
  • Use Angular style guide for frontend development
  • Implement TypeScript strict mode for better type safety
  • Use meaningful commit messages following conventional commits

Frontend Development

  • Components: Use standalone: false for non-standalone components in Angular 19
  • Styling: Follow the established glass morphism design system
  • Material Design: Use Angular Material 18.2.14 components with proper imports
  • Performance: Monitor bundle sizes and optimize when necessary
  • Responsive: Ensure all components work on mobile and desktop

Testing Requirements

  • Write unit tests for new features using Jest/Jasmine
  • Maintain minimum 80% code coverage
  • Test all API endpoints with integration tests
  • Verify mobile responsiveness for UI changes

Build & Deployment

  • Use Angular Application Builder for production builds
  • Verify build success with ng build before committing
  • Update documentation for API changes
  • Test in both development and production configurations

πŸ› Troubleshooting

Common Issues

  1. Database Connection Issues

    • Verify SQL Server is running
    • Check connection string in appsettings.json
    • Ensure database permissions are correct
  2. CORS Issues

    • Verify CORS is properly configured in Program.cs
    • Check if frontend URL is in allowed origins
  3. Angular 19 Specific Issues

    • Node.js Version: Ensure Node.js v18+ is installed (required for Angular 19)
    • Package Installation: Clear node_modules and reinstall: rm -rf node_modules && npm install
    • Angular Cache: Clear Angular cache: ng cache clean
    • Build Errors: If experiencing mat-chip issues, ensure migration to mat-chip-set is complete
    • TypeScript Errors: Verify TypeScript 5.8.3 compatibility with your IDE
  4. Build Performance Issues

    • Memory: Increase Node.js memory limit: node --max-old-space-size=8192
    • Bundle Size: Review angular.json budget settings if CSS warnings appear
    • Build Speed: Use ng build --configuration development for faster development builds
  5. Material Design Issues

    • Ensure Angular Material 18.2.14 is compatible with Angular 19
    • Check for deprecated Material components and update accordingly
    • Verify all Material modules are properly imported in app.module.ts

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.

πŸ‘₯ Authors

  • Purushottam Gupta - Initial work

πŸ™ Acknowledgments

  • Angular team for the excellent framework and regular updates to Angular 19
  • Angular Material team for the comprehensive UI component library
  • Microsoft for the robust .NET ecosystem and ASP.NET Core
  • TypeScript team for the enhanced language features in version 5.8
  • Contributors to the open-source libraries used in this project
  • Community feedback that helped shape the modern visual design improvements

Last Updated: May 28, 2025 - Angular 19.2.14 Migration & Visual Enhancement Update

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors