Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ROUTB

Plataforma de transporte compartido para estudiantes de la Universidad Tecnológica de Bolívar.

Contenido


Descripción

La aplicación permite consultar a estudiantes conductores y rutas disponibles, conocer la cantidad de cupos libres y reservar un cupo antes del viaje, haciendo que la organización del transporte sea más rápida y eficiente.

El objetivo es reducir los tiempos de espera y mejorar la coordinación entre estudiantes conductores y pasajeros, facilitando la organización del transporte dentro de la comunidad universitaria.

La descripción completa del problema se encuentra en Problema.


Equipo de desarrollo

  • Diego Baron
  • Junior Orozco
  • Keiner Mendivil
  • Julian Manjarrez

Tecnologías

Tecnología Uso
Flutter Aplicación móvil
FastAPI Backend y API
PostgreSQL (Supabase) Base de datos relacional administrada
Docker Contenedor del backend (backend/Dockerfile)
Render Hosting del backend en la nube
Git / GitHub Control de versiones

Inicio rápido

Para iniciar el proyecto, ejecuta el script correspondiente según tu sistema operativo en el directorio raíz del proyecto:

  • Windows: start.bat
  • Linux/Mac: start.sh

Pruebas y calidad de código

Pruebas locales

Para validar el código del backend de forma local, asegúrate de estar en la carpeta backend con el entorno virtual activo y ejecuta:

pytest

Pruebas automatizadas (CI)

El recorrido de validación del flujo de autenticación se encuentra implementado y ejecutado en la nube mediante Integración Continua.

Análisis de SonarCloud

El análisis de calidad se ejecuta desde GitHub Actions con el scanner oficial de SonarCloud cuando el secreto SONAR_TOKEN está configurado en el repositorio (Settings → Secrets and variables → Actions). En pull requests sin acceso a secretos, el paso se omite.


Despliegue en la nube

Estado actual

El backend está desplegado y accesible públicamente por HTTPS:

Evidencia: Al entrar a los links de verificación, se puede observar que el servicio está funcionando correctamente. Si se necesita verificar más a fondo, se puede consultar toda la evidencia en docs/evidencia/despliegue-externo.md

Piezas desplegadas

Ambas plataformas que prestan servicio se usan en su plan gratuito.

Pieza Dónde se ejecuta Proveedor Decisión
API Backend Web Service en contenedor Docker Render ADR 0005
Base de datos PostgreSQL 15 administrado Supabase ADR 0006

Variables de entorno

Variable Para qué sirve De dónde sale el valor Dónde se configura
DATABASE_URL Cadena de conexión con la que la API accede a la base de datos (SSL requerido) Datos de conexión del proyecto, en el panel de Supabase Panel de Render (Environment)
JWT_SECRET_KEY Clave secreta con la que la API firma los tokens de autenticación Se genera una cadena aleatoria (ver paso 4) Panel de Render (Environment)
ROUTING_TIMEOUT_SECONDS Tiempo máximo de espera por petición a OSRM (segundos) 3.0 por defecto; ajustable según latencia y disponibilidad del proveedor render.yaml o Panel de Render (Environment)

Pasos para recrear el entorno desde cero

Requisitos: cuentas gratuitas en GitHub, Supabase y Render, y Python instalado.

  1. Base de datos (Supabase): crea un proyecto (plan Free) y copia la cadena de conexión del panel; la usarás como DATABASE_URL.
  2. Migraciones: en backend, con las dependencias instaladas y DATABASE_URL exportada, ejecuta alembic upgrade head.
  3. Servicio (Render): New → Web Service → selecciona el repo → entorno Docker (backend/Dockerfile), instancia Free, Health Check Path = /health.
  4. Variables de entorno en Render → Environment: DATABASE_URL (paso 1), JWT_SECRET_KEY (genera una con python -c "import secrets; print(secrets.token_urlsafe(32))") y ROUTING_TIMEOUT_SECONDS (por defecto 3.0, declarada en render.yaml).
  5. Verificar: espera a que el servicio quede Live y prueba:
    curl https://as-202620-routb.onrender.com/health
    curl -i https://as-202620-routb.onrender.com/trips/

En el plan gratuito de Render, tras 15 min sin tráfico la primera petición puede tardar 30-50 s; las siguientes responden con normalidad. La documentación interactiva de la API está en /docs.


Calidad y métricas

La calidad de rendimiento se verifica con una métrica consultable: el percentil 95 de la latencia de GET /trips/ debe ser menor a 3,99 s. El escenario, la fuente de datos, la consulta, el umbral y la medición realizada están en Metricas frente a escenario de calidad.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages