06 5 stack tecnologico - lfnavarroj1/sport-app-platform GitHub Wiki

Stack tecnológico

Lectura de estados

  • Verificado localmente: existe evidencia reproducible en el repositorio o entorno local.
  • Línea base: tecnología aprobada por arquitectura.
  • Planeado: uso definido sin evidencia de ejecución final.
  • Pendiente: falta ratificación, configuración o implementación.
  • Diferido: no pertenece a la primera solución.

Stack por capa

Capa Tecnología Uso Estado
Gestión y documentación GitHub, Projects, Wiki, Markdown y Mermaid Repositorios, backlog, decisiones y presentación. Operativo.
Diseño UX Figma Prototipos web y móvil. Línea base.
Web Angular, TypeScript, HTML y CSS Aplicación web y experiencia de escritorio. Andamiaje disponible; versiones y librería visual por ratificar.
Móvil Kotlin, Android SDK, Android Studio y MVVM Aplicación móvil nativa. Línea base; andamiaje y versiones pendientes.
Backend Python 3.13, FastAPI 0.142.2, Pydantic 2.13.5, Uvicorn 0.54.0 y HTTPX 0.28.1 Microservicios, BFF, validación y comunicación HTTP. Verificado localmente.
Dependencias backend uv 0.12.23 y uv.lock Workspace reproducible de nueve paquetes. Verificado localmente.
Persistencia PostgreSQL 17.11, SQLAlchemy 2.1.3, psycopg 3.3.6 y Alembic 1.20.0 Datos por dominio y migraciones. Verificado localmente para el alcance actual.
Mensajería Google Cloud Pub/Sub Eventos y trabajo asíncrono por dominio. Línea base; evidencia remota actual pendiente.
Integración externa Strava API V3 y patrón Adaptador Sincronización sin acoplar el core al contrato externo. Planeado.
Contenedores Docker y Docker Desktop Construcción OCI y entorno local. Verificado localmente.
Orquestación Kubernetes, GKE y Kustomize Servicios core, configuración y escalamiento. Local parcialmente verificado; GKE objetivo.
Servicios GCP Cloud Run, Cloud SQL, Artifact Registry y Cloud Functions Clientes/BFF, datos, imágenes e integración. Arquitectura objetivo.
Infraestructura Terraform y Secret Manager Recursos compartidos, identidades y referencias a secretos desde sport-app-platform. Aprobado en ADR-021 y ADR-022; desarrollo local implementado y verificado, producción implementada sin aplicar.
CI/CD GitHub Actions y OIDC/WIF Calidad, seguridad, artefactos y promoción. Workflows backend presentes; ejecución y despliegue remoto pendientes.

Calidad y pruebas

Tipo Herramientas principales
Calidad Python Ruff y mypy estricto.
Unitarias e integración backend unittest, TestClient, PostgreSQL efímero y pruebas de contrato.
Web y E2E Jasmine y Playwright.
Móvil Espresso.
API y contratos unittest, TestClient/HTTPX, OpenAPI, PostgreSQL efímero y emuladores aprobados.
Rendimiento Locust para escenarios y k6 para smoke, estrés y umbrales de CI.
Seguridad Gitleaks, Bandit y pip-audit; pruebas especializadas adicionales pendientes.

Nota — herramientas de seguridad: Gitleaks detecta posibles secretos, tokens y credenciales en archivos o en el historial Git; Bandit realiza análisis estático de seguridad del código Python para localizar patrones inseguros; pip-audit compara las dependencias Python resueltas con avisos de vulnerabilidades conocidas. Son controles complementarios: no sustituyen revisión humana, pruebas funcionales, pruebas de penetración ni gestión segura de secretos.

Playwright se utiliza para recorridos web E2E y puede preparar o verificar datos por HTTP dentro de esos recorridos; no sustituye las pruebas de integración y contrato del backend. Postman no forma parte del stack vigente porque no existe una colección versionada, ejecución Newman ni un check de CI asociado. Una comprobación manual aislada en Postman no se considerará evidencia automatizada de aceptación.

Seguridad y operación

flowchart LR
    CODE[Código] --> STATIC[Ruff, mypy y SAST]
    STATIC --> TEST[Pruebas y cobertura]
    TEST --> IMAGE[Imagen OCI]
    IMAGE --> SCAN[Escaneo y digest]
    SCAN --> REG[Artifact Registry]
    REG --> DEPLOY[Despliegue autorizado]
    OIDC[GitHub OIDC y WIF] --> DEPLOY
    SEC[Secret Manager] --> DEPLOY
    DEPLOY --> OBS[Logging, Monitoring y alertas]

Redis, Memcached, MongoDB y sharding permanecen diferidos. No deben incorporarse sin una nueva decisión arquitectónica y evidencia experimental.

Volver a Arquitectura de la solución