Plataforma de transporte compartido para estudiantes de la Universidad Tecnológica de Bolívar.
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.
- Diego Baron
- Junior Orozco
- Keiner Mendivil
- Julian Manjarrez
| 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 |
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
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:
pytestEl recorrido de validación del flujo de autenticación se encuentra implementado y ejecutado en la nube mediante Integración Continua.
-
Archivos de prueba:
-
Evidencia de ejecución (Success): GitHub Actions Run #36063583782
Conclusion de la última ejecución: La ejecución de las pruebas automatizadas ha sido exitosa, lo que indica que el código cumple con los estándares de calidad establecidos.
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.
- Enlace: ROUTB en SonarCloud
El backend está desplegado y accesible públicamente por HTTPS:
- URL base: https://as-202620-routb.onrender.com
- Health check: https://as-202620-routb.onrender.com/health
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
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 |
| 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) |
Requisitos: cuentas gratuitas en GitHub, Supabase y Render, y Python instalado.
- Base de datos (Supabase): crea un proyecto (plan Free) y copia la cadena de conexión del panel; la usarás como
DATABASE_URL. - Migraciones: en
backend, con las dependencias instaladas yDATABASE_URLexportada, ejecutaalembic upgrade head. - Servicio (Render): New → Web Service → selecciona el repo → entorno Docker (
backend/Dockerfile), instancia Free, Health Check Path =/health. - Variables de entorno en Render → Environment:
DATABASE_URL(paso 1),JWT_SECRET_KEY(genera una conpython -c "import secrets; print(secrets.token_urlsafe(32))") yROUTING_TIMEOUT_SECONDS(por defecto3.0, declarada enrender.yaml). - 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.
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.