Amine Benamrouche · Proyectos
← Volver a los proyectos

EasyGift: plataforma B2B2C de cupones regalo

Resumen

EasyGift es una plataforma B2B2C de cupones regalo y beneficios corporativos en Argelia. Las empresas cargan saldos y emiten cupones regalo digitales a sus empleados, que los canjean en tienda en una red de comercios asociados mediante código QR o de barras. La plataforma incluye un panel de administración, un panel de empresa para las compañías cliente, un panel de distribuidor, un panel de punto de venta para comercios y una aplicación móvil para clientes respaldada por una API REST.

La plataforma ya estaba en producción cuando me incorporé y la usaban a diario empleados de empresas públicas y privadas en una red de cientos de comercios asociados. Fui el único desarrollador backend de un equipo multidisciplinar pequeño (un product manager, un desarrollador frontend y un líder de equipo), encargado de ampliar y reparar ese sistema en funcionamiento. Como por él circulaba dinero real, la corrección bajo concurrencia era la principal restricción.

Contribuciones técnicas principales

  • Concurrencia en pagos y condiciones de carrera: reconstrucción del flujo de canje en el punto de venta para que sea atómico bajo uso concurrente, con las actualizaciones de saldo envueltas en DB::transaction() y lockForUpdate() sobre las filas financieras. Esto cerró varios problemas relacionados: saldos que podían incrementarse de forma no atómica, un comercio acreditado antes de que la transacción se hubiera persistido y una ventana en la que el fallo de una notificación tras el commit podía provocar un cargo duplicado al reintentar.
  • Motor de reembolsos: diseño de un motor de reembolsos para retiros de cupones. Reembolsa primero el presupuesto de origen, reparte cualquier excedente entre otros saldos activos en orden cronológico y, como último recurso, absorbe el resto para que no se pierda ningún fondo. Los reembolsos están estrictamente limitados a cada entidad, de modo que el reembolso de un distribuidor nunca puede filtrarse al presupuesto de una empresa. Se apoya en un flujo de aprobación para las solicitudes de retiro de empresas y distribuidores.
  • Migraciones de base de datos en un sistema en producción: escritura de migraciones idempotentes, transaccionales y reversibles sobre datos de producción, incluida una migración de reparación que rellenó los registros que faltaban de empleados pertenecientes a más de una empresa, sin tocar ninguna fila existente.
  • Modelado de datos con varias entidades: introducción de un alcance por relación para que un mismo empleado pueda pertenecer a más de una empresa o distribuidor, pasando de una única clave foránea a una tabla pivote. Esto corrigió inicios de sesión fallidos de empleados en esa situación, tanto en la web como en el móvil.
  • Control de acceso: auditoría y corrección de las asignaciones de roles y permisos en los paneles de administración y de empresa, y adición de autorización basada en políticas para empleados, distribuidores, cupones y transacciones.

Stack técnico

ComponenteTecnologías
BackendPHP, Laravel
Base de datosMySQL
Autenticación de la APILaravel Sanctum
PruebasPHPUnit
Frontend (paneles)Blade

Plataforma en vivo

Explora la plataforma: easygifte.com

El código fuente es propietario y no puede publicarse. Este caso de estudio describe mis contribuciones sin exponer código confidencial, credenciales ni datos de empresas o empleados.