O MiniBookApiServer é um sistema de backend voltado para viabilizar a venda de livros. Ele expõe uma interface HTTP com diversos endpoints que permitem consultar o catálogo de livros disponíveis, iniciar uma venda adicionando livros a uma compra, e confirmar/cancelar a venda. A autenticação é simples, por meio de um token previamente definido. Neste link é fornecida uma coleção configurável para o Insomnia.
A estrutura de dados do servidor é centrada em três tabelas principais: books
, sales
e books_sales
(ver em docs/api_docs). A tabela books
armazena os dados do acervo de livros, incluindo título, autor, preço (em centavos), ano e unidades disponíveis. Já a tabela sales
registra as vendas feitas, identificadas por um UUID único, com campos como valor total e data da compra. A tabela intermediária books_sales
representa a relação N-para-N entre livros e vendas, indicando quantas unidades de cada livro foram adquiridas em uma venda específica.
O fluxo de funcionamento da API exige que uma venda seja confirmada em até 30 minutos após sua criação, sob risco de ser descartada automaticamente. A confirmação da venda é feita via endpoint Confirm Sale, momento em que as unidades dos livros são de fato debitadas do estoque.
Este código possui partes do respositório ChatAppServer, sendo tanto este quanto aquele licenciados sob a AGPLv3. Veja LICENSE e DISCLAIMER para mais informações.
Veja em docs/api_docs.md a documentação completa do serviço Mini Book API, para saber como interagir com o sistema. Atente-se à seção Fluxos de Compras para compreender como criar um aplicativo de compra de livros.
- Baixar o python 3.x
- Instalar o virtualenv:
pip3 install virtualenv
- Criar um ambiente virtual
virtualenv .venv
- Entrar no ambiente virtual toda vez que for executar o MiniBookApiServer
# No unix-like
source ./.venv/bin/activate
# No windows
.\.venv\Scripts\activate
# para desativar
deactivate
- Instalar as dependencias do projeto
pip install -r requirements.txt
- Configure um arquivo
config.json
.- Criando com um script automatizado: para isso execute o comando abaixo e siga as instruções.
python serverman.py
- Criando manualmente: siga o exemplo do arquivo
config-example.json
.- Para criar um valor para o parâmetro
TOKEN
eTOKEN_ADMIN
deconfig.json
execute:
python -c "import secrets; print(secrets.token_hex(32))"
- Copie o valor gerado para o arquivo de configuração.
- Insira as informações válidas de PIX para configurar um mecanismo de pagamento.
PIX_NAME
: Corresponde ao nome da entidade recebedora.PIX_KEY
: Corresponde à chave da entidade recebedora. A chave tem que estar em conformidade com o que estipula o projeto pybrcode para parâmetros de chave pix.
- Para criar um valor para o parâmetro
- Criando com um script automatizado: para isso execute o comando abaixo e siga as instruções.
- Executar a aplicação flask localmente:
flask run --debug --host=0.0.0.0 --port=5000