Skip to content

abhijit-me/CursorTaskDemo

Repository files navigation

Task Board - Full-Stack Project Management Application

A modern, collaborative task management board similar to JIRA and Trello, built with Angular 18 and Flask.

Task Board Flask Material

Features

✨ Core Functionality

  • πŸ“‹ Four-column Kanban board (To Do, In Progress, Review, Done)
  • 🎯 Drag & drop tasks between columns using Angular CDK
  • ✏️ Create, edit, and delete tasks with Material dialogs
  • πŸ” Advanced filtering by assignee, priority, and search term
  • πŸ“Š Analytics dashboard with task statistics and visualizations

🎨 User Experience

  • 🎨 Modern, responsive UI with Angular Material components
  • πŸ”” Real-time feedback with snackbar notifications
  • ⚑ Loading states and progress indicators
  • 🎨 Priority color coding (High: Red, Medium: Yellow, Low: Green)
  • ⏰ "Due soon" highlighting for tasks within 3 days
  • πŸ“± Mobile-responsive design

πŸ”§ Technical Features

  • πŸ”„ RESTful API with Flask backend
  • πŸ’Ύ In-memory data storage with seed data
  • 🌐 CORS enabled for cross-origin requests
  • πŸ”’ Input validation and error handling
  • 🎲 Simulated network latency for realistic testing

Project Structure

TaskDemo/
β”œβ”€β”€ frontend/               # Angular 18 application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ board/          # Main board with drag-drop
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/      # Analytics view
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ filter-bar/     # Task filtering
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ task-card/      # Individual task display
β”‚   β”‚   β”‚   β”‚   └── task-dialog/    # Create/edit dialog
β”‚   β”‚   β”‚   β”œβ”€β”€ app.component.ts    # Root component
β”‚   β”‚   β”‚   └── app.routes.ts       # Routing configuration
β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”‚   └── task.model.ts       # TypeScript interfaces
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── task.service.ts     # HTTP service
β”‚   β”‚   β”œβ”€β”€ styles.scss             # Global styles
β”‚   β”‚   β”œβ”€β”€ main.ts                 # Application bootstrap
β”‚   β”‚   └── index.html              # HTML entry point
β”‚   β”œβ”€β”€ angular.json                # Angular CLI configuration
β”‚   β”œβ”€β”€ package.json                # npm dependencies
β”‚   β”œβ”€β”€ proxy.conf.json             # Development proxy
β”‚   └── tsconfig.json               # TypeScript configuration
β”‚
└── backend/                # Flask API
    β”œβ”€β”€ app.py              # Main Flask application
    └── requirements.txt    # Python dependencies

Prerequisites

Frontend Requirements

  • Node.js 18.x or higher
  • npm 9.x or higher
  • Angular CLI 18.x

Backend Requirements

  • Python 3.8 or higher
  • pip package manager

Installation & Setup

1. Backend Setup (Flask)

# Navigate to backend directory
cd backend

# Create a virtual environment (recommended)
python3 -m venv venv

# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
# venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Run the Flask server
python app.py

The backend server will start on http://localhost:5005

Backend includes:

  • 10 pre-seeded sample tasks related to software development
  • Automatic data persistence during runtime
  • API endpoints accessible at /api/*

2. Frontend Setup (Angular)

Open a new terminal window:

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Start the development server
npm start

The Angular app will start on http://localhost:4200

The development server includes:

  • Auto-reload on file changes
  • Proxy configuration to backend API
  • Source maps for debugging

Usage

Accessing the Application

  1. Ensure backend is running on port 5005
  2. Ensure frontend is running on port 4200
  3. Open your browser and navigate to http://localhost:4200

Main Features

πŸ“‹ Board View

  • View Tasks: See all tasks organized in 4 columns by status
  • Drag & Drop: Click and drag tasks between columns to update status
  • Create Task: Click "Create Task" button or the "+" icon on any column
  • Edit Task: Click the three-dot menu on any task card and select "Edit"
  • Delete Task: Click the three-dot menu and select "Delete"

πŸ” Filtering

  • Search: Type in the search box to filter by title or description
  • Filter by Assignee: Select from dropdown to view tasks for specific person
  • Filter by Priority: Filter tasks by Low, Medium, or High priority
  • Clear Filters: Click "Clear Filters" to reset all filters

πŸ“Š Analytics Dashboard

  • Click "Analytics" in the top navigation
  • View task distribution by status and priority
  • See tasks due within the next 3 days
  • Review quick statistics and completion rates

πŸ”„ Reset Data

  • Click "Reset Data" button to restore original seed data
  • Useful for testing or starting fresh

API Documentation

Base URL

http://localhost:5005/api

Endpoints

Get All Tasks

GET /api/tasks

Returns array of all tasks.

Create Task

POST /api/tasks
Content-Type: application/json

{
  "title": "Task title",
  "description": "Task description",
  "assignee": "Alice Johnson",
  "priority": "High",
  "status": "To Do",
  "due_date": "2025-11-15"
}

Update Task

PUT /api/tasks/{id}
Content-Type: application/json

{
  "status": "In Progress"
}

Delete Task

DELETE /api/tasks/{id}

Get Summary Statistics

GET /api/summary

Get Assignees

GET /api/assignees

Reset Data

POST /api/reset

Data Model

Task Object

{
  id: number;                                    // Unique identifier
  title: string;                                 // Task title (required)
  description: string;                           // Task description
  assignee: string;                              // Assigned team member
  priority: 'Low' | 'Medium' | 'High';          // Priority level
  status: 'To Do' | 'In Progress' | 'Review' | 'Done';  // Current status
  due_date: string;                              // ISO date format (YYYY-MM-DD)
}

Technologies Used

Frontend

  • Angular 18: Modern web framework with standalone components
  • Angular Material: UI component library (Toolbar, Cards, Dialogs, etc.)
  • Angular CDK: Drag-and-drop functionality
  • RxJS: Reactive programming with Observables
  • TypeScript: Strongly-typed JavaScript
  • SCSS: Enhanced CSS with variables and nesting

Backend

  • Flask 3.0: Lightweight Python web framework
  • Flask-CORS: Cross-Origin Resource Sharing support
  • Python: Backend logic and API implementation

Development Notes

Port Configuration

Artificial Delay

The backend includes a 0.3-second delay on all API calls to simulate realistic network latency. This helps test loading states and user experience.

In-Memory Storage

Tasks are stored in memory and will be reset when the backend server restarts. For production, replace with a database (PostgreSQL, MongoDB, etc.).


Customization

Adding New Assignees

Edit backend/app.py:

ASSIGNEES = ["Alice Johnson", "Bob Smith", "Your Name Here"]

Changing Status Columns

Edit both:

  • backend/app.py: Update STATUSES array
  • frontend/src/app/components/board/board.component.ts: Update statuses array

Modifying Seed Data

Edit seed_data() function in backend/app.py

Theming

Angular Material themes can be customized in frontend/src/styles.scss


Troubleshooting

Backend Issues

Port 5005 already in use:

# Change port in app.py:
app.run(debug=True, host='0.0.0.0', port=5006)
# Also update proxy.conf.json to match the new port

Module not found:

pip install -r requirements.txt

Frontend Issues

Port 4200 already in use:

ng serve --port 4201

npm install fails:

# Clear npm cache and retry
npm cache clean --force
npm install

API calls failing:

  • Ensure backend is running on port 5005
  • Check proxy.conf.json configuration (should point to port 5005)
  • Verify CORS is enabled in Flask app

Future Enhancements

  • πŸ” User authentication and authorization
  • πŸ’Ύ Persistent database storage (PostgreSQL/MongoDB)
  • πŸ‘₯ Multi-user collaboration with real-time updates (WebSockets)
  • πŸ“Ž File attachments for tasks
  • πŸ’¬ Comments and activity log
  • πŸ”” Email notifications for due dates
  • πŸ“… Calendar view
  • 🏷️ Tags and labels
  • πŸ“ˆ Advanced analytics and reporting
  • 🎨 Custom themes and board backgrounds
  • ⌨️ Keyboard shortcuts
  • πŸ“± Native mobile apps

License

This project is open source and available for educational purposes.


Contributing

Feel free to fork this project and submit pull requests for any improvements!


Contact & Support

For questions or issues, please open an issue in the repository.


Happy Task Managing! πŸŽ‰

About

The Full Stack Task board application for Cursor Demo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors