←Volver al inicio
GitHub
ProducciónDesarrollado por Christian Fernández

Moto Taxi Finance

PWA Financiera Multi-Tenant con Liquidación Parametrizada, RLS y Tasa BCV

Aplicación web progresiva (PWA) de finanzas operativas para conductores y propietarios en el sector de transporte en dos ruedas. Permite a los choferes registrar sus ingresos diarios en calle, conciliar gastos de combustible y alquiler al cierre del período, y automatizar el reparto transparente entre la ganancia neta del chofer y el fondo de mantenimiento preventivo ('Pote Moto').

Captura del sistema Moto Taxi Finance

Tecnologías y Patrones

  • Next.js 16
  • React 19
  • TypeScript
  • PostgreSQL
  • Drizzle ORM
  • Row-Level Security (RLS)
  • Better-Auth
  • PWA
  • Tailwind CSS

Ingeniería & Límites de Dominio

Arquitectura del Sistema

Arquitectura modular orientada al dominio (package-by-feature) con aislamiento multi-tenant estricto mediante PostgreSQL Row-Level Security (RLS) en tiempo de ejecución, transacciones ACID con Drizzle ORM y contabilidad monetaria en enteros (minor units) para evitar errores de coma flotante.

Puntos Clave de la Arquitectura

  • Aislamiento de datos por inquilino mediante políticas nativas de PostgreSQL RLS con SET LOCAL ROLE app_user dentro de cada transacción.
  • Diseño modular (package-by-feature) con separación limpia entre capas de dominio, aplicación e infraestructura.
  • Manejo de importes monetarios en unidades enteras (minor units) y sincronización programada con la tasa oficial BCV vía cron.
  • Autenticación segura multi-tenant con Better-Auth, sesiones firmadas y cifrado criptográfico Argon2.

Ecosistema

Stack Tecnológico Detallado

Framework Full-Stack

Next.js 16 (App Router) + React 19 + TypeScript

Renderizado eficiente, server actions seguras y tipado estricto de punta a punta.

Base de Datos & ORM

PostgreSQL (Neon) + Drizzle ORM

Persistencia relacional con migraciones declarativas y consultas tipadas.

Seguridad & Aislamiento

PostgreSQL RLS + Better-Auth + Argon2

Aislamiento por tenant_id a nivel de base de datos y autenticación robusta.

Testing & Calidad

Vitest + Testcontainers

Pruebas de integración contra instancias reales de PostgreSQL en Docker.

Capacidades Operativas

Características Principales

01

Registro ágil de carreras e ingresos diarios optimizado para interacción táctil en dispositivos móviles.

02

Motor de liquidación automático: cálculo de combustible, cuota de alquiler y reparto al 'Pote Moto'.

03

Integración automatizada con la tasa oficial de cambio del Banco Central de Venezuela (BCV).

04

Soporte PWA instalable con funcionamiento rápido y diseño responsivo adaptado al uso en campo.

05

Historial detallado de liquidaciones y balances de saldo por período.

Ingeniería Real & Aprendizaje

Retos Técnicos & Lecciones Aprendidas

Decisiones de arquitectura tomadas bajo presión operativa y el criterio destilado en producción.

01 / El Reto Crítico

Complejidad Operativa

Garantizar la confidencialidad y aislamiento estricto de las cuentas de conductores en una arquitectura multi-tenant compartida sin encarecer la infraestructura en la nube.

Punto de tensión
02 / La Decisión Técnica

Arquitectura & Diseño

Implementé Row-Level Security (RLS) directamente en el motor PostgreSQL combinado con Drizzle ORM, delegando la regla de aislamiento a la base de datos para que sea imposible una fuga de datos entre inquilinos.

Resolución desacoplada
03 / Lección Aprendida

Criterio en Producción

En sistemas financieros multi-tenant, la seguridad no debe depender únicamente de cláusulas WHERE en el código de aplicación: las políticas RLS en base de datos actúan como un cortafuegos infranqueable.

Aprendizaje humano

Decisiones de Diseño

Resolución & Enfoque Técnico

Diseñado y desarrollado para solventar la falta de claridad en las liquidaciones diarias entre choferes y propietarios de motocicletas.

La aplicación se encuentra desplegada y en uso activo en producción.

¿Deseas examinar el repositorio?

El repositorio público contiene el historial de commits, pruebas y estructura modular.

Explorar en GitHub