REPOSITORY OVERVIEWLive repository statistics
★ 2Stars
⑂ 0Forks
◯ 0Open issues
◉ 2Watchers
64/100
OPENREPOHUB HEALTH SIGNALMixed signals
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
100 Community adoption25% weight
5 Maintenance state20% weight
100 License clarity10% weight
0 Project information10% weight
75 This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
ApiVentas — FastAPI
API + dashboard para registro de ventas por lotes de importación: costos unitarios, recuperación de inversión y stock por ciudad. Construida con FastAPI + SQLAlchemy 2.0 async + PostgreSQL.
Requisitos previos
Instalación y arranque
git clone https://github.com/MartinAAcebeyL/ApiVentas.git
cd ApiVentas
cp .env.example .env # editar credenciales
docker compose up --build
# API: http://localhost:8000/docs
# Dashboard: http://localhost:8000/dashboard
Esquema de base de datos
El proyecto no ejecuta migraciones: el esquema se administra directamente en la BD aplicando los scripts de db/schema/ en orden:
psql "$DATABASE_URL" -f db/schema/001_initial.sql
psql "$DATABASE_URL" -f db/schema/002_lotes_importacion.sql
Concepto: lotes de importación
Un lote agrupa los productos comprados juntos (como una hoja del Excel):
- El costo de envío del lote se reparte en partes iguales entre los tipos de producto.
costo unitario = (costo_compra + envío/n_tipos) / cantidad — se calcula y guarda al crear el lote.
- El stock se asigna por ciudad al crear el lote; cada venta descuenta de un ítem+ciudad.
- La recuperación de inversión compara lo vendido (sin envío al cliente) contra lo invertido.
Endpoints principales
| Método | Endpoint | Descripción |
|---|
| POST | /api/v1/auth/login | Login (JWT) |
| POST | /api/v1/imports/ | Crear lote (ítems + reparto por ciudad) |
| GET | /api/v1/imports/ | Lotes con resumen de recuperación |
| GET | /api/v1/imports/{id}/metrics | Métricas completas del lote |
| POST | /api/v1/sales/ | Registrar venta (descuenta stock de ciudad) |
| GET | /api/v1/stock/by-city | Stock por ciudad (filtros: lote, producto, ciudad) |
| GET | /api/v1/sales/reports/graphic | Reporte gráfico |
| GET | /api/v1/sales/reports/pdf | Reporte PDF |
Dashboard
Interfaz web servida por la misma app (Jinja2, login con cookie):
/dashboard — lotes con barra de recuperación de inversión
/dashboard/imports/{id} — métricas del lote, stock por ciudad, ventas
/dashboard/sales/new — registrar venta
/dashboard/imports/new/form — registrar lote nuevo
Tests
# Unit tests (sin DB)
pytest tests/test_import_costs.py tests/test_import_schemas.py
# Integración (requiere Postgres con esquema aplicado)
docker run -d --rm --name apiventas_test_db -e POSTGRES_PASSWORD=test \
-e POSTGRES_DB=apiventas_test -p 55432:5432 postgres:16-alpine
# aplicar db/schema/*.sql y luego:
pytest tests/
Stack
- FastAPI + Uvicorn · SQLAlchemy 2.0 async · PostgreSQL 16
- Pydantic v2 · JWT (python-jose) · Jinja2 · xhtml2pdf
ALGORITHMICALLY RELATEDSimilar Open-Source Projects
Selected from shared topics, language and repository description—not editorial ratings.
Desarrollo de una aplicación web ecommerce utilizando HTML para la estructura, CSS para el diseño y Javascript para interacciones y/o validaciones del lado del cliente. El Backend y la API REST fue desarrollado en PHP, con Laravel como framework de apoyo utilizando buenas prácticas MVC. Diseñamos y utilizamos un UML para el armado y organización de la base de datos relacional con la que luego interactuamos a través de MySQL.
23/100 healthActive repository
PHPNo license
⑂ 0 forks◯ 1 issuesUpdated Nov 16, 2025
Decidir fazer este desafio, que é criar um app ( com alguns ajustes rsrs) de uma Tabela com nome dos vendedores e suas respectivas vendas, em um intervalo de um ano, onde faz-se a integração do Back, Front e Banco de Dados. Neste Projeto, foram usados os seguintes apetrechos: #react #nodejs #frontend =Nodejs 16; Yarn ;STS; VS Code ; IntelliCode ; ESLint ;JSX ;HTML <tags/> Criação projeto Spring Boot. Criar projeto Spring Boot no Spring Initializr com as seguintes dependências: Web ;JPA ;H2 ;Security "Limpar" o projeto ReactJS https://github.com/acenelio/dsmeta-css Componentes; Datepicker: Documentação: https://github.com/Hacker0x01/react-datepicker React Hook useState para manter estado das datas: Postman (Vídeo: https://youtu.be/CWKLVapcnCU ) Heroku CLI (Vídeo: https://youtu.be/70LUh5KNaEk ) Criação entidade Sale; Mapeamento objeto-relacional (JPA); Configuração dos dados de conexão do Banco de Dados H2; Estruturação do Seed do banco de dados; application.properties: teste de Endpoint da API REST: Criação Repository; Criação Service; Criação Controller Envio de SMS; Dependências Maven do Twilio: Implantação no Heroku; Arquivo system.properties; Criar app no Heroku ; Definir variáveis de ambiente; TWILIO_SID TWILIO_KEY; TWILIO_PHONE_FROM ;TWILIO_PHONE_TO Requisição com Axios e useEffect: yarn add axios@0.27.2; Enviar notificação: Toast de confirmação yarn add react-toastify@9.0.5 Deploy no Netlify: https://www.netlify.com/ ; Deploy básico: Base directory: frontend; Build command: yarn build; Publish directory: frontend/dist ; Variáveis de ambiente: VITE_BACKEND_URL; Configurações adicionais Site settings -> Domain Management: (colocar o nome que quiser) Deploys -> Trigger deploy