This repository contains the backend implementation of the Project Management Tool, a platform designed to streamline project planning, task assignments, and collaboration. Built with .NET Core, this backend provides robust APIs, secure authentication, and data management features to support the frontend application or other client integrations.
- .NET Core
- Entity Framework Core (EF Core)
- ASP.NET Core
- MySQL
-
Project and Task Management:
- Create, update, and delete projects and tasks.
- Assign tasks to team members with deadlines and priorities.
-
User Authentication and Authorization:
- Secure user registration and login using JWT-based authentication.
- Role-based access control (e.g., Admin, Manager, User).
-
API Design:
- RESTful APIs for seamless integration with frontend applications or external tools.
- Clear and consistent endpoint structure.
-
Error Handling and Validation:
- Comprehensive input validation.
- Custom error responses for a better developer experience.
-
Database Integration:
- Uses Entity Framework Core for data persistence.
- Support for SQL-based relational databases.
The project is organized into a multi-layered architecture for scalability and maintainability:
-
Controllers
- Handles HTTP requests and responses.
- Defines endpoints for user, project, and task management.
-
Services
- Contains the business logic of the application.
- Processes input data and interacts with repositories.
-
Repositories
- Manages database operations like CRUD (Create, Read, Update, Delete).
- Abstracts data persistence logic.
-
Models
- Represents entities like
User
,Project
, andTask
. - Includes data annotations for validation.
- Represents entities like
-
Utilities
- Helper functions for tasks like JWT generation, password hashing, and logging.
- Backend Framework: .NET Core
- Database: SQL Server (or customizable for other relational databases)
- ORM: Entity Framework Core
- Authentication: JSON Web Tokens (JWT)
- Logging: Integrated logging for debugging and monitoring
- .NET SDK
- A relational database (e.g., SQL Server, PostgreSQL).
- Clone the repository:
git clone https://github.com/dogaaydinn/ProjectManagementTool.BE.git
- Navigate to the project directory:
```bash
`cd ProjectManagementTool.BE`
-
Set up the database connection string in
appsettings.json
:json
{ "ConnectionStrings": { "DefaultConnection": "Your-Database-Connection-String-Here" } }
-
Apply migrations and seed the database (if applicable):
`dotnet ef database update`
-
Build and run the application:
`dotnet run`
-
POST /api/auth/register
Registers a new user.
Request Body Example:json
{ "username": "john_doe", "email": "[email protected]", "password": "securepassword" }
-
POST /api/auth/login
Logs in a user and returns a JWT token.
Request Body Example:json
{ "email": "[email protected]", "password": "securepassword" }
-
GET /api/projects
Retrieves all projects for the authenticated user. -
POST /api/projects
Creates a new project.
Request Body Example:{ "name": "New Project", "description": "Project description here." }
-
GET /api/tasks/{projectId}
Retrieves all tasks for a specific project. -
POST /api/tasks
Creates a new task under a project.
Request Body Example:json
{ "projectId": 1, "title": "Design homepage", "description": "Create wireframe for the homepage.", "dueDate": "2024-11-30T00:00:00", "priority": "High" }
If you make changes to the models, update the database schema by running:
```bash
dotnet ef migrations add MigrationName
dotnet ef database update`
- Use integrated logging to monitor API requests and exceptions.
- Run the application in debug mode through Visual Studio or a similar IDE.
-
Notification System:
Notify team members about task updates and deadlines. -
Reporting:
Generate project and task reports for managers. -
Third-Party Integrations:
Support tools like Slack or Microsoft Teams for real-time collaboration. -
Frontend Integration:
Develop or connect to a modern frontend for a seamless user experience.
Contributions are welcome! Please follow these steps to contribute:
-
Fork the repository.
-
Create a feature branch:
`git checkout -b feature/your-feature-name`
-
Commit your changes:
`git commit -m "Add your message here"`
-
Push to your forked repository:
`git push origin feature/your-feature-name`
-
Open a pull request describing your changes.
This project is licensed under the MIT License. You are free to use, modify, and distribute this project as per the license terms.