Doplax.Dev
← Volver a proyectos
DiRT Tracker

Capacidades

  • Rankings y tiempos
  • Back office

Frontend

Next.jsNext.js
TypeScriptTypeScript
TailwindTailwind

Backend

Node.jsNode.js
PostgreSQLPostgreSQL
PrismaPrisma
NeonNeon
DockerDocker

DiRT Tracker

En desarrollo

DiRT Tracker nació de un problema doméstico: un grupo de amigos corriendo en el mismo salón, con una sola sesión abierta, queriendo apuntar sus tiempos sin hacer login y logout cada vuelta. Es una app Next.js 16 con Auth.js, Prisma y PostgreSQL, sembrada con el contenido real del juego.

El reto

Las hojas de cálculo compartidas se rompían enseguida: nadie recordaba en qué tramo, con qué coche ni con qué condiciones se hizo un tiempo, así que comparar era inútil. Hacía falta un modelo que capturase el contexto de cada vuelta y una forma de registrar tiempos ajenos sin ceder la sesión.

Implementación

  • Catálogo real del juego, sembrado

    El seed carga 13 localidades, 156 tramos y 79 coches con sus datos, y es idempotente: se puede volver a ejecutar sin duplicar nada ni perder los tiempos ya registrados.

  • Tiempos con contexto completo

    Cada marca guarda meteorología, hora del día, sentido del tramo y dispositivo de entrada (volante o mando), además del coche. Comparar un tiempo con volante y lluvia contra otro con mando y seco deja de ser una discusión de bar.

  • Precisión al milisegundo

    Los tiempos se almacenan en milisegundos enteros y se convierten a MM:SS.mmm en la capa de presentación, así que los leaderboards ordenan bien y no arrastran errores de coma flotante.

  • Mutaciones como Server Actions

    Localidades, coches, tiempos, usuarios y contraseñas se modifican con Server Actions validadas con Zod, protegidas por helpers de sesión y de rol admin en lugar de repetir comprobaciones por ruta.

  • Cambio de contraseña forzado en el primer acceso

    Auth.js v5 con credenciales y sesión JWT; un middleware edge-safe redirige a cambiar la contraseña sembrada antes de dejar entrar a ninguna otra página.

  • Mismo esquema en local y en producción

    PostgreSQL 16 en Docker para desarrollo y Neon en producción, con las mismas migraciones de Prisma aplicadas en ambos entornos.