All Projects → dersonsena → Clean Arch Pokemon

dersonsena / Clean Arch Pokemon

Licence: mit
Clean Architecture de um modo divertido e prático integrando uma API com uma API de Pokémon.

Projects that are alternatives of or similar to Clean Arch Pokemon

Sample Dotnet Core Cqrs Api
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture.
Stars: ✭ 1,273 (+1135.92%)
Mutual labels:  clean-architecture, clean-code
Clean Architecture
A (work-in-progress) guide to the methodology behind Made Tech Flavoured Clean Architecture
Stars: ✭ 101 (-1.94%)
Mutual labels:  clean-architecture, clean-code
Cp Ddd Framework
A lightweight flexible development framework for complex business architecture with full ecosystem!轻量级业务中台开发框架,中台架构的顶层设计和完整解决方案!
Stars: ✭ 566 (+449.51%)
Mutual labels:  clean-architecture, clean-code
Modular Monolith With Ddd
Full Modular Monolith application with Domain-Driven Design approach.
Stars: ✭ 6,210 (+5929.13%)
Mutual labels:  clean-architecture, clean-code
Flutter pokedex
Pokedex app built with Flutter (with lots of animations) using Clean Architecture
Stars: ✭ 972 (+843.69%)
Mutual labels:  clean-architecture, clean-code
Study Path
An organized learning path about Clean Code, Test-Driven Development, Legacy Code, Refactoring, Domain-Driven Design and Microservice Architecture
Stars: ✭ 1,357 (+1217.48%)
Mutual labels:  clean-architecture, clean-code
Clean Ts Api
API em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles
Stars: ✭ 619 (+500.97%)
Mutual labels:  clean-architecture, clean-code
Clean Architecture
Clean architecture sample
Stars: ✭ 318 (+208.74%)
Mutual labels:  clean-architecture, clean-code
Viper Templates
Swift Xcode templates for creating VIPER architecture stacks
Stars: ✭ 33 (-67.96%)
Mutual labels:  clean-architecture, clean-code
Android Architecture Components Kotlin
Clean code App with Kotlin and Android Architecture Components
Stars: ✭ 23 (-77.67%)
Mutual labels:  clean-architecture, clean-code
Clean React
Sistema em ReactJs usando Hooks, Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles
Stars: ✭ 408 (+296.12%)
Mutual labels:  clean-architecture, clean-code
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-33.98%)
Mutual labels:  clean-architecture, clean-code
Flutter clean architecture
Clean architecture flutter: A Flutter package that makes it easy and intuitive to implement Uncle Bob's Clean Architecture in Flutter. This package provides basic classes that are tuned to work with Flutter and are designed according to the Clean Architecture.
Stars: ✭ 360 (+249.51%)
Mutual labels:  clean-architecture, clean-code
Android Base
Android Clean Architecture MVP RESTful client template app
Stars: ✭ 87 (-15.53%)
Mutual labels:  clean-architecture, clean-code
Clean Code Dotnet
🛁 Clean Code concepts and tools adapted for .NET
Stars: ✭ 4,425 (+4196.12%)
Mutual labels:  clean-architecture, clean-code
Cleanarchitecture.webapi
An implementation of Clean Architecture for ASP.NET Core 3.1 WebAPI. Built with loosely coupled architecture and clean-code practices in mind.
Stars: ✭ 615 (+497.09%)
Mutual labels:  clean-architecture, clean-code
Reminders
An iOS application written in Swift to demonstrate how to implement a Clean Architecture in iOS
Stars: ✭ 293 (+184.47%)
Mutual labels:  clean-architecture, clean-code
Go Realworld Clean
a clean architecture implementation of the realworldapp : https://github.com/gothinkster/realworld
Stars: ✭ 301 (+192.23%)
Mutual labels:  clean-architecture, clean-code
Guardclauses
A simple package with guard clause extensions.
Stars: ✭ 767 (+644.66%)
Mutual labels:  clean-architecture, clean-code
Aspnet Core Clean Arch
It is a clean architecture project template which is based on hexagonal-architecture principles built with .Net core.
Stars: ✭ 60 (-41.75%)
Mutual labels:  clean-architecture, clean-code

Clean Architecture com Pokémon

A ideia deste repositório é praticar os conceitos da Clean Architecture de um modo divertido e prático integrando uma API com uma API de Pokémon de Terceiros.

Aqui irei tentar replicar algumas regras do clássico jogo Pokémon Gold do Gameboy.

Pokémon Gold Logo

Pré-Requisitos

Tecnologias

Desenho Macro da Arquitetura

Montei um diagrama mostrando como está arquitetado a aplicação baseado nos meus estudos e no meu entendimento da Clean Architecture. Esse diagrama pode ser atualizado (e com certeza será) no decorrer do desenvolvimento desse estudo:

Arquitetura App

Camadas e Decisões

Domain | Entities (Camada Amarela)

Definição do autor:

As Entidades reúnem as Regras Cruciais de Negócios da empresa inteira. Uma entidade pode ser um objeto com métodos ou um conjunto de estruturas de dados e funções. Isso não importa, contanto que as entidades possam ser usadas por muitas aplicações diferentes na empresa e são os objetos de negócios da aplicação.

Elas concentram as regras mais gerais e de nível mais alto. No mínimo, são propensas a mudar quando ocorrer alguma mudança externa. Por exemplo, você não gostaria que esses objetos fossem impactados por uma mudança na navegação de página ou na segurança. Nenhuma mudança operacional em qualquer aplicação específica deve influenciar a camada da entidade.

Fonte: Clean Architecture Book (Página 204)

Uma prática que utilizei aqui é que toda Entity deverá ter sua própria Factory, pois não se sabe como as entitdades podem ser criadas no futuro. As factories nos permite ter essa flexibilidade.

Um exemplo prático pode ser visto no BattleFactory.

Use Cases (Camada Vermelha)

Definição do autor:

O software da camada de casos de uso contém as regras de negócio específicas da aplicação. Ele reúne e implementa todos os casos de uso do sistema. Esses casos de uso orquestram o fluxo de dados para e a partir das entidades e orientam essas entidades na aplicação das Regras Cruciais de Negócios a fim de atingir os objetivos do caso de uso.

Não queremos que as mudanças nessa camada afetem as entidades. Também não queremos que essa camada seja afetada por mudanças em externalidades como a base de dados, a UI ou qualquer framework comum. A camada de casos de uso deve ser isolada dessas preocupações. Contudo, esperamos que mudanças na operação da aplicação afetem os casos de uso e, portanto, o software dessa camada.

Fonte: Clean Architecture Book (Página 204)

Os use cases são separados por suas respectivas pastas e devem ter pelo menos 3 classes:

  • UseCase.php: classe principal onde será implementado o caso de uso;
  • InputBoundary.php: um DTO que representa os dados que serão passados para o caso de uso;
  • OutputBoundary.php: um DTO que representa os dados de saída que o caso de uso deverá retornar;

Dentro dessa camada também terá os contratos necessários para que as camadas mais externas possam se comunicar com esta.

Adapters | Interface Adapters (Camada Verde)

Definição do autor:

O software da camada de adaptadores de interface consiste em um conjunto de adaptadores que convertem dados no formato que é mais conveniente para os casos de uso e entidades, para o formato mais conveniente para algum agente externo como a base de dados ou a web.

Os apresentadores (Presenters), visualizações e controladores (Controllers) pertencem à camada de adaptadores de interface. Os modelos provavelmente são apenas estruturas de dados transmitidas dos controladores para os casos de uso e, então, dos casos de uso para os apresentadores e visualizações.

De maneira similar, os dados dessa camada são convertidos da forma mais conveniente para entidades e casos de uso para a forma mais conveniente para o framework de persistência em uso (por exemplo, a base de dados).Nenhum código interno desse círculo deve saber nada sobre a base de dados.

Fluxo do controle: ele começa no controlador (Controller), passa pelo caso de uso (Use Case) e, então, acaba sendo executado no apresentador (Presenter).

Fonte: Clean Architecture Book (Página 205)

Nessa camada estarão as implementações e adaptações necessárias para que a camada de Use Cases e Entities possam se comunicar com o mundo externo.

Infra | Frameworks and Drivers (Camada Azul)

Definição do autor:

A camada mais externa e é geralmente composta de frameworks e ferramentas como a base de dados e o framework web. Em geral, você não programa muita coisa nessa camada além do código de associação que estabelece uma comunicação com o círculo interno seguinte.

Todos os detalhes ficam na camada de frameworks e drivers. A web é um detalhe. A base de dados é um detalhe. Mantemos essas coisas do lado de fora, onde não podem fazer mal nenhum.

Fonte: Clean Architecture Book (Página 205)

Aqui terão as classes que farão acesso ao mundo externo: Frameworks, bibliotecas, UI, WEB, CLI e etc.

Referências e Links

Casos de Uso

Abaixo estão listadas os casos de uso para termos uma ideia fechada de Domínio e Regras de Negócios:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].