Funcionalidades • Tecnologias Utilizadas • Configuração e Execução • Contribua
Leveling Life é uma aplicação desenvolvida para gamificar o desenvolvimento pessoal, proporcionando aos usuários um sistema de quests, níveis e interação social com amigos. Inspirada em RPGs e conceitos de gamificação, a aplicação visa tornar o dia a dia mais motivador e divertido.
- Autenticação e Registro 🔒: Segurança com autenticação JWT para proteger o acesso de usuários.
- Sistema de Quests 🎯: Os usuários podem criar e gerenciar quests, acompanhando seu progresso.
- Níveis e XP 🆙: Acumule XP e suba de nível com base nas quests concluídas.
- Sistema de Amizade 👥: Envie e aceite pedidos de amizade para acompanhar o progresso dos amigos.
- Perfis Personalizados 🖼️: Cada usuário tem um perfil com nome, foto e título.
- Documentação com Swagger 📖: A API é totalmente documentada com Swagger.
- Testes Unitários 🧪: JUnit e Mockito garantem a estabilidade das funcionalidades.
- Spring Boot 🌱: Estrutura robusta para o desenvolvimento da API RESTful.
- JWT com Auth0 🔑: Autenticação segura para gerenciamento de sessões de usuários.
- Swagger 📜: Documentação automática para as endpoints.
- Docker 🐳: Containers para isolar o ambiente e facilitar o desenvolvimento e a implantação.
- Insomnia 🌐: Ferramenta de teste para endpoints durante o desenvolvimento.
- PostgreSQL 🗄️: Banco de dados relacional utilizado para persistir os dados da aplicação.
- JUnit e Mockito 🧪: Ferramentas para testes unitários e de integração.
-
Pré-requisitos:
- Java 11+
- Docker
- PostgreSQL
- Maven
-
Clonando o repositório:
git clone https://github.com/jpeccia/api-levelinglife.git cd levelinglife
Este projeto utiliza variáveis de ambiente para gerenciar dados sensíveis, como credenciais de banco de dados, tokens de autenticação e chaves de API. Usar variáveis de ambiente ajuda a manter o código mais seguro e facilita a configuração em diferentes ambientes (desenvolvimento, teste, produção).
- Na raiz do projeto, crie um arquivo chamado
.env. - Adicione as variáveis de ambiente necessárias para o projeto, conforme o exemplo abaixo:
# Configurações de Banco de Dados
DB_USERNAME=seuUsuario
DB_PASSWORD=suaSenha
DB_URL=jdbc:postgresql://localhost:5432/levelinglife
# JWT Token para autenticação
JWT_SECRET=suaChaveSecreta
# Outras configurações importantes
APP_PORT=8080
Nota: Este arquivo não deve ser commitado no repositório, pois contém informações sensíveis. Garanta que o
.envestá listado no seu arquivo.gitignore.
O Spring Boot carregará automaticamente as variáveis do sistema ou do ambiente. Se você estiver usando o arquivo .env com ferramentas como Docker ou outros sistemas de integração, ele será lido automaticamente se configurado no docker-compose ou no ambiente do servidor.
No arquivo application.properties, você pode acessar as variáveis usando a sintaxe ${NOME_VARIAVEL}:
# Configuração do Banco de Dados
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
# Configuração do JWT
jwt.secret=${JWT_SECRET}
# Porta da aplicação
server.port=${APP_PORT}Se você estiver usando Docker, defina as variáveis de ambiente no docker-compose.yml:
services:
app:
image: levelinglife-app
environment:
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- APP_PORT=${APP_PORT}- Rodando a aplicação com Docker:
- Execute o comando abaixo para iniciar a aplicação em um container Docker:
docker-compose up --build
- Execute o comando abaixo para iniciar a aplicação em um container Docker:
A aplicação conta com testes para validação das principais funcionalidades:
- JUnit ✅: Testes de unidade para os serviços.
- Mockito 🔄: Mocking de dependências para testar funcionalidades em isolamento.
- Cobertura 📊: Relatórios de cobertura para garantir a qualidade do código.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests.
Este projeto está licenciado sob a MIT License.