|
| 1 | +# AdvancedTodoList |
1 | 2 | **AdvancedTodoList**, developed as my personal project, is a Web API for managing to-do lists in teams, where each member can have a role and different sets of permissions. It's based on ASP.NET Core and Entity Framework Core with SQL Server running on Docker. |
2 | 3 |
|
3 | | -# Technologies and tools used |
| 4 | +## Technologies and tools used |
4 | 5 | * .NET 8.0 |
5 | 6 | * ASP.NET Core |
6 | 7 | * Mapster |
|
9 | 10 | * FluentValidation |
10 | 11 | * SharpGrip.FluentValidation.AutoValidation |
11 | 12 |
|
12 | | -# Features |
| 13 | +## Features |
13 | 14 | * **Collaborative to-do list management**: The API allows users to add new tasks (`TodoListItem`) to their to-do lists, update task details, mark tasks as completed/skipped, or delete them when they're no longer needed. |
14 | 15 | * **Invitation links**: Users can create invitation links for their to-do lists to allow other users to join them. |
15 | 16 | * **Search and Filtering**: Most endpoints allow users to specify filtering criteria and search prompts. |
|
18 | 19 | * **Swagger documentation**: The API is documented using Swagger, providing a convenient way for developers to explore and understand the API endpoints. |
19 | 20 | * **Integration testing**: Integration tests utilize `Testcontainers` for comprehensive testing of API functionality and interactions. |
20 | 21 |
|
21 | | -# Architecture Overview |
| 22 | +## Architecture Overview |
22 | 23 | The Advanced Todo List application follows a clean architecture. The main three layers are: |
23 | 24 |
|
24 | | -## Core Layer (`AdvancedTodoList.Core`) |
| 25 | +### Core Layer (`AdvancedTodoList.Core`) |
25 | 26 | * Contains services and repositories interfaces. |
26 | 27 | * Defines the entities and value objects representing the domain model. |
27 | 28 | * Provides services for CRUD operations, task management, user authentication, authorization, etc. |
28 | 29 | * Defines specifications to query and filter parameters. |
29 | 30 | * Implements validation logic using FluentValidation for ensuring data integrity and consistency. |
30 | 31 |
|
31 | | -## Infrastructure Layer (`AdvancedTodoList.Infrastructure`) |
| 32 | +### Infrastructure Layer (`AdvancedTodoList.Infrastructure`) |
32 | 33 | * Handles data access and infrastructure-related concerns. |
33 | 34 | * Implements repositories and data access logic using Entity Framework Core. |
34 | 35 | * Manages database context and configuration. |
35 | 36 | * Handles JWT and refresh tokens. |
36 | 37 | * Implements services and specifications. |
37 | 38 |
|
38 | | -## Application Layer (`AdvancedTodoList`) |
| 39 | +### Application Layer (`AdvancedTodoList`) |
39 | 40 | * Implements RESTful API endpoints using ASP.NET Core Web API. |
40 | 41 | * Handles incoming HTTP requests, validates input data, and delegates to services for business logic execution. |
41 | 42 | * Uses authentication and authorization mechanisms to secure endpoints. |
42 | 43 | * Facilitates error handling and response formatting. |
43 | 44 | * Exposes Swagger documentation. |
44 | 45 |
|
45 | | -# Testing Approach |
| 46 | +## Testing Approach |
46 | 47 | The `AdvancedTodoList` application uses two types of automated tests: unit tests and integration tests. |
47 | 48 |
|
48 | | -## Integration tests |
| 49 | +### Integration tests |
49 | 50 | Integration tests validate the interaction between different components and layers of the application. |
50 | 51 |
|
51 | | -### Scope: |
| 52 | +#### Scope: |
52 | 53 | * **Endpoints layer**: API endpoints are tested using a simulated HTTP client to verify correct request handling, response generation, and error handling. |
53 | 54 | * **Service layer**: The data access layer is mocked, and services are tested to ensure proper business logic execution, error handling, and interaction with external dependencies. |
54 | 55 | * **Data access layer**: Repository implementations are tested with a database running on a test container to ensure that repositories interact correctly with Entity Framework Core and the MsSql database. |
55 | 56 |
|
56 | | -## Unit tests |
| 57 | +### Unit tests |
57 | 58 | Unit tests validate individual units of code in isolation from external dependencies. |
58 | 59 |
|
59 | | -### Scope: |
| 60 | +#### Scope: |
60 | 61 | * **Core Logic**: Simple service methods, validators, specifications, and other core components. |
61 | 62 | * **Utilities and Helpers**: Utility classes, helper functions, and extension methods. |
62 | 63 |
|
|
0 commit comments