• Trabajos
  • Especialidades
  • Ingeniería
  • Servicios
  • Precios
  • Sobre mí
  • Contacto
Hablar de un proyecto
  • Trabajos
  • Especialidades
  • Ingeniería
  • Servicios
  • Precios
  • Sobre mí
  • Contacto
Hablar de un proyecto
Valerii Vvedenskyi

Los casos describen productos reales en los que trabajé; cada dato de este sitio proviene de ellos.

Secciones

  • Trabajos
  • Especialidades
  • Ingeniería
  • Servicios
  • Precios
  • Sobre mí
  • Contacto

Idiomas

  • English
  • Українська
  • Русский
  • Қазақша
  • Français
  • Deutsch
  • Español
  • Português

Contacto

valerii.vvedenskyi@gmail.com

Toronto, Canada

LinkedIn

© 2026 Valerii Vvedenskyi. Todos los derechos reservados.

Política de privacidad

Diseñado y desarrollado por Valerii Vvedenskyi con Next.js.

  • English
  • Українська
  • Русский
  • Қазақша
  • Français
  • Deutsch
  • Español
  • Português
  • English
  • Українська
  • Русский
  • Қазақша
  • Français
  • Deutsch
  • Español
  • Português
Todos los trabajos

Fitofan

Plataforma deportiva: web, apps móviles y el backend que hay detrás

Una plataforma para atletas, entrenadores, clubes y aficionados: una web app en 11 idiomas, apps para iOS y Android y un único backend del que me ocupo de principio a fin.

Rol
Senior Full-Stack & Mobile Engineer
Periodo
2024 – 2026

Contexto

Fitofan atiende a atletas, entrenadores, padres, clubes y ligas con una web app en Next.js, apps Flutter para iOS y Android y un backend en NestJS. Soy responsable de la entrega en todo el stack: arquitectura, APIs, datos, infraestructura y lanzamientos, y desde 2026 mantengo la app móvil por mi cuenta.

El reto

Mantener un producto coherente entre tres bases de código y 11 idiomas mientras se añaden datos deportivos en vivo, pagos, publicación social y funciones de IA sin frenar los lanzamientos.

Construido en todas las capas

  • Web app en Next.js 16 sobre Feature-Sliced Design: más de 140 páginas, 11 locales, unas 10 000 claves de traducción con paridad verificada en CI
  • Backend en NestJS con más de 90 módulos, PostgreSQL y más de 290 migraciones, Swagger y comprobaciones de estado
  • Sincronización orientada a eventos sobre RabbitMQ con consumidores idempotentes, una cola de mensajes fallidos e ids de correlación
  • Caché en Redis con invalidación por decoradores; gateways Socket.IO para comentarios y sesiones en vivo
  • Partidos, resultados y cuotas en vivo desde Sportmonks y API-Football; publicación social en Meta, TikTok, LinkedIn y YouTube
  • Suscripciones con Finix más verificadores de pago para Stripe, Square, PayPal, LiqPay, Mercado Pago, GCash y Monopay
  • Asistente OpenAI con llamadas a herramientas, transcripción con Whisper y generación de imágenes con Replicate
  • App Flutter: BLoC, caché offline con Hive, Socket.IO, notificaciones push, AdMob, Live Activities de iOS, 12 locales, más de 360 tests
  • CI/CD: gates de lint e i18n, Jest, Docker multietapa, registro de contenedores, despliegue por SSH; web en Vercel
  • Paquetes compartidos de registro y creación de clubes reutilizados por GymTeam mediante un contrato de host inyectable
  • I+D de IA y visión en el mismo ecosistema: una app de evaluación deportiva infantil con estimación de pose en el dispositivo en Flutter y suscripciones in-app, y un análisis de técnica de taekwondo en el navegador con MediaPipe y TensorFlow.js

Puntos de ingeniería

  • Consumidores de eventos idempotentes: cada mensaje se registra antes de confirmarse, así que los reintentos y las repeticiones nunca se aplican dos veces
  • Arquitectura impuesta por las herramientas: reglas de capas, una línea base de lint congelada que solo puede reducirse, comprobación de ciclos de dependencias y paridad de i18n en cada pull request
  • Live Activities nativas de iOS controladas desde Flutter a través de un puente de method channel
  • Un único flujo de registro empaquetado tras un contrato de host y consumido por dos productos

Qué hace posible

Las funciones se lanzan en web, móvil y backend en un solo cambio, y la plataforma intercambia datos de clubes con GymTeam en tiempo real.

Evidencia

  • Marcadores en vivo, eventos de partido y comentarios transmitidos a web y móvil en tiempo real
  • Pagos a través de Finix, con verificadores para Stripe, PayPal, Square, LiqPay y Mercado Pago
  • Asistente de IA con 15 herramientas de dominio, transcripción de voz y medios generados
  • Live Activities de iOS con marcadores de partido en vivo, una extensión nativa alrededor de Flutter
  • Sitio web
  • App Store
  • Google Play

Stack

  • Next.js
  • NestJS
  • Flutter
  • PostgreSQL
  • RabbitMQ
  • Redis
  • Socket.IO
  • OpenAI API
  • Finix
  • Docker

Siguiente caso

GymTeam
Hablar de un proyecto