📋 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.
Java é a linguagem de programação principal usada no desenvolvimento do backend do projeto.
Spring é um framework que facilita o desenvolvimento de aplicativos Java, especialmente os baseados em web.
PostgreSQL é o banco de dados utilizado para armazenar as informações da aplicação de forma segura e eficiente.
Angular é o framework utilizado para o desenvolvimento da interface gráfica (frontend) do projeto.
Node.js é usado para executar o Angular e gerenciar pacotes no projeto frontend.
Docker é utilizado para criar containers que isolam o ambiente de desenvolvimento, facilitando a portabilidade e escalabilidade do sistema.
IntelliJ IDEA é a IDE principal usada para desenvolvimento do backend Java com o framework Spring.
VS Code é a IDE usada para o desenvolvimento frontend com Angular e edição de arquivos de configuração do projeto.
O WSL é utilizado para rodar o ambiente Linux diretamente no Windows, proporcionando melhor compatibilidade com Docker e outras ferramentas Linux.
O AWS S3 é o serviço de armazenamento de objetos da Amazon, utilizado para armazenar imagens e outros arquivos da aplicação.
GitHub é a plataforma usada para versionamento de código, facilitando o trabalho colaborativo e o gerenciamento do código-fonte.
GitHub Actions é usado para configurar o CI/CD (integração contínua e entrega contínua), automatizando o processo de build, testes e deploy.
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.
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
- 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:
-
- Para criar APIs RESTful e aplicações web com Spring MVC.
-
- Para facilitar a integração com bancos de dados relacionais usando JPA e Hibernate.
-
- Para adicionar segurança e controle de autenticação e autorização na sua aplicação.
-
- Para renderização de páginas HTML no lado do servidor com o motor de templates Thymeleaf.
-
- Para monitorar e gerenciar sua aplicação em produção.
-
- Para conectar sua aplicação ao banco de dados PostgreSQL.
-
- Para reduzir o código boilerplate, como getters, setters, e construtores automáticos.
-
- Para acelerar o desenvolvimento com auto-reload e outras ferramentas úteis.
-
- Para gerenciar containers Docker diretamente a partir da aplicação Spring Boot.
-
- Suporte para testes de unidade e integração no Spring Boot.
-
- Para testes específicos de segurança com Spring Security.
-
- Documentação da API Java SE 17.
-
- Página oficial do Spring Framework.
-
- Documentação completa do PostgreSQL.
-
- Documentação oficial do Angular.
-
- Documentação oficial do Node.js.
-
- Documentação oficial do Docker.
-
- Documentação da IDE IntelliJ IDEA.
-
- Documentação oficial do Visual Studio Code.
-
WSL (Windows Subsystem for Linux)
- Guia de instalação e documentação oficial do WSL.
-
- Documentação oficial do Amazon S3.
-
- Documentação oficial do GitHub.
-
- Documentação oficial do GitHub Actions.
-
- 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.
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 é 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.
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.
- 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.
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)
-
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
- 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.