Olá, se você gosta de cachorrinhos fofos assim como eu, então irá amar essa aplicação ❤️
O cute dogs email é um encaminhador de imagem de cachorrinhos para o seu email, sendo entregue às 6:00 horário de Brasília.
Todos os créditos das imagens vão para Dog API
- ⚒️ Ferramentas utilizadas
- ⚙️ Configurando variáveis de ambiente
- 🌐 Configurando o arquivo nginx.conf (apenas em caso de - deploy)
- 🖥️ Como rodar a aplicação
- 💻 Rodando localmente
- 🐋 Rodando no docker-compose
- 🥭 Criar uma database e collection no MongoDB
- ⛵ Deploy por meio do Kubernetes
Frontend:
- React com Typescript
- Uma pitada de css
Backend:
- Go
- Gofiber
- Gomail
- MongoDB
Infra:
- Docker
- Kubernetes
- Google Cloud Provider (Não abordei seu uso aqui, pois quis deixar livre para o uso em qualquer outro provider)
- Nginx
Existem dois arquivos dotenv exemplo na aplicação: um servirá para a aplicação backend e o segundo para a frontend.
OBSERVAÇÃO: Não esqueça de substituir o nome .env.example para .env
O primeiro localizado no diretório raiz .env.example recebe os seguintes valores
FROM_EMAIL= Seu email que será utilizado como remetente
FROM_PASSWORD= senha ou token referente ao email acima
OBSERVAÇÃO: As variáveis abaixo podem ser preenchidas de acordo com o mongo instalado em sua máquina ou caso você opte, pela cloud do MongoDB. É possível criá-lo de forma gratuita. Para saber mais acesse aqui.
MONGO_CREDENTIALS=mongodb://127.0.0.1:27017
MONGO_DB=nome da database do mongo
MONGO_COLLECTION=nome da collection
O segundo localizado no diretório /frontend/cute-dogs/.env.example recebe o seguinte valor:
REACT_APP_YOUR_DOMAIN=http://localhost:3001
OBSERVAÇÃO: o valor inserido aponta para o servidor backend localmente, mas caso seja realizado deploy o valor deverá ser o domínio ou seu external-ip, configurado no arquivo arquivo nginx.conf.
Altere o nome do arquivo nginx.conf.example para nginx.conf localizado em ./frontend/cute-dogs/nginx.conf.example
Altere os valores:
$your-domain=seu-dominio.com
O projeto pode ser executado:
Será necessário as seguintes ferramentas instaladas:
- Configure as variaveis de ambiente
- No mongodb crie uma database e collection com o mesmo valor informado nas variáveis de ambiente.
- Na raiz do projeto rode o comando
go run main.go
para rodar o servidor. - Vá para dentro da pasta ./frontend/cute-dogs e execute o comando
npm start
para iniciar o frontend. - Acesse a aplicação em http://localhost:3000
Acesse o arquivo ./docker-compose-example.yml e altere seu nome para docker-compose.yml
- Configure as variaveis de ambiente
- Rode o comando
docker-compose up -d
para executar os containers em background.
3.1. Para criar o banco no mongo e a collection acesse o container pelo seguinte comando docker exec -it mongodb-cute-dogs bash
3.2. Digite mongosh
para acessar o terminal do mongo.
3.3. Escolha um nome para o seu database, para fins de exemplo escolherei o nome cute-dogs-db. Rodando o seguinte comando: use cute-dogs-db
. O comando use
permite utilizar um database ou criar um novo quando não existe.
3.4. Ao ter acessado o database basta criar a collecition com o comando: db.createCollection("nome-da-sua-collection")
É esperado o resultado:
{ ok: 1 }
OBSERVAÇÃO: O nome escolhida para a database e a collection deverão ser informadas no docker-compose.
- Digite
quit
e logo em seguidaexit
para sair do mongosh e do terminal do container respectivamente. - Acesse a aplicação em http://localhost:3000
Os arquivos encontram-se no diretorio raiz ./k8s-example e voce pode renomeá-lo removendo o sufixo -example caso queira. Escolha o servidor cloud de sua preferência e os adicione por meio do comando kubectl apply -f ./k8s-example
.
OBSERVAÇÃO: No arquivo secret.yaml converta os valores para base64 ao inserir nas variáveis de ambiente sensíveis. Também não esqueça de informar as variáveis de ambiente do arquivo deployment-backend.yaml
Espero que tenha gostado ❤️