Jogo de Adivinhação de Palavras com base na sua definição, desenvolvido em Java com o framework Spring Boot e uma interface frontend em React.
- ☕ Java: Linguagem de programação utilizada.
- 🌱 Spring Boot: Framework para criação de aplicações Java.
- 🔧 Maven: Gerencia dependências e automatiza o processo de build do projeto.
- 🐘 PostgreSQL: Banco de dados utilizado.
- 🍃 Hibernate: Comunicação entre aplicações Java e bancos de dados.
- 🔄 Liquibase: Ferramenta para versionamento de banco de dados.
- 📜 Swagger: Documentação da API.
- 📜 JavaDoc: Documentação do código Java.
- 🧪 JUnit: Testes unitários em Java.
- ⚛️ React: Biblioteca JavaScript para construção de interfaces de usuário.
- 📝 TypeScript: Superset do JavaScript que adiciona tipagem estática.
- 💅 Chakra UI: Biblioteca de componentes para React.
- 📦 npm: Gerenciador de pacotes para JavaScript, utilizado para instalar dependências do projeto.
- 📦 Webpack: Empacotador de módulos que compila e otimiza os arquivos do projeto.
- 🔄 Babel: Converte código JavaScript moderno em versões compatíveis com navegadores mais antigos.
- 📜 JSDoc: Documentação do código React.
- ☕ Java 12 ou superior
- 🟢 Node.js e 📦 npm
- 🐳 Docker (para executar o banco de dados PostgreSQL)
-
Navegue até o diretório
backend
:cd backend
-
Inicie o banco de dados PostgreSQL usando Docker:
docker-compose up -d
-
Execute a aplicação Spring Boot:
./mvnw spring-boot:run
Obs.: Para execução de testes
mvn test
-
Navegue até o diretório
frontend
:cd frontend
-
Instale as dependências:
npm install
-
Execute a aplicação React:
npm start
- Backend rodando em:
http://localhost:8080
- Frontend rodando em:
http://localhost:3000
- Banco de dados PostgreSQL disponível na porta
5432
A API do backend possui os seguintes endpoints principais:
POST /words
: Salva uma nova palavra com sua definição, sinônimos e nível de dificuldade.GET /words
: Retorna todas as palavras cadastradas no sistema.GET /words/{id}
: Retorna os detalhes de uma palavra pelo seu ID.PUT /words/{id}
: Atualiza os detalhes de uma palavra pelo seu ID.DELETE /words/{id}
: Deleta uma palavra pelo seu ID.
GET /game/start
: Inicia um novo jogo.GET /game/check/{word}
: Verifica se a palavra adivinhada está correta.
A documentação completa da API pode ser acessada em /swagger-ui.html
.
- O jogador inicia o jogo clicando no botão "Sortear nova palavra".
- O backend retorna a descrição e o sinônimo da palavra.
- O jogador tenta adivinhar a palavra digitando no campo de entrada e clicando no botão "Verificar".
- O backend verifica a palavra e retorna uma mensagem indicando se a palavra está correta ou não.
- O jogador pode usar uma dica, que conta como uma tentativa.
- O jogo termina quando o jogador acerta a palavra ou todas tentativas são utilizadas
- O jogador acessa a página das palavras clicando na aba "Palavras cadastradas".
- O backend retorna as palavras cadastradas no banco.
- É possível ver a lista de palavras cadastradas, incluindo palavra, descrição, a dica e o nível.
- Na aba "Palavras cadastradas", clique no botão "➕".
- Preencha o formulário com os dados da nova palavra.
- Clique em "Salvar", e os dados serão enviados ao backend, que salva a nova palavra no banco de dados.
- Na aba "Palavras cadastradas", localize a palavra que deseja excluir.
- Clique no botão "Excluir" ao lado da palavra.
- O backend remove a palavra do banco de dados.
jogo-adivinhacao-de-palavras/
├── backend/
│ ├── src/ # Código fonte do backend
│ │ ├── main/ # Código principal da aplicação
│ │ │ ├── java/ # Classes Java
│ │ │ │ ├── controllers/ # Controladores da API
│ │ │ │ ├── dtos/ # Objetos de Transferência de Dados
│ │ │ │ ├── models/ # Modelos de dados
│ │ │ │ ├── repositories/ # Repositórios de acesso a dados
│ │ │ │ └── service/ # Lógica de negócio
│ │ │ └── resources/ # Arquivos de configuração e recursos
│ │ └── test/ # Testes unitários
│ ├── docker-compose.yml # Arquivo de configuração do Docker Compose
│ ├── mvnw # Wrapper do Maven para Linux/Mac
│ ├── mvnw.cmd # Wrapper do Maven para Windows
│ └── pom.xml # Arquivo de configuração do Maven
|
├── frontend/
│ ├── src/ # Código fonte do frontend
│ │ ├── components/ # Componentes reutilizáveis
│ │ ├── hooks/ # Hooks personalizados
│ │ ├── interface/ # Interfaces TypeScript
│ │ ├── pages/ # Páginas do aplicativo
│ │ └── style/ # Estilos do aplicativo
│ ├── index.html # Ponto de entrada para a aplicação React.
│ ├── App.tsx # Componente principal, onde a lógica do aplicativo é inicializada.
│ ├── package.json # Arquivo de configuração do npm
│ ├── package-lock.json # Dependencias do npm
│ ├── tsconfig.json # Arquivo de configuração do typescript
│ ├── .babellrc # Arquivo de configuração utilizado pelo Babel
│ └── webpack.config.js # Configuração do Webpack
├── .gitignore # Arquivos e diretórios devem ser ignorados pelo Git
└── README.md # Documentação principal do projeto