{"id":32361888,"url":"https://github.com/shurdani/zipstats","last_synced_at":"2026-04-28T23:05:55.272Z","repository":{"id":319319785,"uuid":"1077672025","full_name":"Shurdani/ZipStats","owner":"Shurdani","description":"🛴 App Android para tracking de Patinete, E-bike, Bicicleta y Monociclo con logros, estadísticas y gestión de reparaciones","archived":false,"fork":false,"pushed_at":"2026-01-11T17:09:34.000Z","size":35137,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-11T20:13:52.460Z","etag":null,"topics":["android","cloudinary","firebase","hilt","jetpack-compose","kotlin","material-design","material3","mvvm"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/Shurdani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-16T15:16:07.000Z","updated_at":"2026-01-11T16:57:05.000Z","dependencies_parsed_at":"2025-10-18T20:03:45.603Z","dependency_job_id":"3ec6ccf1-48e6-42a0-ba23-ad9a89c54fe8","html_url":"https://github.com/Shurdani/ZipStats","commit_stats":null,"previous_names":["shurdani/zipstats"],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/Shurdani/ZipStats","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shurdani%2FZipStats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shurdani%2FZipStats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shurdani%2FZipStats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shurdani%2FZipStats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shurdani","download_url":"https://codeload.github.com/Shurdani/ZipStats/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shurdani%2FZipStats/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28510928,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["android","cloudinary","firebase","hilt","jetpack-compose","kotlin","material-design","material3","mvvm"],"created_at":"2025-10-24T15:02:45.262Z","updated_at":"2026-04-28T23:05:55.265Z","avatar_url":"https://github.com/Shurdani.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🛴 ZipStats\n\nAplicación Android para registrar rutas GPS de patinetes, bicicletas y otros vehículos personales, con métricas de conducción, mapas y contexto meteorológico.\n\n[![Version](https://img.shields.io/badge/Version-6.4.3-brightgreen.svg)](https://github.com/shurdani/ZipStats/releases)\n[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.21-blue.svg)](https://kotlinlang.org)\n[![Android](https://img.shields.io/badge/Android-API%2031%2B-green.svg)](https://developer.android.com)\n[![Jetpack Compose](https://img.shields.io/badge/Jetpack%20Compose-2025.01.00-blue.svg)](https://developer.android.com/jetpack/compose)\n[![Gradle](https://img.shields.io/badge/Gradle-8.13-green.svg)](https://gradle.org)\n[![License: GPLv3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)\n\n---\n\n## Características\n\n- Tracking GPS en tiempo real con servicio en foreground.\n- Cálculo de distancia, velocidad y duración de ruta.\n- Visualización de rutas sobre Mapbox.\n- Gestión de vehículos (kilometraje, imagen y estadísticas por vehículo).\n- Historial de rutas y exportación a Excel.\n- Sistema meteorológico con Google Weather API (alertas y detección de condiciones adversas).\n\n---\n\n## Stack técnico\n\n### Core\n- Kotlin `2.0.21`\n- Jetpack Compose BOM `2025.01.00`\n- Arquitectura MVVM + separación por capas\n- Hilt `2.57.2`\n- KSP `2.0.0-1.0.22`\n- Gradle Wrapper `8.13`\n\n### Android\n- `compileSdk 35`\n- `targetSdk 34`\n- `minSdk 31` (Android 12+)\n- Java/Kotlin JVM target `17`\n\n### Servicios y librerías\n- Mapbox Maps SDK `11.8.0` + SDK Services `7.9.0`\n- Firebase BoM `33.6.0` (Auth, Firestore, Storage, Analytics)\n- Google Play Services (Location/Auth/Base)\n- Google Weather API\n- Cloudinary\n- Retrofit `2.11.0`\n- Coroutines `1.8.1`\n- DataStore `1.1.2`\n- Apache POI `5.2.3`\n- Coil `2.7.0`\n\n\u003e Nota: las versiones vigentes se mantienen en `gradle/libs.versions.toml`.\n\n---\n\n## Requisitos\n\n- Android 12 (API 31) o superior.\n- GPS habilitado.\n- Google Play Services.\n- Conexión a Internet para mapas/sincronización/clima.\n\n---\n\n## Configuración local\n\n### 1) Clonar repositorio\n\n```bash\ngit clone https://github.com/shurdani/zipstats.git\ncd zipstats\n```\n\n### 2) Preparar archivos de configuración\n\n1. Copia `local.properties.example` a `local.properties`.\n2. Copia `app/google-services.json.example` a `app/google-services.json`.\n3. (Opcional para release firmado) copia `keystore.properties.example` a `keystore.properties`.\n\n### 3) Credenciales necesarias\n\nEn `local.properties`:\n\n- `mapbox.access.token`\n- `MAPBOX_DOWNLOADS_TOKEN` (scope `DOWNLOADS:READ`)\n- `cloudinary.cloud_name`\n- `cloudinary.api_key`\n- `cloudinary.api_secret`\n- `google.weather.api.key` (usada por el repositorio de clima actual)\n- `openweather.api.key` (compatibilidad/uso alternativo en partes del proyecto)\n\n### 4) Compilar\n\nLinux/macOS:\n\n```bash\n./gradlew clean assembleDebug\n./gradlew installDebug\n```\n\nWindows (PowerShell/CMD):\n\n```powershell\n.\\gradlew.bat clean assembleDebug\n.\\gradlew.bat installDebug\n```\n\nBuild release:\n\n```bash\n./gradlew assembleRelease\n```\n\n---\n\n## Estructura principal\n\n```text\napp/src/main/java/com/zipstats/app/\n├── analysis/      # Análisis de datos GPS\n├── di/            # Inyección de dependencias (Hilt)\n├── model/         # Modelos de dominio/datos\n├── navigation/    # Navegación\n├── repository/    # Acceso a datos y APIs\n├── service/       # Servicios en segundo plano\n├── tracking/      # Lógica de tracking\n├── ui/            # Pantallas y componentes Compose\n└── utils/         # Utilidades\n```\n\n---\n\n## Seguridad y credenciales\n\n- No subir `local.properties`, `app/google-services.json` ni `keystore.properties`.\n- El repositorio Mapbox privado usa `MAPBOX_DOWNLOADS_TOKEN` desde `local.properties`.\n- Restringe claves API por paquete y huellas SHA cuando aplique.\n\n---\n\n## Contribuir\n\n1. Haz fork del proyecto.\n2. Crea tu rama (`git checkout -b feature/mi-feature`).\n3. Haz commit de los cambios.\n4. Publica la rama.\n5. Abre un Pull Request.\n\n---\n\n## Licencia\n\nGPLv3. Consulta [LICENSE](LICENSE) para más detalles.  \nEl nombre \"ZipStats\", logotipo y elementos visuales forman parte de la identidad del autor.\n\n---\n\n## Contacto\n\n- Email: `zipstatsapp@gmail.com`\n- Issues: [GitHub Issues](https://github.com/shurdani/zipstats/issues)\n\n---\n\n¡Feliz tracking! 🛴\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshurdani%2Fzipstats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshurdani%2Fzipstats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshurdani%2Fzipstats/lists"}