O NerdSpace é uma API de catálogo e gerenciamento de mídias da cultura geek, abrangendo Animes, Filmes, Livros, Jogos e Mangás. O projeto foi desenvolvido com Java 21 e Spring Boot 3, com foco em uma arquitetura limpa, integridade de dados e filtragem dinâmica.
A ideia principal foi criar um sistema unificado de mídias, mas mantendo flexibilidade para cada tipo ter suas próprias características.
-
Java 21 (LTS) Uso de Records para DTOs imutáveis, deixando o código mais enxuto e seguro.
-
Spring Boot 3 Base da aplicação REST, responsável pela configuração e estrutura geral do sistema.
-
Spring Data JPA Gerenciamento das entidades e persistência de dados com suporte a herança polimórfica.
-
MySQL Banco de dados relacional utilizado para armazenamento das informações.
-
JUnit 5 & Mockito Testes automatizados para validar controllers, repositórios e lógica de conversão.
-
JavaScript (Vanilla) Comunicação assíncrona com a API utilizando Fetch API.
-
CSS3 Estilização personalizada com foco em responsividade (Mobile First).
-
HTML5 Estrutura semântica com carregamento dinâmico de conteúdo.
Sistema unificado que gerencia diferentes tipos de mídia através de herança JPA (estratégia JOINED).
Isso permite que cada tipo (Jogo, Livro, Anime, etc.) tenha seus próprios atributos, sem duplicar estrutura.
Busca avançada utilizando:
- Título (case insensitive)
- Ano de lançamento
- Nota mínima
As consultas são feitas com JPQL customizado, garantindo flexibilidade e desempenho.
Interface adaptada para diferentes tamanhos de tela, permitindo uso confortável tanto em desktop quanto em dispositivos móveis.
Cobertura de testes automatizados que ajudam a evitar erros comuns, como:
- Falhas de serialização JSON
- Recursão infinita em relacionamentos
- Quebras de endpoint
src/main/java/br/com/lucena/nerdspace/
├── controller/ # Endpoints REST (Game, Book, Anime, Media, etc.)
├── model/ # Entidades JPA e classes de herança
├── repository/ # Interfaces de acesso ao banco de dados
└── dto/ # Records para transferência de dados imutáveis
src/main/resources/static/
├── css/ # Folhas de estilo com media queries
├── js/ # Lógica de interação e consumo da API
└── *.html # Páginas dinâmicas da interface
git clone https://github.com/grazixzdev/nerdspace.git- Execute o script:
database_nerdspace.sql- Ajuste as credenciais no arquivo:
src/main/resources/application.properties./mvnw spring-boot:runAbra diretamente:
index.html
ou acesse:
http://localhost:8080/index.html
Este projeto foi desenvolvido como parte do processo de consolidação de conhecimentos em Java, Spring Boot e desenvolvimento Full-Stack, com foco em boas práticas de arquitetura, organização de código e integração entre backend e frontend.
Desenvolvido por Graziela Lucena




