🚀 API RESTful completa para gestão de bibliotecas digitais
🔐 Segura • ⚡ Performática • 🧠 Escalável • 🐳 Dockerizada
A Library API é uma API RESTful robusta criada para gerenciar uma biblioteca digital completa — desde autenticação de usuários até empréstimos, reservas, notificações e jobs em background.
Tudo isso seguindo boas práticas, arquitetura limpa e foco em escalabilidade.
Código que respira organização. Sistema que flui como poesia 📖✨
✔️ Autenticação JWT com roles (member, librarian, admin)
✔️ CRUD completo de livros, autores e categorias
✔️ Sistema de empréstimos com controle de datas
✔️ Reservas inteligentes
✔️ Avaliações e reviews
✔️ Multas automáticas por atraso
✔️ Notificações por e-mail
✔️ Background jobs com Sidekiq
✔️ Cache com Redis
✔️ Documentação Swagger/OpenAPI
✔️ Testes completos com RSpec
✔️ Docker & Docker Compose
| Stack | Ferramenta |
|---|---|
| 🧠 Backend | Ruby on Rails 7 (API Mode) |
| 🗄 Banco de Dados | PostgreSQL |
| ⚡ Cache | Redis |
| 🔄 Jobs | Sidekiq |
| 🔐 Auth | JWT |
| 🛂 Autorização | Pundit |
| 🧪 Testes | RSpec |
| 📑 Docs | Swagger |
| 🐳 Infra | Docker |
git clone <repository-url>
cd library_api
docker-compose up -d
docker-compose exec app rails db:create db:migrate db:seed
bundle install
yarn install
rails db:create db:migrate db:seed
redis-server &
bundle exec sidekiq &
rails server
Endpoints
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /api/v1/auth/register | Registrar usuário |
| POST | /api/v1/auth/login | Login |
| POST | /api/v1/auth/logout | Logout |
| GET | /api/v1/auth/me | Perfil do usuário |
| Método | Endpoint |
|---|---|
| GET | /api/v1/books |
| GET | /api/v1/books/:id |
| POST | /api/v1/books |
| POST | /api/v1/books/:id/borrow |
| GET | /api/v1/books/recommendations |
| Método | Endpoint |
|---|---|
| GET | /api/v1/loans |
| POST | /api/v1/loans/:id/return |
DATABASE_URL=postgresql://user:password@localhost:5432/library_api
REDIS_URL=redis://localhost:6379/1
SECRET_KEY_BASE=your_secret_key_base
RAILS_ENV=development
bundle exec rspec
bundle exec rspec spec/models/book_spec.rb
COVERAGE=true bundle exec rspec
*Porque código bonito também precisa ser confiável 💚
Swagger interativo, claro e direto ao ponto.
-
Fork o projeto 🍴
-
Crie sua branch:
git checkout -b feature/AmazingFeature
-
Commit suas mudanças
-
Push para a branch
-
Abra um Pull Request 💜
💡 Código é poesia quando é bem escrito. Feito com ☕, 🧠 e um pouco de ousadia.