b61f3ca6-2a7c-486b-a57f-b5146bb0bd93.mp4
O aplicativo é um projeto de código aberto desenvolvido com objetivo compartilhar as melhores práticas e abordagens para o desenvolvimento de aplicativos completos e complexos utilizando tecnologias .NET.
Este projeto foi inspirado em eShop, com algumas particularidades.
Se algo aqui foi útil para você, ficaríamos imensamente gratos se você nos desse uma estrela. Seu apoio nos ajuda a continuar fornecendo conteúdo valioso e aprimorando nossos projetos.
-
.NET 6
- ASP.NET MVC
- ASP.NET WebApi
- ASP.NET Identity Core
- Refresh Token
- JWT
- gRPC
- Entity Framework Core 6
-
Componentes / Serviços
- Kafka
- PostgreSQL
- MongoDB
- Polly.NET
- Dapper
- FluentValidator
- MediatR
- Swagger UI
-
Hosting
- NGINX
- Docker
- Clean Code
- Clean Architecture
- SOLID Principles
- DDD - Domain Driven Design
- Domain Events
- Domain Notification
- Domain Validations
- Integrations Events
- CQRS
- Fail Fast Validations
- Retry Pattern
- Circuit Breaker
- Unit of Work
- Repository Pattern
- Result Pattern
- Publish/Subscribe Pattern
- Flutter (Android, iOS, Web, Windows, macOS)
- Flutter Modular
- Flutter Mobx (Stores/Controllers)
- (Somente Win) Instale o Visual Studio. Visual Studio 2022 ou
- (Win/Mac) Instale o Visual Studio Code. Visual Studio Code
- Instale o .NET Core 6. .NET 6 SDK
- Instale o Docker. Docker
- Instale o Flutter (recomendo a versão 3.13.9). Flutter Download
- Instale o Git. Git Download
1. Clone o repository: https://github.com/alexandresmoraes/mercadovila e acesse a pasta src
git clone https://github.com/alexandresmoraes/mercadovila
cd .\mercadovila\src\
(macOS/Linux)
cp sample.env .env
(Win)
copy sample.env .env
Warning
Confira se o Docker está inicializado.
docker-compose -f docker-compose.dev.yml up
Parte 1 (Opcional): (Somente Win) Rodando aplicação pelo Visual Studio:
- Abra o arquivo
mercadovila.sln
no Visual Studio - Selecione os projetos para Startup, Auth.API, Catalogo.API, Compras.API e Vendas.API
- Pressione F5 para iniciar
Parte 2 (Obrigatório): (Win/macOS/Linux) Rodando aplicação pelo Visual Studio Code:
- Utilize o arquivo launch.json e tasks.json para uma melhor experiência confira:
- Escolha seu device para rodar o flutter.
- Se optou pela opção 1, aqui não é necessário rodar "Start All" e selecionar apenas "Mercado Vila Mobile (debug mode)", senão "Start All".
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/mercadovila.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
}
]
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Mercado Vila Auth API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/src/services/Auth/Auth.API/bin/Debug/net6.0/Auth.API.dll",
"args": [],
"cwd": "${workspaceFolder}/src/services/Auth/Auth.API",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Mercado Vila Catalogo API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/src/services/Catalogo/Catalogo.API/bin/Debug/net6.0/Catalogo.API.dll",
"args": [],
"cwd": "${workspaceFolder}/src/services/Catalogo/Catalogo.API",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Mercado Vila Compras API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/src/services/Compras/Compras.API/bin/Debug/net6.0/Compras.API.dll",
"args": [],
"cwd": "${workspaceFolder}/src/services/Compras/Compras.API",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Mercado Vila Vendas API",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/src/services/Vendas/Vendas.API/bin/Debug/net6.0/Vendas.API.dll",
"args": [],
"cwd": "${workspaceFolder}/src/services/Vendas/Vendas.API",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Mercado Vila Mobile (debug mode)",
"cwd": "${workspaceFolder}/src/mobile",
"request": "launch",
"type": "dart",
"flutterMode": "debug",
"toolArgs": [
"--dart-define", "BASE_URL=http://<seu_ip>:8081"
]
}
],
"compounds": [
{
"name": "Start all",
"configurations": [
"Mercado Vila Auth API",
"Mercado Vila Catalogo API",
"Mercado Vila Compras API",
"Mercado Vila Vendas API",
"Mercado Vila Mobile (debug mode)"
],
"stopAll": true
}
]
}
- Este repositório não pretende ser um modelo de referência para todas as aplicações .NET.
- Nosso objetivo principal é compartilhar conhecimento e experiência.
- Tenha cuidado com o excesso de arquitetura em seus serviços. Nem sempre é necessário muitos padrões e implementações.
- Pedimos desculpas pela mescla de português e inglês. Optamos por usar o máximo possível de termos em português nos domínios para facilitar a compreensão do DDD por parte dos estudantes. Lembre-se de que até mesmo Game of Thrones não seria tão impactante se Jon Snow se chamasse João das Neves.
Vamos abrir uma discussão sobre problemas e possíveis soluções! Se você está interessado em contribuir, é importante focarmos em problemas já identificados e discutidos. Antes de enviar um Pull Request, vamos garantir que o problema tenha sido aprovado e discutido adequadamente pela equipe.
Se estiver disposto a ajudar, escolha um problema que tenha sido aprovado e debatido. Uma vez selecionado, podemos discutir como abordar a implementação de forma eficaz e alinhada com as diretrizes do projeto.
Criado com ❤️ por Alexandre de Moraes