A simple full-stack task management application built with a .NET API and React frontend, secured with JWT authentication and role-based authorization. The project is fully containerized using Docker, so it can be run locally with a single command.
- User registration, normal login, Google OAuth login, password reset, token refresh
- SQL Server database (via EF Core)
- JWT Authentication + Role-based Authorization (
team-lead,team-member) - Task CRUD with priority and status tracking
- Team lead can assign tasks, edit, delete, and send reminder emails
- Members can view tasks, update status, and add notes
- Tasks categorized by priority, pending / completed state
- File-based logging using NLog
- Fully containerized using Docker (
API,Client,MSSQL)
- .NET Core 3.1 Web API
- C#
- Entity Framework Core (SQL Server)
- JWT Authentication + Role-based Authorization
- Dockerized
- React (CRA)
- Fetch for API calls
- React Hooks & Context APIs
- Google OAuth Login Integration
- Dockerized
- Microsoft SQL Server (running as a Docker container)
- Install Docker Desktop
From the project root folder where docker-compose.yml is located, run:
docker-compose up --build| Service | URL |
|---|---|
| Frontend (React) | http://localhost:3000 |
| Backend API (Swagger) | http://localhost:8080/swagger/index.html |
Before running the app, create a .env file next to your docker-compose.yml and add these values.
# Database
DB_PASSWORD=YOUR_DB_PASSWORD_HERE
# JWT Config
JWT_SECRET=YOUR_RANDOM_JWT_SECRET_HERE
JWT_AUDIENCE=http://localhost:8080
JWT_ISSUER=http://localhost:8080
# Email Config (used for task reminder emails)
MAIL_USERNAME=YOUR_EMAIL_ADDRESS_HERE
MAIL_PASSWORD=YOUR_EMAIL_APP_PASSWORD_HERE
PORT=587
SERVER=smtp.gmail.com
# Frontend Config
REACT_APP_API_URL=http://localhost:8080
# Google Authentication
REACT_APP_GOOGLE_CLIENT_ID=YOUR_GOOGLE_CLIENT_ID_HEREDarshana Wijesinghe
Email address - dar.mail.work@gmail.com
Linkedin - darwijesinghe
GitHub - darwijesinghe
This project is licensed under the terms of the MIT license.