Skip to content

dmazoli/ToDoProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

ToDoList API

Projeto em .NET (ASP.NET Core Web API) para gerenciamento de tarefas, organizado por contexto e por camadas (Application, Domain, Infrastructure e WebApi), com aplicacao de DDD, Arquitetura Hexagonal e Clean Architecture.

Arquitetura adotada

  • DDD (Domain-Driven Design): modelagem de dominio em Domain com entidades, value objects e regras de negocio.
  • Arquitetura Hexagonal: uso de portas e adaptadores para separar regras de negocio de detalhes externos.
  • Clean Architecture: dependencias apontando para o dominio e casos de uso, mantendo Infrastructure e WebApi como detalhes.

Stack

  • .NET 10 (net10.0)
  • ASP.NET Core Web API
  • Entity Framework Core
  • SQLite
  • OpenAPI + Scalar (ambiente Development)

Estrutura de pastas

ProjetoDotNet/
|-- ToDoList.slnx
|-- README.md
`-- ToDoList/
    |-- Program.cs
    |-- ToDoList.csproj
    |-- appsettings.json
    |-- appsettings.Development.json
    |-- ToDoList.http
    |-- todolist.db
    |-- Contexts/
    |   `-- Todo/
    |       |-- Application/
    |       |   |-- DTOs/
    |       |   |-- Ports/
    |       |   |-- Services/
    |       |   `-- Extensions/
    |       |-- Domain/
    |       |   |-- Entities/
    |       |   |-- Repositories/
    |       |   `-- ValueObjects/
    |       |-- Infrastructure/
    |       |   |-- Adapters/
    |       |   |-- Extensions/
    |       |   `-- Persistence/
    |       |       |-- Configurations/
    |       |       `-- Migrations/
    |       `-- WebApi/
    |           `-- Controllers/
    |-- Shared/
    |   `-- Domain/
    |       `-- Exceptions/
    `-- Properties/
        `-- launchSettings.json

Organizacao do projeto

Program.cs

  • Composicao da aplicacao e pipeline HTTP.
  • Registro dos servicos de Application e Infrastructure via extensoes.
  • Mapeamento de controllers e endpoint raiz.

Contexts/Todo/Application

  • Camada de casos de uso.
  • DTOs: contratos de entrada e saida da API.
  • Ports: interfaces de entrada (ex.: ITodoService) para os casos de uso.
  • Services: implementacao da regra de orquestracao dos casos de uso.
  • Extensions: registro de dependencias da camada.

Contexts/Todo/Domain

  • Nucleo de negocio, sem dependencia de framework.
  • Entities: entidades de dominio (ex.: TodoItem).
  • ValueObjects: regras de consistencia em tipos de valor (ex.: TodoTitle).
  • Repositories: contratos de persistencia (ex.: ITodoRepository).

Contexts/Todo/Infrastructure

  • Implementacoes tecnicas e detalhes de infraestrutura.
  • Adapters: implementacoes de repositorios e adaptadores de saida.
  • Persistence: DbContext, configuracoes do EF e migracoes.
  • Extensions: registro de DbContext e repositorios no container DI.

Contexts/Todo/WebApi

  • Adaptador de entrada HTTP.
  • Controllers: endpoints REST que recebem requests, delegam para Application e retornam responses.

Shared

  • Elementos comuns reutilizaveis entre contextos.
  • Hoje contem excecoes de dominio (DomainException).

Fluxo da requisicao (resumo)

  1. Requisicao HTTP chega no controller em WebApi.
  2. Controller chama um servico de Application (porta de entrada).
  3. Application aplica regras de caso de uso e usa contratos de Domain.
  4. Infrastructure implementa persistencia e acesso a dados (SQLite/EF Core).
  5. Resposta volta para o controller e para o cliente.

Como executar

Na raiz do repositorio:

dotnet restore ToDoList.slnx
dotnet run --project ToDoList/ToDoList.csproj

URLs padrao (Development):

  • http://localhost:5000
  • https://localhost:7272

Documentacao da API (Development):

  • OpenAPI JSON: http://localhost:5000/openapi/v1.json
  • Scalar UI: http://localhost:5000/scalar/v1

Testar endpoints rapidamente

  • Use o arquivo ToDoList/ToDoList.http para chamadas HTTP.
  • Endpoints base:
    • GET /api/todos
    • GET /api/todos/{id}
    • POST /api/todos
    • PATCH /api/todos/{id}
    • PUT /api/todos/{id}
    • DELETE /api/todos/{id}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages