Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
romandykyi authored Apr 2, 2024
1 parent 486e682 commit a95e06f
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# AdvancedTodoList
**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.

# Technologies and tools used
## Technologies and tools used
* .NET 8.0
* ASP.NET Core
* Mapster
Expand All @@ -9,7 +10,7 @@
* FluentValidation
* SharpGrip.FluentValidation.AutoValidation

# Features
## Features
* **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.
* **Invitation links**: Users can create invitation links for their to-do lists to allow other users to join them.
* **Search and Filtering**: Most endpoints allow users to specify filtering criteria and search prompts.
Expand All @@ -18,45 +19,45 @@
* **Swagger documentation**: The API is documented using Swagger, providing a convenient way for developers to explore and understand the API endpoints.
* **Integration testing**: Integration tests utilize `Testcontainers` for comprehensive testing of API functionality and interactions.

# Architecture Overview
## Architecture Overview
The Advanced Todo List application follows a clean architecture. The main three layers are:

## Core Layer (`AdvancedTodoList.Core`)
### Core Layer (`AdvancedTodoList.Core`)
* Contains services and repositories interfaces.
* Defines the entities and value objects representing the domain model.
* Provides services for CRUD operations, task management, user authentication, authorization, etc.
* Defines specifications to query and filter parameters.
* Implements validation logic using FluentValidation for ensuring data integrity and consistency.

## Infrastructure Layer (`AdvancedTodoList.Infrastructure`)
### Infrastructure Layer (`AdvancedTodoList.Infrastructure`)
* Handles data access and infrastructure-related concerns.
* Implements repositories and data access logic using Entity Framework Core.
* Manages database context and configuration.
* Handles JWT and refresh tokens.
* Implements services and specifications.

## Application Layer (`AdvancedTodoList`)
### Application Layer (`AdvancedTodoList`)
* Implements RESTful API endpoints using ASP.NET Core Web API.
* Handles incoming HTTP requests, validates input data, and delegates to services for business logic execution.
* Uses authentication and authorization mechanisms to secure endpoints.
* Facilitates error handling and response formatting.
* Exposes Swagger documentation.

# Testing Approach
## Testing Approach
The `AdvancedTodoList` application uses two types of automated tests: unit tests and integration tests.

## Integration tests
### Integration tests
Integration tests validate the interaction between different components and layers of the application.

### Scope:
#### Scope:
* **Endpoints layer**: API endpoints are tested using a simulated HTTP client to verify correct request handling, response generation, and error handling.
* **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.
* **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.

## Unit tests
### Unit tests
Unit tests validate individual units of code in isolation from external dependencies.

### Scope:
#### Scope:
* **Core Logic**: Simple service methods, validators, specifications, and other core components.
* **Utilities and Helpers**: Utility classes, helper functions, and extension methods.

Expand Down

0 comments on commit a95e06f

Please sign in to comment.