Trackr is an issue tracking application built as a full-stack software development project.
The project currently provides a REST API built with ASP.NET Core, Entity Framework Core, and PostgreSQL. A React frontend is planned for the next stage of development.
The API currently supports:
-
Project creation, retrieval, update, and deletion
-
Issue creation, retrieval, update, and deletion
-
Issues associated with projects
-
Issue statuses:
- Backlog
- Todo
- In Progress
- Review
- Done
-
Issue priorities:
- Low
- Medium
- High
- Critical
-
Issue filtering by status and priority
-
Text search across issue titles and descriptions
-
Configurable sorting
-
Pagination with page metadata
-
Creation and update timestamps
-
Request validation
-
RESTful HTTP responses and resource locations
- C#
- .NET 10
- ASP.NET Core
- Entity Framework Core
- LINQ
- xUnit
### Database
* PostgreSQL
* Npgsql
### Frontend
* React — planned
## Architecture
The backend separates API, business logic, persistence models, and data transfer objects.
```text
HTTP Request
|
v
Controller
|
v
Service
|
v
Entity Framework Core
|
v
PostgreSQLThe API uses DTOs to separate its public HTTP contract from Entity Framework Core entities.
GET /api/projects
GET /api/projects/{id}
POST /api/projects
PUT /api/projects/{id}
DELETE /api/projects/{id}Issues are scoped to a project.
GET /api/projects/{projectId}/issues
GET /api/projects/{projectId}/issues/{id}
POST /api/projects/{projectId}/issues
PUT /api/projects/{projectId}/issues/{id}
DELETE /api/projects/{projectId}/issues/{id}The issue collection endpoint supports filtering, searching, sorting, and pagination.
Example:
GET /api/projects/1/issues?status=InProgress&priority=High&search=authentication&sortBy=UpdatedAt&sortDirection=Desc&page=1&pageSize=10Install:
- .NET 10 SDK
- PostgreSQL
git clone <repository-url>
cd TrackrTrackr uses .NET User Secrets for the local PostgreSQL connection string.
From the API project directory:
cd src/Trackr.Api
dotnet user-secrets set "ConnectionStrings:TrackrDatabase" "Host=localhost;Port=5432;Database=trackr;Username=postgres;Password=YOUR_PASSWORD"Do not commit database passwords or other secrets to the repository.
dotnet ef database updatedotnet watchThe local API address is displayed in the terminal when the application starts.
The backend includes automated tests built with xUnit and Entity Framework Core's InMemory provider.
Run the test suite from the repository root:
dotnet test
## Project Structure
```text
Trackr/
├── src/
│ └── Trackr.Api/
│ ├── Controllers/
│ ├── Data/
│ │ └── Configurations/
│ ├── Dtos/
│ ├── Migrations/
│ ├── Models/
│ ├── Services/
│ └── Program.cs
├── Trackr.slnx
└── README.mdPlanned improvements include:
- React frontend
- Additional issue management features
- Improved API error handling
- Expand automated test coverage
- Authentication and user management
- Deployment
Trackr is being developed as a learning and portfolio project focused on modern backend and full-stack development practices with the .NET ecosystem.