desafio final vnw full stack back end

Python

📚 API Livros Vai Na Web + 🐳 Docker

API completa para gestão de acervo literário com conteinerização Docker

Docker Python Flask License

🚀 Começando

Pré-requisitos

🔧 Sem Docker

  • Python 3.11+
  • SQLite3
  • Git (opcional)

🐋 Com Docker (Recomendado)

⚙️ 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
| Inicia containers em background | |
docker-compose logs -f
| Monitora logs em tempo real | |
docker-compose exec web bash
| Acessa o container | |
docker-compose down -v
| Remove containers e volumes |

🚨 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

  1. Modularidade: Separação clara entre componentes
  2. Segurança: Isolamento de ambientes com Docker
  3. Escalabilidade: Fácil adição de novos endpoints
  4. Portabilidade: Configuração replicável em qualquer sistema

🤝 Fluxo de Desenvolvimento

  1. Clone o repositório
  2. Crie uma nova branch:
git checkout -b feature/nova-funcionalidade
  1. Desenvolva usando containers:
docker-compose exec web bash
# Dentro do container:
flask run --host=0.0.0.0 --reload
  1. 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