Diario de un FPero sin complejos: Cicloraces - FPero Org

JuAn4k4

Un diario más, a ver hasta donde llegamos esta vez.

Overview
Esto no va a ser mas que una web app muy sencilla, donde buscar carreras de bicicletas (BTT, Carretera, etc..) de España.

La idea es competir con esto:
https://runedia.mundodeportivo.com/calendario-carreras/espana/comunidad/provincia/ciclismo-carretera/distancia/
https://rfec.com/index.php/es/smartweb/seccion/seccion/rfec/carretera/calendario_carretera

Phase 1: Scaffolding y MVP

  • Funcionalidad MVP
  • Coste < $10/mo
  • No vendor lock-in
  • Landing page, logo, dominio, SSL,
  • Scrapping > Excel + images > Import Script

Infra:

  • BD: MongoDB Atlas - Reason: Me dan un free tier suficiente para tirar bastante, si hace falta se migra más adelante
  • API: Hetzner VPS - Reason: Tiene buen performance y es barato 3-4 euros/mo, No LB, single VPS (Happy days)
  • UI: Vercel - Reason: Free tier suficiente, tirare de la plantilla de @isvidal "Vital" ya que tengo el front abandonado desde hace un par de años y ando perdido.
  • CDN: No se si pondré alguno.. no veo opciones free que merezcan la pena, lo mismo pongo Varnish y pongo la UI en otro server y prau si no va muy fino al principio.

Funcionalidad MVP:

  • No authentication

  • Races: Buscador (tipo de carrera, distancia, homologada/profesional/amateur, localizacion, fechas, ...), GPX viewer (Track), GPX file, Link a inscribirse, Branding (logo, color, etc.)

  • Server cache agresiva del listado de carreras en MEM (poco accesso a BD, que es lenta), filtrado en MEM

  • Todo el media/files ira a FileSystem (Ni S3 ni leches al menos de momento)

CI/CD:
gitops: Un repositorio con un docker-compose file y toda la config que haga falta (salvo secrets que iran en disco)

Cada push a master: (git hook)

  • El VPS hace: git pull (refresh files), y restart.sh

Phase 2

  • AuthN/Z para Orgs y poder administrar/publicitar carreras.
  • ToS, Privacy

Phase 3

  • Gestion de inscripciones
  • Stripe Connect para Orgs
  • SL ? TBD

A futuro, pongo k3s con rancher en Hetzner, Traefik como ingress controller y parto en servicios con service mesh usando istio, Prometheus y Grafana para monitoring, y la BD a saber…

11
HeXaN

De aquí a un año me cuentas.

20
JuAn4k4

Estaba echándole un ojo a Code Fresh para CI/CD y poner un single node k3s en el VPS, y meterle la UI y la API ahí con Varnish y Nginx pero lo mismo es too much. Opiniones ?

JuAn4k4

Hoy le he dado un poco de caña:

Como buen fpero:

He metido Spring Boot webflux, spring data y por supuesto no puede faltar Lombok por todos lados (spring data y records no se llevan muy bien así que tampoco me queda mucha opción), mapstruct para mapear de dominio a bd y vice versa y he creado los cruds para Races y Media.

Mi Auth0/authN es una env var que espero por header como api key. Solo hay una hard codeada. Al buen FPero camionero.

Lo siguiente es crear scrappers que me generen yaml, que luego tocaré a mano para limpiar/ignorar etc para más tarde importarlos

2
JuAn4k4

He metido mas codigo, como buen fpero:

Ahora se puede subir por API un gpx, lo parseo y guardo solo lo que necesito, lo demas fuera.

He metido spring security para empezar y meter un filtro a las API que crean cosas (Race, Media & GXP file)

Ya con esto, lo siguiente que hare sera:

  • Build a docker hub por version, release cycle etc..
  • Gitops repo para desplegar versiones con un compose y la config de nginx/certbot y la app principal.

Depues hare el front, que me da perezon.

JuAn4k4

Hoy le metí github action para hacer la build y push a docket hub. Todo gratis de momento.

Mañana fiesta

Usuarios habituales

  • JuAn4k4
  • HeXaN