Arquiteturando uma Aplicação com Quasar, PostgreSQL, ASP.NET Core e Docker - Introdução
Tags: quasar, postgres, aspnetcore, docker
Published: 2020-04-19 23:22:40

##0 Introdução

Ao longo dos próximos artigos, iremos estruturar uma aplicação, que utiliza o `ASP.NET Core` no seu `Backend`, `PostgreSQL` como banco de dados, `Quasar Framework` no `Frontend`, e `Docker` para orquestrar tudo isto.

Também iremos ver o processo para publicar estas imagens do `docker` em um registro de `containers`, assim como configuraremos uma `VM` para hospedar os nossos serviços, assim como configurar o `traefik` para fazer o redirecionamento `HTTPS` e gerenciar o registro de certificados `SSL` junto ao `Let's encrypt`.

Outro ponto que será abordado, é a criação de alguns recursos no `Azure`, como `VM`, registro de `containers`, etc. Porém a utilização do Azure é completamente opcional.

Gostaria de deixar claro, que durante os artigos, eu irei expor as praticas que eu adoto durante o desenvolvimento, assim como eu irei expor a minha opinião contraria a algumas outras praticas que são comumente aceitas. Porém, quero reforçar que, boas e más praticas é um conceito um tanto quanto oblíquo, desta forma, deixo para você a obrigação de julgar, e então adote para si aquilo que achar interessante. De toda forma, aportar uma pratica sem refletir sobre a sua necessidade, funcionamento e intuito, é o que podemos chamar de má pratica.

Caso sinta que atropelei algum assunto, ou que algo não ficou suficientemente claro, fique a vontade para adicionar comentários.

> De toda forma, o source da aplicação que foi usado como base para estes artigos, pode ser encontrado em [Github QPANC](https://github.com/TobyMosque/qpanc), aconselho que, faça um clone do mesmo, e use ele como referencia durante a leitura dos artigos.

##1 Indice

  * [Source](https://github.com/TobyMosque/qpanc)
  * [Introdução](https://dev.to/quasar-pt-br/arquiteturando-uma-aplicacao-com-quasar-postgresql-asp-net-core-e-docker-introducao-o7o)
  * [Parte I - ASP.NET - Inicializando os Projetos](https://dev.to/quasar-pt-br/qpanc-parte-1-asp-net-inicializando-os-projetos-lkm)
  * [Parte 2 - PostgreSQL](https://dev.to/quasar-pt-br/qpanc-parte-2-postgresql-51pb)
  * [Parte 3 - ASP.NET - Registrando Serviços e Lendo Variáveis de Ambiente](https://dev.to/quasar-pt-br/qpanc-parte-3-asp-net-registrando-servicos-e-lendo-variaveis-de-ambiente-3do2)
  * [Parte 4 - ASP.NET - Entity Framework e ASP.NET Core Identity](https://dev.to/quasar-pt-br/qpanc-parte-4-asp-net-entity-framework-e-asp-net-core-identity-40f9)
  * [Parte 5 - ASP.NET - Documentação Interativa com Swagger](https://dev.to/quasar-pt-br/qpanc-parte-5-asp-net-documentacao-interativa-com-swagger-4n0o)
  * [Parte 6 - ASP.NET - Regionalização](https://dev.to/quasar-pt-br/qpanc-parte-6-asp-net-regionalizacao-13p5)
  * [Parte 7 - ASP.NET - Autenticação e Autorização](https://dev.to/quasar-pt-br/qpanc-parte-7-asp-net-autenticacao-e-autorizacao-bpd)
  * [Parte 8 - ASP.NET - CORS](https://dev.to/quasar-pt-br/qpanc-parte-8-asp-net-cors-52dn)
  * [Parte 9 - Quasar - Criação e Configuração do Projeto](https://dev.to/quasar-pt-br/qpanc-parte-9-quasar-criacao-e-configuracao-do-projeto-5hbi)
  * [Parte 10 - Quasar - Configurações e Customizações](https://dev.to/quasar-pt-br/qpanc-parte-10-quasar-configuracoes-e-customizacoes-2i86)
  * [Parte 11 - Quasar - Componentes - Diferença entre SPA e SSR](https://dev.to/quasar-pt-br/qpanc-parte-11-quasar-componentes-diferenca-entre-spa-e-ssr-1a3c)
  * [Parte 12 - Quasar - Serviços](https://dev.to/quasar-pt-br/qpanc-parte-12-quasar-servicos-4e61)
  * [Parte 13 - Quasar - Regionalização e Stores](https://dev.to/quasar-pt-br/qpanc-parte-13-quasar-regionalizacao-e-stores-1kep)
  * [Parte 14 - Quasar - Consumindo a API](https://dev.to/quasar-pt-br/qpanc-parte-14-quasar-consumindo-a-api-fn6)
  * [Parte 15 - Quasar - Login](https://dev.to/quasar-pt-br/qpanc-parte-15-quasar-login-jc6)
  * [Parte 16 - Quasar - Áreas Protegidas](https://dev.to/quasar-pt-br/qpanc-parte-16-quasar-areas-protegidas-3jkn)
  * [Parte 17 - Quasar - Registro](https://dev.to/quasar-pt-br/qpanc-parte-17-quasar-registro-3b8c)
  * [Parte 18 - Docker - Maquina Virtual Linux](https://dev.to/quasar-pt-br/qpanc-parte-18-docker-maquina-virtual-linux-g5c)
  * [Parte 19 - Docker - Registro e Build](https://dev.to/quasar-pt-br/qpanc-parte-19-docker-registro-e-build-31i4)
  * [Parte 20 - Docker - Traefik e Publicação](https://dev.to/quasar-pt-br/qpanc-parte-20-docker-traefik-e-publicacao-3g3d)
  * [Demo Online](https://qpanc.tobiasmesquita.dev)

##2 Pré-requisitos

1 - Windows 10 - [URL](https://www.microsoft.com/pt-br/windows/)
2 - Visual Studio 2019 - [Download](https://visualstudio.microsoft.com/en-us/vs/?rr=https%3A%2F%2Fwww.google.com.br%2F)
3 - .NET Core SDK - [Download](https://dotnet.microsoft.com/download)
4 - NodeJS - [Download](https://nodejs.org/en/)
5 - Yarn - [Download](https://yarnpkg.com)
6 - Docker Compose - [Install](https://docs.docker.com/compose/install/)
7 - Azure Data Studio - [Download](https://docs.microsoft.com/en-us/sql/azure-data-studio/download-azure-data-studio?view=sql-server-ver15)

###2.1 - Utilizando o Linux

Temos o Windows como pre-requisito, pois estaremos utilizando o Visual Studio 2019, porém, é possível utilizar o Linux e/ou Mac com o Visual Studio Core.

###2.2 - Visual Studio Dev Essentials

Recomendo que faça a sua inscrição no programa "Visual Studio Dev Essentials" ([URL](https://visualstudio.microsoft.com/en-us/dev-essentials/)), ao faze-lo, terá uma serie de benefícios , como assinaturas para cursos, credito para o azure, ferramentas de desenvolvimento, etc.

###2.3 - Visual Studio 2019

Durante A Instalação do Visual Studio, escolha os seguintes workloads.:
1 - ASP.NET and Web development
2 - Azure Development (necessário para integrar o docker-compose ao VS)
3 - .NET Core cross-platform development

![Workloads](https://dev-to-uploads.s3.amazonaws.com/i/kwoaf3rfdu08ip6elvth.png)

Opcionalmente, selecione os seguintes workloads.:
1 - Node.js development
2 - .NET desktop development (necessário para criar arquivos de resources no VS)

###2.4 - Demais Programas

Não há muito o que falar sobre os demais programas, apenas faça a instalação padrão.

###2.5 Nota sobre à criação de Soluções e Projetos.

Você poderá criar as solução e os projetos pelo Visual Studio, mas recomendo que o faça por linha de comando, pois os `templates` são mais atualizados.