Akashic é uma aplicação web completa para catalogação, revisão e gerenciamento de livros. O projeto consiste em uma API robusta em Java com Spring Boot e um frontend interativo em HTML/CSS/JavaScript puro.
O sistema permite que usuários naveguem por uma biblioteca, favoritem livros, deixem avaliações (com sistema de like/dislike) e gerenciem seus perfis. Administradores possuem painéis exclusivos para o cadastro e manutenção do acervo.
- Java 22
- Spring Boot 3.3.2
- Spring Security & JWT (Autenticação e Autorização)
- Spring Data JPA (Persistência de dados)
- MySQL (Banco de dados principal)
- H2 Database (Banco de dados para testes)
- Lombok (Redução de boilerplate code)
- MapStruct (Mapeamento de objetos/DTOs)
- SpringDoc OpenAPI (Documentação Swagger)
- Actuator & Prometheus (Monitoramento e Métricas)
- Docker & Docker Compose (Containerização do ambiente)
- HTML5 & CSS3
- JavaScript (Vanilla ES6+)
- Font Awesome (Ícones)
- Cadastro e Login: Autenticação segura via Token JWT.
- Catálogo: Visualização de livros com paginação, busca por título e filtro por tags.
- Perfil: Edição de dados pessoais e upload de foto de perfil.
- Favoritos: Adicionar ou remover livros da lista de favoritos.
- Avaliações: Dar notas (estrelas) e comentar em livros.
- Interação: Dar "Like" ou "Dislike" em avaliações de outros usuários.
- Painel Administrativo: Acesso exclusivo via role
ROLE_ADMIN. - Gerenciamento de Livros: Criar, Editar e Deletar livros.
- Gerenciamento de Imagens: Upload automático de capas de livros com compressão.
- Gerenciamento de Tags: Adição dinâmica de novas tags para categorização.
Antes de começar, certifique-se de ter instalado em sua máquina:
- Java JDK 22
- Docker e Docker Compose
- Maven (Opcional, pois o projeto possui wrapper
mvnw)
O projeto utiliza Docker Compose para subir o MySQL, Prometheus e Grafana. Na pasta backend:
cd backend
docker-compose up -dIsso iniciará o MySQL na porta 3307 (mapeada para 3306 interna), Prometheus na 9090 e Grafana na 3000.
Ainda na pasta backend, execute a aplicação Spring Boot:
Via linha de comando (Windows):
./mvnw.cmd spring-boot:runVia linha de comando (Linux/Mac):
./mvnw spring-boot:runA API estará disponível em: http://localhost:8081
Nota: Certifique-se de que o
application.ymlestá apontando para o banco de dados correto. Se você estiver rodando o Java localmente e o banco no Docker, a URL JDBC deve conectar na porta exposta pelo Docker (ex: 3307 ou localhost se estiver na rede host).
O frontend é estático. Você pode abri-lo de duas formas:
- Utilizando uma extensão como Live Server no VS Code (Recomendado).
- Abrindo o arquivo
frontend/pages/index.htmldiretamente no navegador.
Certifique-se de que a API esteja rodando antes de tentar fazer login ou carregar livros.
Com o backend rodando, você pode acessar a documentação interativa dos endpoints através do Swagger UI:
🔗 URL: http://localhost:8081/swagger-ui.html
Lá você poderá testar rotas como:
POST /auth/loginGET /booksPOST /reviews- Entre outras.
O projeto já vem configurado com métricas.
- Prometheus:
http://localhost:9090 - Grafana:
http://localhost:3000(Login padrão: admin/admin)
Akashic/
├── backend/ # Código fonte da API Java
│ ├── src/
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── pom.xml
└── frontend/ # Código fonte da Interface Web
├── assets/ # CSS, Imagens e Scripts globais
└── pages/ # Páginas HTML e Scripts específicos
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests.
Este projeto está sob a licença MIT.
Desenvolvido por Pedro Henrique Alves de Azevedo