A lightweight incident management API built with ASP.NET Core Minimal API (.NET 8).
This project provides a clean RESTful interface to create, retrieve, update, and delete incidents. It was developed as a portfolio project to showcase solid backend fundamentals, including endpoint design, request and response modeling, HTTP status code handling, enum serialization, Swagger documentation, and simple frontend integration.
- Create incidents with title, description, and severity
- Retrieve all incidents or a specific incident by ID
- Update incident fields such as title, description, severity, or status
- Delete incidents by ID
- Automatically generate creation and update timestamps
- Serialize enum values as strings for cleaner API responses
- Explore and test the API through Swagger UI
- Interact with the API through a lightweight frontend
- C#
- ASP.NET Core 8
- Minimal API
- Swagger / Swashbuckle
- HTML, CSS, JavaScript
- In-memory data storage for the current MVP version
incident-tracker-api/
├── Data/
├── docs/
│ └── images/
├── Dtos/
├── Frontend/
├── Models/
├── Properties/
├── Program.cs
├── incident-tracker-api.csproj
└── README.md
Restore dependencies and run the API:
dotnet restore
dotnet runOnce the application starts, the terminal will show a local URL similar to:
http://localhost:5283Then open Swagger UI at:
http://localhost:5283/swaggerIf the local port is different on your machine, use the one shown in the terminal output.
Base route:
/api/incidentsAvailable endpoints:
- GET / — root endpoint
- GET /api/incidents — retrieve all incidents
- GET /api/incidents/{id} — retrieve an incident by ID
- POST /api/incidents — create a new incident
- PATCH /api/incidents/{id} — update an existing incident
- DELETE /api/incidents/{id} — delete an incident
Create Incident
{
"title": "Login service unavailable",
"description": "Users cannot authenticate into the platform.",
"severity": "HIGH"
}When a new incident is created:
- the API returns 201 Created
- the initial status is set to OPEN
- createdAt and updatedAt are generated automatically
{
"status": "IN_PROGRESS"
}- Swagger UI
- Example POST Request Returning 201 Created
This version uses in-memory storage, which means data is reset every time the application restarts.
This is intentional for the current scope of the project, where the focus is on API design, backend structure, and developer-facing usability. Persistent storage is planned for a future iteration.
This project was built to present practical backend development skills in a compact but polished format. It emphasizes clean API behavior, readable structure, and clear technical communication without adding unnecessary complexity.
- Add persistent storage with PostgreSQL and Entity Framework Core
- Add unit and integration tests
- Improve validation and standardized error handling
- Containerize the project with Docker
- Extend the frontend to support editing and deleting incidents visually
- Add CI workflows for build and test automation
Yulicenia Díaz Cabrera GitHub: yulidicab1