{"id":29690665,"url":"https://github.com/seminarioa/findparking","last_synced_at":"2025-07-23T06:37:23.575Z","repository":{"id":305202389,"uuid":"1001774382","full_name":"seminarioA/findParking","owner":"seminarioA","description":"Sistema de visión por computadora para detección en tiempo real de espacios de estacionamiento disponibles u ocupados, basado en YOLO y OpenCV.","archived":false,"fork":false,"pushed_at":"2025-07-18T17:51:04.000Z","size":20283,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-18T22:12:21.015Z","etag":null,"topics":["computer-vision","opencv","yolo"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seminarioA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"zenodo":null}},"created_at":"2025-06-14T02:08:35.000Z","updated_at":"2025-07-18T17:51:07.000Z","dependencies_parsed_at":"2025-07-18T22:13:59.673Z","dependency_job_id":"7a5f1848-d9b7-4c70-a6e1-364f2ec05c4f","html_url":"https://github.com/seminarioA/findParking","commit_stats":null,"previous_names":["seminarioa/findparking"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/seminarioA/findParking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seminarioA%2FfindParking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seminarioA%2FfindParking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seminarioA%2FfindParking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seminarioA%2FfindParking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seminarioA","download_url":"https://codeload.github.com/seminarioA/findParking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seminarioA%2FfindParking/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266631701,"owners_count":23959422,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":["computer-vision","opencv","yolo"],"created_at":"2025-07-23T06:37:22.889Z","updated_at":"2025-07-23T06:37:23.556Z","avatar_url":"https://github.com/seminarioA.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# FindParking\n\nSistema de visión por computadora para detección en tiempo real de espacios de estacionamiento, basado en microservicios, Docker y buenas prácticas de producción.\n\n---\n\n## 🚗 Arquitectura de Producción\n\n### Microservicios\n\n- **frontend_service**: Interfaz web para usuarios, consume los servicios de ocupación y video.\n- **auth_service**: Autenticación y emisión de JWT.\n- **occupancy_service**: Consulta y gestión de ocupación de espacios.\n- **video_service**: Streaming y procesamiento de video (WebSocket).\n- **processing_service**: Detección de vehículos con YOLO/OpenCV y publicación en Redis.\n- **api_gateway (NGINX)**: Proxy reverso, balanceo y seguridad.\n- **redis**: Almacenamiento temporal y cache.\n\n### Flujo de Integración\n\n1. El usuario accede al frontend y se autentica en `/api/auth/token` para obtener un JWT.\n2. El frontend consume endpoints protegidos vía API Gateway, enviando el JWT en cada request y WebSocket.\n3. Los microservicios validan el JWT y responden según el rol y permisos.\n4. Redis centraliza datos de video y ocupación.\n\n### Despliegue en Producción\n\n```bash\ndocker-compose up --build\n```\n\n- Todos los servicios se levantan en contenedores aislados.\n- El API Gateway enruta y protege los endpoints.\n- Redis persiste datos y permite escalabilidad.\n- El frontend se comunica solo vía API Gateway.\n\n---\n\n## 🔒 Seguridad y Buenas Prácticas\n\n- JWT para autenticación y autorización en todos los servicios.\n- Variables de entorno para credenciales y secretos.\n- Certificados SSL y HTTPS (configurables en NGINX).\n- Actualización periódica de dependencias.\n- Pruebas automáticas con pytest y requests.\n- Logging centralizado y monitoreo (recomendado: Prometheus, Grafana).\n- Separación estricta de responsabilidades por microservicio.\n\n---\n\n## 📦 Estructura del Proyecto\n\n```\nfindParking/\n├── services/\n│   ├── auth_service/\n│   ├── occupancy_service/\n│   ├── video_service/\n│   ├── processing_service/\n│   ├── frontend_service/           # Nuevo microservicio web\n│   └── api_gateway/\n├── resources/\n├── templates/\n├── docker-compose.yml\n├── README.md\n└── tests/\n```\n\n---\n\n## 🐳 Despliegue y Escalabilidad\n\n- Escala cada microservicio de forma independiente.\n- Balanceo y proxy con NGINX.\n- Redis persistente para cache y colas.\n- Listo para múltiples cámaras y clientes concurrentes.\n- Recomendado: migrar a Kubernetes para alta disponibilidad.\n\n---\n\n## 🧪 Pruebas Automáticas\n\nEjecuta todos los tests:\n\n```bash\npytest tests/\n```\n\nIncluye pruebas de endpoints REST, WebSocket y templates.\n\n---\n\n## 🧠 Personalización y Extensión\n\n- Modifica `resources/parking1.mp4` y `coco.txt` según tu caso.\n- Entrena tu propio modelo YOLO y reemplaza `yolo11n.pt`.\n- Edita templates HTML y frontend para roles y vistas personalizadas.\n- Agrega nuevos microservicios según necesidades.\n\n---\n\n## 🌐 Frontend de Producción\n\nEl microservicio `frontend_service` permite:\n\n- Autenticación de usuarios y gestión de JWT.\n- Visualización en tiempo real del estado de ocupación (vía `occupancy_service`).\n- Streaming de video procesado y crudo (vía WebSocket a `video_service`).\n- Interfaz responsiva y segura, protegida por el API Gateway.\n\n---\n\n## 📜 Licencia\n\nMIT License © [Los Andes Labs](https://github.com/TU_USUARIO)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseminarioa%2Ffindparking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseminarioa%2Ffindparking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseminarioa%2Ffindparking/lists"}