TS Industry
CharitaGraphQLPlatby

Běh Adventáka

Soubor tří provázaných webů pro adventní charitativní běhy - převzetí rozpracovaného projektu, jeho sjednocení a dotypování, platby přes GP WebPay a žebříčky z dat ze Stravy.

Role
Vývoj · Refaktoring · Integrace
Typ
Nezisková sféra · Web
Stav
V produkci

// Zadání

Tři weby, převzatý a napůl hotový kód

Projekt jsem přebíral rozpracovaný a s hotovým designem - soubor tří provázaných webů (behadventaka.cz, adventnibehani.cz, adventaci.cz) pro adventní charitativní běhy. Kód se opíral o spoustu `any`, měl minimum serverové logiky a chyběl mu jednotný základ.

Prvním úkolem bylo dát to do pořádku: sjednotit přístup napříč všemi třemi weby, vše dotypovat a přesunout maximum logiky z klienta na server.

// Architektura

Typovaný základ a GraphQL nad databází

Datovou vrstvu jsem postavil na GraphQL s vlastními resolvery nad databází, takže všechny tři weby čerpají ze stejného typovaného API. Odstranění `any` a převod logiky na server přinesly předvídatelnost - méně chyb za běhu a údržba tří webů z jednoho místa.

  • Sjednocení tří webů na společný typovaný základ
  • GraphQL API s resolvery nad databází
  • Přesun logiky z klienta na server, konec `any`

// Platby & data

GP WebPay v Nodu a žebříčky ze Stravy

Platební bránu GP WebPay jsem implementoval podle oficiální PHP dokumentace - podpisy, callbacky i celý transakční tok jsem přepsal do Node.js. Na webech fungují darovací i platební formuláře.

Výsledky běžců se tahají přes napojení na Stravu a agregují do živých žebříčků.

  • GP WebPay v Node.js podle PHP dokumentace - podpisy, callbacky, transakce
  • Darovací a platební formuláře
  • Integrace na Stravu a agregace dat do žebříčků

// Backoffice & provoz

Strapi pro obsah a vyladěný provoz

K webům patří rozsáhlý backoffice ve Strapi, kde vzniká veškerý obsah a články. Navrhl jsem kolekce, modely a jejich vazby tak, aby redaktoři už jen doplňovali obsah - bez zásahu vývojáře.

Napříč všemi weby jsem řešil cachování stránek, optimalizaci obrázků a observabilitu přes Sentry.

  • Strapi: návrh kolekcí, modelů a vazeb pro samoobslužnou správu obsahu
  • Cachování stránek a optimalizace obrázků pro rychlé načtení
  • Observabilita a hlídání chyb přes Sentry

// Stack

Next.jsTypeScriptGraphQLNode.jsStrapiGP WebPayPostgreSQLStrava APISentry
Napsat na WhatsApp