O PC-Estoque é um sistema de gerenciamento de estoque desenvolvido para oferecer uma solução simples, prática e eficiente no controle de produtos disponíveis em marketplaces. A aplicação permite realizar o cadastro de produtos, controlar entradas e saídas de estoque, atualizar quantidades disponíveis e visualizar informações em tempo real — garantindo maior organização, segurança e agilidade nas operações comerciais.
- Elbia Simone Buglio
- Laura Gabriely
- Felipe Andrade
Este projeto foi construído utilizando as seguintes tecnologias principais:
- Python 3.12
- FastAPI: Framework web para a construção de APIs.
- SQLAlchemy: ORM para interação com o banco de dados.
- PostgreSQL: Banco de dados relacional.
- Redis: Banco de dados não relacional utilizado como cache.
- Alembic: Ferramenta para gerenciamento de migrações de banco de dados.
- Docker & Docker Compose: Para containerização da aplicação e seus serviços.
- Pytest: Para a execução dos testes automatizados.
- Keycloak: Para gerenciamento de identidade e acesso.
- SonarQube: Para análise de qualidade do código.
- 🚀 Como Rodar o Projeto
- 🧪 Testes e Qualidade de Código
- 🤖 Como Rodar o Telegram-bot
- 📖 Documentação da API
- Python 3.12
- Docker
- Docker Compose
git clone https://github.com/projeto-carreira-luizalabs-2025/pc-estoque.git
cd pc-estoque-
Crie o ambiente virtual:
# No Linux make build-venv # No Windows python -m venv venv
-
Ative o ambiente virtual:
#Linux source venv/bin/activate #Windows .\venv\Scripts\activate
-
Instale as dependências:
# No Linux make requirements-dev # No Windows pip install -r requirements/develop.txt
-
Copie o arquivo de ambiente: Este arquivo contém as configurações necessárias para a aplicação, como a URL do banco de dados.
# No Linux chmod +x devtools/scripts/push-env make load-dev-env # No Windows cp ./devtools/dotenv.dev .env
- Subindo o Container do PostgreSQL e Keycloak: Este comando irá iniciar os contêineres da aplicação e do banco de dados PostgreSQL e o Keycloak, alem de realizar a migração do banco de dados e carregar o estoque inicial.
# No Linux
make docker-up
# No Windows
docker-compose up -dOBS: Comandos para descer os contêineres
# No Linux
make docker-down
# No Windows
docker-compose down-
Ajuste o arquivo
.env: Abra o arquivo.envrecém-criado e altere a variávelAPP_DB_URLpara apontar para o seu banco de dados PostgreSQL local. O formato é:postgresql+asyncpg://USER:PASSWORD@HOST:PORT/DATABASE_NAME. -
Aplique as migrações do banco de dados: Para criar as tabelas necessárias, execute o Alembic.
# No Linux make migration # No Windows alembic upgrade head
Com o ambiente virtual ativado, inicie o servidor da API:
# No Linux
make run-dev
# No Windows
uvicorn app.api_main:app --reloade o Worker para notificação de estoque baixo:
#No Linux
make notification
#No Windows
python -m app.worker.main-
Criar um bot no Telegram:
- Converse com @BotFather no Telegram
- Use o comando
/newbot - Escolha um nome e username para seu bot
- Copie o token fornecido
-
Configurar variáveis de ambiente:
Edite o arquivo
.enve adicione seu token do bot:TELEGRAM_BOT_TOKEN=seu_token_aqui
-
Executar o bot:
# No Linux make telegram # No Windows python bot_main.py
O projeto está configurado com um conjunto de ferramentas para garantir a qualidade e a consistência do código.
- Python 3.12
- Docker
- Docker Compose
git clone https://github.com/projeto-carreira-luizalabs-2025/pc-estoque.git
cd pc-estoque-
Crie o ambiente virtual:
# No Linux make build-venv # No Windows python -m venv venv
-
Ative o ambiente virtual:
#Linux source venv/bin/activate #Windows .\venv\Scripts\activate
-
Instale as dependências:
# No Linux make requirements-dev # No Windows pip install -r requirements.txt
-
Copie o arquivo de ambiente: Este arquivo contém as configurações necessárias para a aplicação, como a URL do banco de dados.
# No Linux chmod +x devtools/scripts/push-env make load-test-env # No Windows cp ./devtools/dotenv.test .env
-
Ajuste o arquivo
.env: Abra o arquivo.envrecém-criado e altere a variávelAPP_DB_URLpara apontar para o seu banco de dados PostgreSQL local. O formato é:postgresql+asyncpg://USER:PASSWORD@HOST:PORT/DATABASE_NAME.
Para rodar a suíte de testes unitários e de integração, utilize o Pytest:
# No Linux
make test
# No Windows
ENV=test PYTHONPATH=. pytestPara gerar um relatório de cobertura de testes, execute:
# No Linux
make coverage
# No Windows
ENV=test PYTHONPATH=. pytest --cov=app --cov-report=term-missing --cov-report=xml tests --cov-fail-under=90 --durations=5O projeto está configurado para análise com o SonarQube.
-
Inicie o SonarQube:
docker-compose -f docker-compose-sonar.yml up -d
2- Gerando o Arquivo coverage.xml:
coverage xml- Execute o Scanner: Após rodar os testes e gerar o
coverage.xml, execute o scanner do Sonar para enviar os resultados para o servidor. Você precisará de um token de autenticação.docker run --rm \ -e SONAR_HOST_URL=http://localhost:9000 \ -e SONAR_TOKEN="SEU_TOKEN_AQUI" \ -v "$(pwd)":/usr/src \ sonarsource/sonar-scanner-cli
Após iniciar a aplicação (localmente ou com Docker), você pode acessar a documentação interativa da API nos seguintes endereços:
- Swagger UI: http://localhost:8000/api/docs
- ReDoc: http://localhost:8000/api/redoc
O projeto está aberto a contribuições. O fluxo para contribuição é o seguinte:
- Realize um fork do repositório.
- Crie uma branch descritiva para a sua feature ou correção.
- Submeta um Pull Request.
- Aguarde o Code Review pela equipe de desenvolvimento.
- Após a aprovação, sua alteração será integrada ao código principal.