A RESTful To-Do list API built with C# and ASP.NET Core, following Clean Architecture principles with an in-memory database.
TodoApp/
├── TodoApp.Domain/ Entities + Repository interface
├── TodoApp.Application/ Business logic (TodoService)
├── TodoApp.Infrastructure/ In-memory repository
├── TodoApp.Api/ HTTP controllers
└── TodoApp.Tests/ Unit and functional tests
Each layer has a single responsibility:
| Layer | Responsibility |
|---|---|
TodoApp.Domain/ |
Pure domain model (Todo) |
TodoApp.Application/ |
Repository contract + business logic |
TodoApp.Infrastructure/ |
In-memory repository |
TodoApp.Api/ |
HTTP controllers |
| Method | Endpoint | Description | Status |
|---|---|---|---|
| GET | /todos | List all todos | 200 |
| POST | /todos | Create a todo | 201 |
| GET | /todos/{id} | Get by ID | 200 |
| PUT | /todos/{id} | Update a todo | 200 |
| DELETE | /todos/{id} | Delete a todo | 204 |
{
"id": 1,
"title": "Buy groceries",
"isCompleted": false,
"createdAt": "2026-03-12T11:00:00Z"
}- .NET 8+
cd TodoApp/TodoApp.Api
dotnet runServer runs on http://localhost:8080.
# Unit and functional tests
dotnet test TodoApp.sln