Sistema completo para gerenciamento de bibliotecas com controle de acervo, membros e empréstimos. Desenvolvido com Python Flask e JavaScript.
- Python 3.8+
- Flask
- Flask-SQLAlchemy
- Flask-CORS
- Marshmallow
- SQLite
- pytest
- HTML5
- CSS3
- JavaScript
- Fetch API
O projeto segue o padrão MVC com Factory Pattern:
- MVC Pattern - Separação de responsabilidades
- Application Factory - Configuração flexível
- Blueprint Pattern - Modularização de rotas
- Repository Pattern - Abstração de dados
- RESTful API - Design de endpoints padronizado
- DRY - Reutilização de código
- Validation Layer - Validação robusta com Marshmallow
- Clone o repositório
cd <repositorio>- Crie um ambiente virtual
python -m venv venv
# Linux/Mac
source venv/bin/activate
# Windows
venv\Scripts\activate- Instale as dependências
pip install -r requirements.txt- Configure as variáveis de ambiente (opcional)
cp .env.example .env
# Edite .env conforme necessário- Inicialize o banco de dados
flask init-db- Popule com dados de exemplo (opcional)
flask seed-db- Inicie o servidor
python run.pyO servidor estará rodando em http://localhost:3002
- Abra o frontend
Abra o arquivo frontend/index.html no navegador ou use um servidor local:
cd frontend
python -m http.server 8000Acesse http://localhost:8000
GET /books # Listar todos os livros
GET /books/:id # Buscar livro por ID
POST /books # Criar novo livro
PUT /books/:id # Atualizar livro
DELETE /books/:id # Remover livro
GET /books/search?q=... # Buscar livrosExemplo - Criar livro:
POST /api/books
{
"title": "Clean Code",
"author": "Robert C. Martin",
"isbn": "978-0132350884",
"publisher": "Prentice Hall",
"year": 2008,
"category": "Programming",
"quantity": 3
}GET /members # Listar todos os membros
GET /members/:id # Buscar membro por ID
POST /members # Criar novo membro
PUT /members/:id # Atualizar membro
DELETE /members/:id # Remover membro
GET /members/:id/loans # Empréstimos do membroGET /loans # Listar todos os empréstimos
GET /loans/:id # Buscar empréstimo por ID
POST /loans # Criar novo empréstimo
POST /loans/:id/return # Registrar devolução
GET /loans/active # Empréstimos ativos
GET /loans/overdue # Empréstimos atrasadosExemplo - Criar empréstimo:
POST /api/loans
{
"book_id": 1,
"member_id": 2
}GET /dashboard/stats # Estatísticas gerais
GET /dashboard/recent-activity # Atividades recentespytestpytest --cov=app --cov-report=htmlpytest tests/test_books.py- Application Factory Pattern
- Blueprint para modularização
- SQLAlchemy ORM
- Validação com Marshmallow
- Tratamento de erros padronizado
- Respostas JSON consistentes
- Relacionamentos de banco de dados
- Cascade deletes
- Testes automatizados com pytest
- Fixtures de teste
- JavaScript modular (sem frameworks)
- Separação de responsabilidades
- Cliente API centralizado
- Tratamento de erros
- Feedback visual (toasts)
- Loading states
- Modais reutilizáveis
- Design responsivo
- CSS puro sem dependências
desenvolvimento backend tradicional.
Frontend sem frameworks, domínio de JavaScript puro.
ORM com relacionamentos e validações.
- Cálculo automático de disponibilidade
- Detecção de empréstimos atrasados
- Proteção de integridade referencial
Dashboard com estatísticas, busca, filtros e formulários dinâmicos.
Suite completa de testes com pytest e fixtures.
- Autenticação e autorização (JWT)
- Reservas de livros
- Notificações por email
- Upload de capas de livros
- Código de barras para ISBN
Thiago Rocha
Desenvolvido como projeto de portfólio demonstrando conhecimentos em desenvolvimento full stack com Python/JS.