https://github.com/lasbrdev/book-social-api-springboot
Book Social is an API for managing book lovers and members.
https://github.com/lasbrdev/book-social-api-springboot
backend-api docker java jwt-token linux postgresql rockylinuxserver thymeleaf
Last synced: about 2 months ago
JSON representation
Book Social is an API for managing book lovers and members.
- Host: GitHub
- URL: https://github.com/lasbrdev/book-social-api-springboot
- Owner: lasbrDev
- License: mit
- Created: 2024-06-12T19:09:34.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-28T20:19:58.000Z (almost 2 years ago)
- Last Synced: 2025-01-13T17:19:59.085Z (over 1 year ago)
- Topics: backend-api, docker, java, jwt-token, linux, postgresql, rockylinuxserver, thymeleaf
- Language: Java
- Homepage:
- Size: 187 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Book Social API
### Bem-vindo à documentação da API Book Social. Esta API permite gerenciar feedbacks, livros e autenticação de usuários. A documentação segue o padrão OpenAPI e está disponível no Swagger UI.
## Acesso à Documentação
### A documentação completa da API está disponível através do Swagger UI. Para acessá-la, utilize o seguinte endereço:
```bash
http://localhost:8088/api/v1/swagger-ui.html
```
## Estrutura da API
### Endpoints
#### A API está dividida nos seguintes grupos de endpoints:
1. `Feedback`
2. `Book`
3. `Authentication`
## Detalhes dos Endpoints
#### Feedback
* `POST` `/feedback:` Cria um novo feedback.
* `GET` `/feedback/book/{book-id}:` Obtém todos os feedbacks de um livro específico.
#### Book
* `POST` `/books:` Cria um novo livro.
* `GET` `/books:` Obtém todos os livros.
* `GET` `/books/owner:` Obtém todos os livros do proprietário.
* `GET` `/books/borrowed:` Obtém todos os livros emprestados.
* `GET` `/books/returned:` Obtém todos os livros devolvidos.
* `PATCH` `/books/shareable/{book-id}:` Atualiza o status de compartilhamento de um livro.
* `PATCH` `/books/archived/{book-id}:` Atualiza o status de arquivamento de um livro.
* `POST` `/books/borrow/{book-id}:` Solicita o empréstimo de um livro.
* `PATCH` `/books/borrow/return/{book-id}:` Solicita a devolução de um livro emprestado.
* `PATCH` `/books/borrow/return/approve/{book-id}:` Aprova a devolução de um livro emprestado.
* `POST` `/books/cover/{book-id}:` Faz upload da capa de um livro.
#### Authentication
* `POST` `/auth/register:` Registra um novo usuário.
* `POST` `/auth/authenticate:` Autentica um usuário.
* `GET` `/auth/activate-account:` Ativa uma conta de usuário.
## Configuração de Segurança
A API utiliza JWT (JSON Web Tokens) para autenticação. A configuração de segurança é definida no OpenApiConfig da seguinte maneira:
```java
@SecurityScheme(
name = "bearerAuth",
description = "JWT auth description",
scheme = "bearer",
type = SecuritySchemeType.HTTP,
bearerFormat = "JWT",
in = SecuritySchemeIn.HEADER
)
```
Ao realizar requisições para endpoints protegidos, inclua o token JWT no cabeçalho da seguinte maneira:
```bash
Authorization: Bearer
```
## Tecnologias Utilizadas
#### A API foi desenvolvida utilizando as seguintes tecnologias:
* `Java 17:` Linguagem java versão 17 LTS;
* `Spring Boot:` Framework principal para desenvolvimento da API;
* `Spring Security:` Utilizado para autenticação e autorização;
* `Spring Data JPA:` Utilizado para persistência de dados;
* `PostgreSQL:` Banco de dados utilizado para persistência de dados;
* `JWT (io.jsonwebtoken:jjwt-root:0.12.5):` Utilizado para geração e validação de tokens JWT;
* `MailDev:` Utilizado para gerenciamento de emails de token;
* `Swagger:` Utilizado para documentação da API;
* `Docker:` Utilizando Docker para gerenciar o banco de dados PostgreSQL e o MailDev, a partir de um servidor dedicado Rocky Linux;
* `Insomnia:` Utilizado para testar as requisições da API;
## Licença
Este projeto está licenciado sob a [MIT LICENSE](LICENSE).