TaskManager is an intermediate-level full-stack task management system built with ASP.NET Core for the backend and Angular for the frontend. It provides comprehensive features for task creation, assignment, real-time collaboration, and analytics, making it easier for teams and individuals to stay organized and efficient.
- Features
- Technologies Used
- Prerequisites
- Getting Started
- Project Structure
- Running the Application
- Environment Variables
- Database Configuration
- Contributing
- License
- User Authentication & Authorization: Secure access using ASP.NET Identity with role-based permissions for Admin, Manager, and Employee.
- Task CRUD Operations: Create, Read, Update, and Delete tasks with the ability to assign tasks to different users.
- Task Categories and Statuses: Organize tasks by categories (e.g., Development, Marketing) and track status (Pending, In Progress, Completed).
- Real-Time Updates: Get notified of task updates and comments in real-time with SignalR.
- Commenting System: Collaborate on tasks by adding comments, with real-time updates.
- Dashboard and Analytics: Visualize task distribution and progress using charts.
- Responsive UI: Frontend built with Angular Material for a consistent experience across all devices.
- Frontend: Angular, Angular Material, TypeScript
- Backend: ASP.NET Core, Entity Framework Core, SignalR
- Database: SQL Server (using Docker for local setup)
- Other: JWT for authentication, Chart.js for analytics, SendGrid for email notifications
To run this project locally, ensure you have the following installed:
- .NET SDK (6.0)
- Node.js (>=14.x) and Angular CLI
- Docker Desktop for running SQL Server in a container
- SQL Server (if not using Docker)
git clone https://github.com/othman-birem/TaskManager
cd TaskManagerBackend (ASP.NET Core)
Navigate to the backend directory and restore .NET packages:
cd TaskManager.Server
dotnet restoreFrontend (Angular)
Navigate to the frontend directory and install Node dependencies:
cd taskmanager.client
npm installThe project uses SQL Server as its database. You can set up SQL Server using Docker or install it locally.
To start a SQL Server container using Docker, run:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourPassword!" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2022-latestUpdate the connection string in appsettings.json (found in TaskManager.Server) to match your database configuration.
Navigate to the backend folder and run migrations to set up the database:
dotnet ef database updateTo enable email notifications, create a UserSecrets.json or use environment variables for settings like SendGrid API key, database connection string, etc.
Backend (ASP.NET Core) Start the ASP.NET Core API:
cd TaskManager.Server
dotnet runFrontend (Angular) Start the Angular frontend application:
cd taskmanager.client
ng serveThe backend will be available at http://localhost:5000, and the frontend at http://localhost:4200.
TaskManager/
├── TaskManager.Server/ # ASP.NET Core backend
│ ├── Controllers/ # API controllers
│ ├── Models/ # Data models and entities
│ ├── Services/ # Business logic services
│ └── appsettings.json # Application settings
├── taskmanager.client/ # Angular frontend
│ ├── src/
│ │ └── app/
│ └── angular.json # Angular configuration
└── README.md # Project readmeRun Backend: Open a terminal in the TaskManager.Server folder and run dotnet run.
Run Frontend: Open another terminal in the taskmanager.client folder and run ng serve.
Visit http://localhost:4200 to view the application in your browser.
Set up the following environment variables in a UserSecrets.json file or your environment:
DatabaseConnection: Connection string for SQL Server. SendGridApiKey: API key for SendGrid (for email notifications). Example:
{
"DatabaseConnection": "Server=localhost;Database=TaskManager;User Id=sa;Password=YourPassword!",
"SendGridApiKey": "your-sendgrid-api-key"
}The project uses Entity Framework Core with SQL Server. Make sure your connection string is correct in appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=TaskManager;User Id=sa;Password=YourPassword!"
}Contributions are welcome! Please fork this repository, create a new branch, and submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for details.

