{"id":26795891,"url":"https://github.com/oscar503sv/inventory-api","last_synced_at":"2025-09-12T13:35:34.422Z","repository":{"id":285038782,"uuid":"956881838","full_name":"oscar503sv/inventory-api","owner":"oscar503sv","description":"API RESTful para gestionar inventario de productos, desarrollada con FastAPI y SQLAlchemy","archived":false,"fork":false,"pushed_at":"2025-03-29T03:39:47.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-29T18:56:51.814Z","etag":null,"topics":["alembic","api-rest","fastapi-sqlalchemy","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oscar503sv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-29T03:28:07.000Z","updated_at":"2025-03-29T03:40:51.000Z","dependencies_parsed_at":"2025-03-29T04:36:07.633Z","dependency_job_id":null,"html_url":"https://github.com/oscar503sv/inventory-api","commit_stats":null,"previous_names":["oscar503sv/inventory-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oscar503sv/inventory-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscar503sv%2Finventory-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscar503sv%2Finventory-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscar503sv%2Finventory-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscar503sv%2Finventory-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oscar503sv","download_url":"https://codeload.github.com/oscar503sv/inventory-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oscar503sv%2Finventory-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274822194,"owners_count":25356458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alembic","api-rest","fastapi-sqlalchemy","python"],"created_at":"2025-03-29T18:16:25.081Z","updated_at":"2025-09-12T13:35:34.399Z","avatar_url":"https://github.com/oscar503sv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistema de Gestión de Inventario API\n\nUna API RESTful para gestionar inventario de productos, desarrollada con FastAPI y SQLAlchemy.\n\n## Características\n\n- **Autenticación**: Registro, login y logout de usuarios con JWT\n- **Control de acceso**: Roles de usuario (admin, usuario normal)\n- **Gestión de productos**: CRUD completo de productos con categorías, proveedores y ubicaciones\n- **Gestión de inventario**: Control de stock y movimientos (entradas y salidas)\n- **Trazabilidad**: Seguimiento de movimientos con usuario, fecha y referencias\n- **API documentada**: Interfaz interactiva con Swagger UI\n\n## Tecnologías utilizadas\n\n- **FastAPI**: Framework web para creación de APIs\n- **SQLAlchemy**: ORM para interacción con la base de datos\n- **Pydantic**: Validación de datos y serialización\n- **JWT**: Autenticación basada en tokens\n- **Pytest**: Framework de pruebas\n- **Alembic**: Migraciones de base de datos\n\n## Requisitos\n\n- Python 3.8+\n- pip\n\n## Instalación\n\n1. Clona el repositorio\n```bash\ngit clone https://github.com/oscar503sv/inventory-api.git\ncd inventory-api\n```\n\n2. Crea y activa un entorno virtual\n```bash\npython -m venv venv\n# En Windows\nvenv\\Scripts\\activate\n# En Linux/Mac\nsource venv/bin/activate\n```\n\n3. Instala las dependencias\n```bash\npip install -r requirements.txt\n```\n\n4. Ejecuta las migraciones para crear la base de datos\n```bash\nalembic upgrade head\n```\n\n5. Inicia el servidor de desarrollo\n```bash\nfastapi dev app.py\n```\n\nLa API estará disponible en http://localhost:8000\n\n## Documentación API\n\nUna vez que el servidor esté en funcionamiento, puedes acceder a la documentación interactiva de la API:\n\n- Swagger UI: http://localhost:8000/docs\n- ReDoc: http://localhost:8000/redoc\n\n## Estructura del proyecto\n\n```\ninventory-system-api/\n├── alembic/            # Configuración y migraciones de la base de datos\n├── app.py              # Punto de entrada de la aplicación\n├── config/             # Configuración (base de datos, etc.)\n├── models/             # Modelos SQLAlchemy\n├── routes/             # Rutas de la API organizadas por funcionalidad\n├── schemas/            # Esquemas Pydantic para validación\n├── utils/              # Utilidades (autenticación, etc.)\n└── tests/              # Pruebas unitarias e integración\n```\n\n## Uso básico\n\n### Autenticación\n\n```python\n# Registrar un nuevo usuario\nPOST /signup\n{\n  \"username\": \"usuario\",\n  \"email\": \"usuario@ejemplo.com\",\n  \"first_name\": \"Nombre\",\n  \"last_name\": \"Apellido\",\n  \"password\": \"contraseña\",\n  \"role\": \"user\"\n}\n\n# Iniciar sesión\nPOST /login\n{\n  \"username\": \"usuario\",\n  \"password\": \"contraseña\"\n}\n\n# Respuesta\n{\n  \"access_token\": \"token...\",\n  \"token_type\": \"bearer\"\n}\n```\n\n### Ejemplo de movimiento de inventario\n\n```python\n# Crear un movimiento de entrada\nPOST /movimientos/\n{\n  \"cantidad\": 50.0,\n  \"referencia\": \"REF-001\",\n  \"observaciones\": \"Compra inicial\",\n  \"tipo_movimiento_id\": 1,  # Tipo entrada\n  \"producto_id\": 1,\n  \"ubicacion_destino_id\": 1\n}\n```\n\n## Pruebas\n\nPara ejecutar las pruebas:\n\n```bash\npython -m pytest\n```\n\nPara obtener un informe de cobertura:\n\n```bash\npython -m pytest --cov=.\n```\n\n## Estado del proyecto\n\nEste proyecto está activamente mantenido. Las nuevas características, correcciones de errores y mejoras son bienvenidas a través de issues y pull requests.\n\n## Licencia\n\nEste proyecto está bajo la licencia GNU General Public License. Consulta el archivo [LICENSE](LICENSE) para más detalles. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foscar503sv%2Finventory-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foscar503sv%2Finventory-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foscar503sv%2Finventory-api/lists"}