📚 API Livros Vai Na Web + 🐳 Docker
API completa para gestão de acervo literário com conteinerização Docker
🚀 Começando
Pré-requisitos
🔧 Sem Docker
- Python 3.11+
- SQLite3
- Git (opcional)
🐋 Com Docker (Recomendado)
- Docker Desktop
- Docker Compose (vem com Docker Desktop)
⚙️ Instalação
Método Docker (Recomendado)
git clone https://github.com/samuelrms/desafio-final-vnw-full-stack.git cd desafio-final-vnw-full-stack-back-end cp .env.example .env docker-compose up --build
Acesse a API: http://localhost:5000
🗂 Estrutura do Projeto
desafio-final-vnw-full-stack/ ├── backend/ │ ├── app/ │ │ ├── config/ # Configurações do sistema │ │ │ ├── __init__.py │ │ │ └── database.py # Conexão com banco de dados │ │ ├── db/ │ │ │ └── schema.sql # Script SQL de criação de tabelas │ │ └── routes/ # Endpoints da API │ │ ├── __init__.py │ │ ├── get_routes.py # Rotas de consulta │ │ └── post_routes.py# Rotas de criação │ ├── docker-compose.yml # Orquestração de containers │ ├── Dockerfile # Build da imagem Docker │ ├── main.py # Ponto de entrada da aplicação │ └── requirements.txt # Dependências Python └── frontend/ # [OPCIONAL] Interface web ├── public/ ├── src/ └── package.json
🔧 Configuração
Variáveis de Ambiente (.env)
FLASK_DEBUG=1 # Modo desenvolvimento (1=ativo) DATABASE_URL=sqlite:///database.db # URL de conexão SQLite
🧪 Testando a API
# Cadastrar novo livro curl -X POST -H "Content-Type: application/json" -d '{ "titulo": "Arquitetura Limpa", "categoria": "TI", "autor": "Robert C. Martin", "imagem_url": "http://exemplo.com/clean-arch.jpg" }' http://localhost:5000/doar # Listar livros cadastrados curl http://localhost:5000/livros # Buscar por categoria curl http://localhost:5000/livros?categoria=TI
🐳 Comandos Docker Essenciais
| Comando | Descrição | |---------|-----------| |
docker-compose up -d
docker-compose logs -f
docker-compose exec web bash
docker-compose down -v
🚨 Solução de Problemas
Problema: Porta 5000 em uso
✅ Solução:
sudo lsof -i :5000 # Listar processos kill <PID> # Substitua pelo ID do processo
Problema: Erro ao criar container
✅ Solução:
docker system prune -a --volumes docker-compose up --build
✨ Vantagens da Arquitetura
- Modularidade: Separação clara entre componentes
- Segurança: Isolamento de ambientes com Docker
- Escalabilidade: Fácil adição de novos endpoints
- Portabilidade: Configuração replicável em qualquer sistema
🤝 Fluxo de Desenvolvimento
- Clone o repositório
- Crie uma nova branch:
git checkout -b feature/nova-funcionalidade
- Desenvolva usando containers:
docker-compose exec web bash # Dentro do container: flask run --host=0.0.0.0 --reload
- Envie suas alterações:
git add . git commit -m "Descrição das mudanças" git push origin feature/nova-funcionalidade
Desenvolvido com ❤️ por Samuel Ramos
📧 Contato Profissional
💼 Perfil LinkedIn
🐙 Repositório GitHub
🌐 Site Vai Na Web