/AFKStrategist1

Primary LanguageJavaMIT LicenseMIT

🚀 Iniciando um Projeto Spring Boot do Zero


📋 Visão Geral

Este guia vai te ajudar a iniciar um projeto Spring Boot do zero, configurar as ferramentas necessárias e preparar o ambiente de desenvolvimento para começar a codificar. Vamos passar por cada etapa, desde a criação do projeto até a instalação das ferramentas essenciais, como Java, PostgreSQL, Docker, Angular, entre outras.

🔧 Tecnologias Utilizadas

1. Java

Java é a linguagem de programação principal usada no desenvolvimento do backend do projeto.


2. Spring Framework

Spring é um framework que facilita o desenvolvimento de aplicativos Java, especialmente os baseados em web.


3. PostgreSQL

PostgreSQL é o banco de dados utilizado para armazenar as informações da aplicação de forma segura e eficiente.


4. Angular

Angular é o framework utilizado para o desenvolvimento da interface gráfica (frontend) do projeto.


5. Node.js

Node.js é usado para executar o Angular e gerenciar pacotes no projeto frontend.


6. Docker

Docker é utilizado para criar containers que isolam o ambiente de desenvolvimento, facilitando a portabilidade e escalabilidade do sistema.


7. IntelliJ IDEA

IntelliJ IDEA é a IDE principal usada para desenvolvimento do backend Java com o framework Spring.


8. Visual Studio Code

VS Code é a IDE usada para o desenvolvimento frontend com Angular e edição de arquivos de configuração do projeto.


9. WSL (Windows Subsystem for Linux)

O WSL é utilizado para rodar o ambiente Linux diretamente no Windows, proporcionando melhor compatibilidade com Docker e outras ferramentas Linux.


10. AWS S3

O AWS S3 é o serviço de armazenamento de objetos da Amazon, utilizado para armazenar imagens e outros arquivos da aplicação.


11. GitHub

GitHub é a plataforma usada para versionamento de código, facilitando o trabalho colaborativo e o gerenciamento do código-fonte.


12. GitHub Actions

GitHub Actions é usado para configurar o CI/CD (integração contínua e entrega contínua), automatizando o processo de build, testes e deploy.


13. Google Cloud

Google Cloud é a plataforma de nuvem onde o aplicativo será implantado, proporcionando escalabilidade e recursos de infraestrutura.



🔧 Preparando o Projeto Spring Boot

1. Acesse o Spring Initializr
Configuração do Projeto Maven

Você será direcionado para a tela abaixo, onde deve configurar o projeto. Escolha a linguagem Java, o tipo de projeto Maven, e as dependências principais como Spring Web, Spring Data JPA, Lombok, e outras que precisar.

Dependências principais a serem selecionadas:

Spring Web: Para criar APIs RESTful e aplicações web com o Spring MVC.

Spring Data JPA: Para facilitar a integração com o banco de dados relacional usando JPA/Hibernate.

Spring Security: Para adicionar segurança e controle de autenticação e autorização.

Spring Thymeleaf: Para renderizar views HTML no lado do servidor com o motor de templates Thymeleaf.

Spring Actuator: Para monitorar e gerenciar sua aplicação em produção.

PostgreSQL Driver: Para conectar sua aplicação ao banco de dados PostgreSQL.

Lombok: Para reduzir o código boilerplate (como getters, setters, e constructors).

Spring Boot DevTools: Para melhorar a experiência de desenvolvimento com auto-reload de código.

Spring Boot Docker Compose: Para gerenciar containers Docker diretamente do Spring Boot.

Spring Security Test: Para realizar testes de integração focados em segurança.

Spring Boot Starter Test: Para suporte de testes unitários e de integração.

Essas dependências garantem que você tenha todos os recursos necessários para desenvolver uma aplicação Java moderna, robusta e escalável, integrando segurança, banco de dados e templates de interface com a facilidade do Spring Boot.

Spring Initializr

2. Configuração Básica

Após selecionar as configurações, clique em Gerar. Isso fará o download de um arquivo .zip contendo seu projeto Spring Boot.

Dica: Por enquanto, deixe o arquivo baixado no seu diretório local. Vamos primeiro instalar todas as ferramentas necessárias.

🚀 Instalando as Ferramentas Essenciais

3. Java Development Kit (JDK) 17

Baixe e instale o JDK 17 do site oficial.

Configuração da variável de ambiente: Certifique-se de que a variável JAVA_HOME está configurada corretamente no sistema.

📚 Documentação da API Java 17 ao final

  1. IntelliJ IDEA ou VS Code

Você pode escolher entre usar o IntelliJ IDEA ou o Visual Studio Code (VS Code) como sua IDE.

🖥️ IntelliJ IDEA
Baixe a versão Ultimate se for estudante (grátis com a conta acadêmica).

📚 Documentação IntelliJ IDEA
🖥️ Visual Studio Code

Baixe o VS Code do site oficial.
📚 Documentação do VS Code ao final

5. PostgreSQL

Baixe e instale a última versão do PostgreSQL.
📚 Documentação Oficial PostgreSQL ao final

🚀Ferramentas de Administração para PostgreSQL:

pgAdmin

DataGrip

🚀6. Docker Desktop

🚀Baixe e instale o Docker Desktop, que já inclui o Docker Compose. Certifique-se de que o WSL está habilitado se estiver no Windows.

🚀Configurando o WSL

O WSL (Windows Subsystem for Linux) é necessário para melhorar a performance e permitir que você execute containers Linux diretamente no ambiente Windows. Aqui estão os passos para configurá-lo:

🚀Baixe e instale o Docker Desktop.

Durante a instalação, habilite o WSL2.

O Docker Desktop detectará automaticamente o WSL e configurará o ambiente.
Vantagens:

Melhor performance no desenvolvimento.

Integração com o sistema operacional Windows.

Interface gráfica amigável para gerenciamento de containers.

📚 Documentação Docker Desktop para WSL ao final
🚀7. Angular e Node.js

O Angular será instalado mais tarde, mas você pode preparar o ambiente agora:
Instale o Node.js do site oficial (versão LTS recomendada).
Verifique se o npm foi instalado corretamente:
bash Copiar código node -v npm -v Instale o Angular CLI globalmente:
bash Copiar código npm install -g @angular/cli


📚 Documentação Angular ao final
📦 Checklist de Configuração Inicial
🚀Instale o Java 17 e configure as variáveis de ambiente.
🚀 Instale sua IDE de preferência.
🚀 Instale o PostgreSQL.
🚀 Instale o Docker Desktop e habilite o WSL.
🚀Instale o Angular, Node.js e npm.
🚀Crie o repositório do projeto no GitHub e adicione um .gitignore e a licença MIT.
🚀 Extraia o arquivo .zip do Spring Initializr na pasta local do projeto.
🚀Abra o projeto na sua IDE.
🚀 Publique o projeto no GitHub.

🎉 Parabéns!
Seu ambiente de desenvolvimento está pronto para começar a trabalhar no backend com Spring Boot, PostgreSQL e Docker! Agora você pode começar a codificar com um ambiente bem configurado e pronto para escalar.
Aqui estão os links de documentação para as tecnologias e ferramentas mencionadas no README do seu projeto:

📚 Documentação das Dependências:

  1. Spring Web

    • Para criar APIs RESTful e aplicações web com Spring MVC.
  2. Spring Data JPA

    • Para facilitar a integração com bancos de dados relacionais usando JPA e Hibernate.
  3. Spring Security

    • Para adicionar segurança e controle de autenticação e autorização na sua aplicação.
  4. Thymeleaf

    • Para renderização de páginas HTML no lado do servidor com o motor de templates Thymeleaf.
  5. Spring Actuator

    • Para monitorar e gerenciar sua aplicação em produção.
  6. PostgreSQL JDBC Driver

    • Para conectar sua aplicação ao banco de dados PostgreSQL.
  7. Lombok

    • Para reduzir o código boilerplate, como getters, setters, e construtores automáticos.
  8. Spring Boot DevTools

    • Para acelerar o desenvolvimento com auto-reload e outras ferramentas úteis.
  9. Spring Boot Docker Compose

    • Para gerenciar containers Docker diretamente a partir da aplicação Spring Boot.
  10. Spring Boot Starter Test

    • Suporte para testes de unidade e integração no Spring Boot.
  11. Spring Security Test

    • Para testes específicos de segurança com Spring Security.

📚 Documentação das Ferramentas Utilizadas:

  1. Java 17

    • Documentação da API Java SE 17.
  2. Spring Framework

    • Página oficial do Spring Framework.
  3. PostgreSQL

    • Documentação completa do PostgreSQL.
  4. Angular

    • Documentação oficial do Angular.
  5. Node.js

    • Documentação oficial do Node.js.
  6. Docker

    • Documentação oficial do Docker.
  7. IntelliJ IDEA

    • Documentação da IDE IntelliJ IDEA.
  8. Visual Studio Code

    • Documentação oficial do Visual Studio Code.
  9. WSL (Windows Subsystem for Linux)

    • Guia de instalação e documentação oficial do WSL.
  10. AWS S3

    • Documentação oficial do Amazon S3.
  11. GitHub

    • Documentação oficial do GitHub.
  12. GitHub Actions

    • Documentação oficial do GitHub Actions.
  13. Google Cloud

    • Documentação oficial do Google Cloud.

Com esses links, você terá todas as documentações oficiais das ferramentas e dependências usadas no seu projeto. Isso ajudará tanto você quanto qualquer colaborador a entender melhor cada tecnologia e como configurá-las adequadamente.

🖥️ O PROJETO

ProjectAFKStrategist

Projeto para praticar programação em java e integrações de serviços e tecnologias, usando a criação de um app para a Comunidade de Jogadores do jogo AFK Arena.

AFKStrategist

AFKStrategist é uma aplicação que permite aos membros da guilda gerenciar e analisar heróis, configurar suas equipes e realizar outras operações offline após o primeiro download. Este projeto é desenvolvido usando Spring Boot para o backend, MariaDB na Cloud Cluster sendo nosso banco de dados e Amazon S3 para armazenamento de imagens.

📋 Descrição

AFKStrategist foi projetado para ser uma ferramenta robusta que facilita a gestão de heróis e configurações de usuários. Ele oferece a capacidade de operar offline após um download inicial, garantindo que as informações estejam sempre disponíveis para os usuários, mesmo sem conexão com a internet.

🛠️ Funcionalidades

  • Gerenciamento de Heróis: Visualização e configuração dos heróis disponíveis.
  • Sincronização Offline: Primeiro download completo de dados, permitindo o uso offline.
  • Armazenamento Seguro: Uso de Amazon S3 para armazenar e recuperar imagens de heróis.
  • Conexão com Banco de Dados: Integração com MariaDB para persistência de dados.
  • Configuração de Equipes: Interface para configurar equipes de heróis.
  • Integração com Google Cloud: Deploy do backend e frontend utilizando Google Cloud.

📝 Requisitos

Antes de começar, certifique-se de que você atenda aos seguintes requisitos:

  • Java 17 (ou superior)
  • Maven (para gerenciar dependências do projeto)
  • Node.js & npm (para o frontend Angular)
  • Docker & Docker Compose (para containerizar a aplicação)
  • Conta no Amazon S3 (para armazenamento de imagens)
  • Conta no Google Cloud (para deploy)

🚀 Instalação

  1. Clone o Repositório:

    git clone https://github.com/seu-usuario/afkstrategist.git
    cd afkstrategist
    
    Backend - Spring Boot:
    

Navegue até o diretório do backend:

cd backend
Compile o projeto:
mvn clean install
Execute a aplicação:
mvn spring-boot:run
Frontend - Angular:
Navegue até o diretório do frontend:

cd frontend

Instale as dependências:
npm install

Inicie o servidor de desenvolvimento:
ng serve
Banco de Dados - PostegreSql:

Use Docker para iniciar o banco de dados:

docker-compose up -d

Verifique a conexão com o banco de dados.
🔧 Configuração

  1. Variáveis de Ambiente

Configure as seguintes variáveis de ambiente no seu sistema:

DB_APP_USER: Usuário do banco de dados.
DB_APP_PASSWORD: Senha do usuário do banco de dados.
AWS_ACCESS_KEY_ID: Chave de acesso para o S3.
AWS_SECRET_ACCESS_KEY: Chave secreta para o S3.
SPRING_DATASOURCE_URL: URL do banco de dados.
SPRING_DATASOURCE_USERNAME: Nome de usuário do banco de dados.
SPRING_DATASOURCE_PASSWORD: Senha do banco de dados.

2. Arquivo application.properties

Certifique-se de que o arquivo application.properties no backend contenha as configurações corretas para o banco de dados e S3.
properties
spring.datasource.url=${SPRING_DATASOURCE_URL} spring.datasource.username=${SPRING_DATASOURCE_USERNAME} spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} cloud.aws.credentials.access-key=${AWS_ACCESS_KEY_ID} cloud.aws.credentials.secret-key=${AWS_SECRET_ACCESS_KEY} cloud.aws.region.static=sa-east-1 cloud.aws.s3.bucket=xxx-xxx-xxxx-images 💻 Uso Acesse o Frontend:

Abra seu navegador e vá para http://localhost:4200. Acesse o Backend:

O backend estará disponível em http://localhost:8080/api. Testando Conexões:

Use ferramentas como Postman para testar os endpoints do backend. Verifique se as operações de upload/download no S3 estão funcionando corretamente.
🗂️ Estrutura do Projeto plaintext
Copiar código
AFKStrategist/

├── backend/
│ ├── src/
│ ├── pom.xml
│ └── Dockerfile

├── frontend/
│ ├── src/
│ ├── angular.json
│ └── Dockerfile

├── docker-compose.yml
└── README.md
🤝 Contribuição
Se você deseja contribuir com este projeto, siga as etapas abaixo:

Fork o repositório. Crie um branch para suas alterações (git checkout -b feature/nova-funcionalidade). Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade'). Push para o branch (git push origin feature/nova-funcionalidade). Abra um Pull Request.

📄 Licença

Este projeto está licenciado sob os termos da licença MIT. Veja o arquivo LICENSE para mais detalhes.