1. Alcance de la integración
Trailboard es una herramienta independiente para preparar carreras de trail. Conectar Strava es opcional y sirve para mostrar, en el espacio privado del atleta, copias transitorias de sus actividades autorizadas e indicadores descriptivos personales.
Trailboard no crea, modifica ni elimina actividades en Strava. La aplicación no utiliza actividades de Strava para crear una clasificación pública entre atletas.
El alcance público presentado a Strava se limita a los usos descritos en esta página. Cualquier ampliación más allá de estos usos requiere confirmación escrita de Strava antes de activarse para los usuarios.
2. Autorización OAuth
- El botón de conexión redirige el navegador a la pantalla OAuth oficial de Strava.
- Los permisos solicitados por el código son “read” y “activity:read_all”. El segundo permite que un atleta autorice el acceso a sus actividades privadas para su propio espacio Trailboard.
- El callback OAuth valida un valor de estado aleatorio y de un solo uso contra CSRF antes de intercambiar el código de autorización.
- Las nuevas escrituras de tokens de acceso y actualización utilizan cifrado AES-256-GCM en PostgreSQL. Los secretos nunca aparecen en esta página pública ni en las respuestas del frontend.
3. Datos de Strava leídos y finalidad
Trailboard solicita únicamente los recursos utilizados por sus funciones personales actuales. El código no tiene permisos para escribir actividades de Strava.
Identidad técnica del atleta
Datos : Identificador de Strava necesario para el vínculo OAuth.
Finalidad : Vincular la cuenta autorizada a una identidad interna. El nombre, apellidos, foto, ciudad y país recibidos de Strava no se copian al perfil compartible de Trailboard.
Resúmenes de actividad
Datos : Identificador, nombre, deporte, fecha, duración, distancia, desnivel, estadísticas disponibles y visibilidad.
Finalidad : Mostrar actividades y calcular totales, promedios, tendencias por periodo, récords y progreso hacia objetivos personales únicamente para el atleta conectado. Estos resultados no se comparan entre miembros ni se usan para análisis internos, mejora del producto o funciones no declaradas en esta página.
Detalles, esfuerzos y streams
Datos : Detalle de actividad, splits, esfuerzos, GPS, altitud, tiempo, velocidad y streams de sensores disponibles según los permisos y el dispositivo.
Finalidad : Mostrar el mapa, el perfil y los detalles brutos relacionados con esa actividad.
Fotos y comentarios
Datos : Fotos y comentarios asociados a una actividad cuando están disponibles mediante la API.
Finalidad : Completar la vista privada del detalle de actividad.
4. Webhooks y sincronización
- Trailboard expone un callback público de servidor para los eventos de Strava. El secreto de verificación nunca se publica.
- Un evento de creación o actualización de actividad encola una actualización específica. Una eliminación encola el borrado local. La desautorización del atleta encola la eliminación de la conexión y de las actividades sincronizadas.
- El procesamiento pesado se guarda en una cola duradera de PostgreSQL para que el callback responda rápidamente, los reintentos estén controlados y un reinicio no pierda el evento.
- No se ejecuta ningún polling periódico de la API de Strava. Las llamadas proceden únicamente de la importación inicial, una acción explícita del usuario o un evento webhook específico.
- La suscripción webhook de la aplicación de producción se comprueba por separado de la presencia del callback en el código.
5. Protección de las cuotas
- Las lecturas del panel sirven primero los datos de PostgreSQL y no realizan una solicitud bloqueante a Strava en cada visualización.
- Los bloqueos PostgreSQL impiden sincronizaciones simultáneas para el mismo atleta o aplicación.
- Cuando Strava responde 429, Trailboard guarda un periodo de espera para la aplicación afectada y aplaza los trabajos hasta la ventana de reintento.
- Las importaciones explícitas están limitadas y se detienen cuando encuentran un límite.
6. Desautorización y eliminación
- Un evento de desautorización de Strava cancela las sincronizaciones activas y elimina la conexión, las copias Strava y los datos personales derivados correspondientes.
- Eliminar una cuenta Trailboard borra transaccionalmente la cuenta y los registros vinculados, confirma la supresión al usuario y registra de forma duradera la revocación remota del token Strava.
- Una eliminación de actividad recibida por webhook elimina la copia local que pertenece a ese atleta.
- Cada copia Strava tiene su propio sello de tiempo de obtención y caduca como máximo siete días después, independientemente de la fecha de la actividad.
7. Seguridad y aislamiento
- Cada ruta de actividad comprueba la identidad Trailboard actual y filtra los datos por identificador de atleta.
- El repositorio cifra las nuevas escrituras OAuth con AES-256-GCM y serializa las actualizaciones de tokens para evitar escrituras concurrentes. La producción debe comprobarse por separado para confirmar que no queda ningún valor antiguo en texto claro.
- Los callbacks y trabajos incluyen una generación de conexión: un evento antiguo no puede actuar sobre una reconexión más reciente.
- Trailboard no vende datos de Strava ni los utiliza para publicidad dirigida.
8. Aplicación Strava registrada
Todas las conexiones y reconexiones nuevas usan la única aplicación Trailboard registrada ante Strava.
La interfaz pública no solicita ni acepta un Client ID o Client Secret perteneciente a un usuario. Los campos técnicos heredados y desactivados solo pueden permanecer cifrados hasta completar una revocación remota o su eliminación.
9. Revisión pública del proceso Strava
- Antes de cada nueva presentación a Strava y después de cualquier cambio en la integración, Trailboard revisa el código afectado frente a la API Policy, el API Agreement y la documentación para desarrolladores vigentes.
- La revisión abarca OAuth y los permisos, el aislamiento por atleta, los datos y finalidades declarados, las estadísticas privadas, los webhooks, las cuotas, los tokens inválidos, la retención según la edad de la copia, la desautorización y la eliminación.
- Las pruebas se separan por nivel: tests y build del código, migraciones y configuración, y después verificación real en producción. La existencia de un callback no demuestra una suscripción activa y un despliegue no demuestra un evento de extremo a extremo.
- Todo uso ambiguo o que exceda los textos publicados permanece desactivado hasta obtener confirmación escrita de Strava. La fecha de esta página se actualiza cuando cambia el proceso o su alcance.
10. Pruebas que deben verificarse antes de volver a presentar la solicitud
- La aplicación ha alcanzado la capacidad de atletas que muestra el panel de desarrolladores de Strava.
- La suscripción webhook de producción está activa y los eventos create, update, delete y deauthorization se observan de extremo a extremo.
- El callback devuelve el código y el tiempo de respuesta exigidos por la documentación actual de Strava.
- Los tokens inválidos o atletas inactivos se identifican y eliminan sin depender únicamente de que el usuario abra Trailboard.
- La retención, actualización y eliminación están demostradas para cada copia directa o derivada.
Referencias oficiales
Esta descripción debe leerse siempre junto con las condiciones vigentes de Strava.
