Paleta de comandos

Navegá el sitio, cambiá el tema o saltá a un proyecto.

MP
Volver al trabajo
S
Plataforma de despacho · White-label/2026/Lidera el equipo · Arquitectura · Backend Rust · Front 3D

Seere

La plataforma de despacho white-label que cualquier flota puede hacer suya: una sola lógica corriendo en web, móvil y desktop.

  • TypeScript
  • Rust
  • Arquitectura hexagonal
  • React Native
  • Tauri
  • Three.js
  • GLSL
  • Verdaccio
El ángulo

Seere es una plataforma de despacho y logística pensada para operadores de flotas que necesitan coordinar viajes, conductores y clientes en tiempo real. La idea de producto es simple: una sola plataforma que cada empresa configura con su marca y sus reglas, en lugar de mandar a desarrollar un sistema a medida. Por dentro, eso se sostiene con un núcleo de dominio TypeScript headless que corre idéntico en los tres dispositivos y un backend Rust hexagonal donde cada cliente es una configuración, no un fork. Miguel lidera el equipo y dirige la arquitectura del producto, del backend al showroom 3D.

0

Microservicios Rust

hexagonales

~1.200

Archivos Rust

0

Runtimes

web · native · desktop

0

Costuras de extensión

ports · strategies · slots · hooks

El problema

Cada flota quiere su propio sistema de despacho

Los operadores de logística suelen elegir entre comprar un software rígido que no se adapta a cómo trabajan, o mandar a desarrollar uno a medida que tarda meses y se queda sin mantenimiento. Y todos necesitan lo mismo en el fondo: coordinar viajes y conductores en vivo, desde la web de la central y desde el teléfono en la calle, sin que las dos versiones se contradigan.

La decisión

Un producto que se configura, no se reescribe

Seere parte de un núcleo de dominio único (dispatch-core, TypeScript sin dependencias de plataforma) que web, móvil y desktop consumen idéntico, y un backend Rust de doble hexágono con cuatro costuras de extensión. Cada empresa nueva entra como un tenant white-label: su marca, sus reglas y sus integraciones encajan en esas costuras como configuración. El equipo, dirigido por Miguel, sostiene una sola base de código que sirve a muchos clientes a la vez.

El resultado

Una plataforma, muchas flotas, una sola verdad

El resultado es un producto que una flota puede empezar a usar con su propia identidad sin esperar un desarrollo a medida, con la misma lógica garantizada en todos sus dispositivos y un showroom 3D propio que funciona como vidriera comercial. Estados imposibles eliminados por tipos y branding por tema: el sistema crece sumando clientes, no copias.

En pantalla

Lo que se ve

Caballo cromado

RevealPass radial + god rays + iridiscencia 'curando'

Flow-field generativo

Campo de fuerzas en el fondo del showroom

Re-skin white-label

Seere-azul → TiendaLeón-verde por brandingToTheme()

Doble hexágono

engine/platform/services + domain/logic/strategies/hooks

Bajo el capó

Una pieza load-bearing

Código real del proyecto — la parte que sostiene la idea.

packages/dispatch-core/src/domain/trip.ts
TypeScript
/** Programado, sin tripulación: no puede portar driver/vehicle. */
export interface UnassignedTrip extends TripBase {
  readonly state: "unassigned";
}

/** En curso: suma timestamps que estados previos no tienen. */
export interface InProgressTrip extends TripBase {
  readonly state: "in_progress";
  readonly crew: Crew;
  readonly vehicle: VehicleRef;
  readonly boardingStartedAt: IsoDateTime;
  readonly departedAt: IsoDateTime;
}

/** La unión discriminada: el compilador veda los estados imposibles. */
export type Trip =
  | UnassignedTrip | AssignedTrip | BoardingTrip
  | InProgressTrip | CompletedTrip | CancelledTrip;

Estados imposibles, irrepresentables. La unión discriminada sobre la que todos los consumidores hacen pattern-match. Cada estado solo declara los campos que en él existen.

Lo resuelto

En concreto

Una sola plataforma de despacho que la flota usa desde la web, el celular del conductor o el escritorio de la central, sin diferencias de comportamiento.

Cada empresa cliente entra como un tenant white-label que se configura con su marca y sus reglas — no se reescribe ni se forkea el producto.

El núcleo de dominio (dispatch-core) corre verbatim en los tres dispositivos, así una regla de negocio se cambia una vez y vale en todos lados.

Backend Rust hexagonal de ~1.200 archivos con doble hexágono y cuatro costuras de extensión donde encajan las particularidades de cada cliente.

Type-driven design: uniones discriminadas y branded IDs que hacen inexpresables los estados imposibles, para que un despacho no termine en un estado roto.