Visit: https://task-ease-flow.vercel.app/
Task Ease makes managing your tasks effortless, helping you focus on what matters most without the stress.
This is a full-stack application designed to organize tasks efficiently. This repository contains the backend API built with ASP.NET Core, using MongoDB for data storage, as well as the frontend built with Next.js and Material-UI.
The application handles user authentication, task management, and provides a robust structure following best practices and design patterns.
- Authentication: User login and JWT token generation implemented.
- Todos CRUD: Create, read, update, delete operations for todos completed.
- Sort and Filter: Sorting and filtering by due date, status, name.
- Database Connection: MongoDB connection properly configured and tested.
- Authorization: JWT-based authorization for API endpoints implemented.
- API Documentation: All API endpoints documented.
- Responsive Design: UI is responsive and works well on various devices.
- README: Detailed setup and usage instructions provided.
- CI/CD: Setup CI/CD pipeline for automated deployment.
- Error Handling: Implement error handling and validation.
- User Registration: Implement user registration endpoint.
- Todo Priorities: Add priority levels to todos.
- Tags: Add tagging functionality to todos.
- Unit Tests: Write unit tests for backend and frontend.
- Frontend: Next.js 14.0, TypeScript, Material-UI (MUI)
- Backend: ASP.NET Core 8.0, C#
- Database: MongoDB (MongoDB Atlas)
task-ease/
├── client/
├── api/
├── .gitignore
├── README.md
└── task-ease.sln
+---------------------+ +---------------------+
| Frontend | | Backend |
|---------------------| |---------------------|
| +---------------+ | | +---------------+ |
| | React App | | | | ASP.NET Core | |
| | (Next.js, MUI)| | | | API | |
| +---------------+ | | +---------------+ |
| | | | | |
| | HTTP | | | |
+---------------------+ +---------------------+
| |
| |
| |
+---------->+--------------------v---------------------+
| Services |
|------------------------------------------|
| +--------------+ +--------------------+ |
| | UserService | | TodosService | |
| +--------------+ +--------------------+ |
+------------------+-----------------------+
|
|
v
+---------------------------+
| Data Access |
|---------------------------|
| +-----------------------+ |
| | TodoContext | |
| |(MongoDB Interaction) | |
| +-----------------------+ |
+-----------|----------------+
|
v
+-----------------------+
| MongoDB |
| (Hosted on Atlas) |
+-----------------------+
git clone https://github.com/ijoshwang/task-ease.git
cd task-ease
cd api
Create a .env
file in the api directory and add the following:
MONGODB_CONNECTION_STRING=
MONGODB_DATABASE_NAME==
JWT_KEY=
JWT_ISSUER=
JWT_AUDIENCE=
dotnet restore
dotnet build
dotnet watch run
API documentation can be accessed at https://localhost:5008/swagger
cd client
npm install
npm run dev
Visit the frontend at http://localhost:3000
- Request Body:
{ "name": "string", "password": "string" }
- Response:
{ "token": "string" }
-
Query Parameters:
- status (optional): Filter by status (all, 0, 1, 2)
- sortBy (optional): Sort by field (status, dueDate, name)
- sortOrder (optional): Sort order (asc, desc)
-
Response:
[ { "id": "string", "name": "string", "description": "string", "dueDate": "2024-06-15T00:00:00Z", "status": 0, "userId": "string", "createTime": "2024-04-20T10:20:30Z" } ]
- Response:
{ "id": "string", "name": "string", "description": "string", "dueDate": "2024-06-15T00:00:00Z", "status": 0, "userId": "string", "createTime": "2024-04-20T10:20:30Z" }
-
Request Body:
{ "name": "string", "description": "string", "dueDate": "2024-06-15T00:00:00Z" }
-
Response:
{ "id": "string", "name": "string", "description": "string", "dueDate": "2024-06-15T00:00:00Z", "status": 0, "userId": "string", "createTime": "2024-04-20T10:20:30Z" }
- Request Body:
{ "id": "string", "name": "string", "description": "string", "dueDate": "2024-06-15T00:00:00Z", "status": 1 }
- Response:
- 204 No Content
- Response:
- 204 No Content