Darbi05 / 05
Rīkotāja divdesmit gadu vēsture pārcēlās no Drupal tēmas, kas joprojām piegādāja IE6 stila lapas: trīs valodas divdesmit dienu laikā, un 2026. gada oktobrī tā joprojām tiek papildināta ar frontendu, kas pēdējo reizi mainīts 2024. gada februārī.
artforte.lv

- Klients
- ART Forte, Latvijas producentu kompānija
- Loma
- Izstrāde: vietne, satura modelis, CMS
- Periods
- Būvēts 2023. gada janvārī; frontends pēdējo reizi mainīts 2024. gada februārī
- Tehnoloģijas
- Next.js, TypeScript, Strapi 4, PostgreSQL, S3, Vercel, Heroku
- Tiešsaistē
- artforte.lv
ART Forte ved uz Latviju starptautisku operu, baletu, teātri un koncertus, pēc pašu teiktā, kopš 2005. gada. Arhīvā ir Anna Netrebko ar savu pirmo koncertu Baltijā un José Carreras 2008. gadā.
2022. gada decembrī šī vēsture dzīvoja Drupal vietnē, kas joprojām piegādāja style.ie6.css, divās valodās. Uzņēmumam, kas strādā ar starptautiskiem producentiem, vajag tam pretējo.
Trīs darbi: pateikt apmeklētājiem, kas notiek, un novirzīt tos uz pareizo biļešu lapu viņu valodā; parādīt divdesmit gadu iestudējumus kā pārlūkojamu vēsturi; un nodot katru vietnes vārdu, līdz pat pogu uzrakstiem, klienta rokās.
- 01
Publiska vietne trīs valodās
Latviešu, angļu un krievu: katrā vienpadsmit maršruti. Saraksti ir statiski ar piecu minūšu reģenerācijas logu, detaļu lapas tiek renderētas pēc pieprasījuma.
- 02
Satura modelis, nevis pielāgots administrēšanas panelis
Seši Strapi satura tipi, 85 lauki, no tiem 67 lokalizēti. Pats administrēšanas panelis apzināti ir standarta: darbs ir modelī. Katrs uzraksts ir CMS lauks, tāpēc pogu var pārformulēt trīs valodās bez izvietošanas.
- 03
Pasākums, kas pats aiziet arhīvā
Gaidāmie pasākumi un arhīvs ir viena tabula, sadalīta pēc datuma. Dienu pēc izrādes tā pārceļas uz arhīvu, un vieta, datums, cena un poga Buy Ticket no tās lapas pazūd. Nevienam nekas nav jādara.
- 04
Biļešu saites katrā valodā
Katras valodas ieraksts ved uz pareizo lapu pie biļešu tirgotāja. Bez apmaksas lapas, bez karšu datiem, bez krājumu sinhronizācijas: tirgotājs turpina darīt savu darbu. Cena par to — piltuve pēc klikšķa nav redzama.
- 05
Divdesmit gadi, ko var pārlūkot
88 ieraksti latviešu valodā, 86 krievu, 82 angļu, no 2006. līdz 2026. gadam. Tulkojumi katram ierakstam nav obligāti, tāpēc izrāde var pastāvēt vienā valodā, bet ne citā, un režģī nerodas caurums.
Kā tas uzbūvēts
Redaktori
- Strapitrīs valodas, 85 lauki
- S3afišas un fotogrāfijas
Dati
- PostgreSQL
- Viena Event tabulasadalīta pēc datuma
Vietne
- Next.js uz Vercel
- Reģenerācijaik pēc 5 minūtēm
Apmeklētājs
- Programma un arhīvs
- Biļešu tirgotājsdziļā saite katrā valodā


Tas, kas portfolio parasti nenonāk. Tas viss notika patiesībā, un tas viss ir komitu vēsturē.
Kļūme 01
Viens attēls, četri vārti, 30 komiti piecās dienās
- Simptoms
- CMS augšupielādētie attēli ne vienmēr parādījās. Šeit piecās dienās aizgāja 22 % no visiem projekta komitiem, ar nosaukumiem „Fix Image url”, „1”, „2”, „3”, „final”, nākamajā rītā atcelšana, „4”, „Hardcode domain url”.
- Cēlonis
- Vienas kļūdas nebija. Fotogrāfija iet cauri četriem neatkarīgi konfigurētiem vārtiem, un katri izgāzās savā veidā: paša administrēšanas paneļa drošības politika, objekta tiesības S3, URL forma (frontends pielika hosta prefiksu URL, kas jau bija absolūti) un Next attēlu atļauto saraksts. Deviņas stundas viena konfigurācija lasīja
AWS_BUCKET, bet otraAWS_BUCKET_NAME. Šāds lasījums nāk no diff; paši komiti neko nesaka. - Risinājums
- Katri vārti salaboti pēc kārtas, pēc tam
ImageWithFallback, lai neizdevies attēls rāda izstrādātu aizstājēju, nevis salauztu ikonu. Headless steki pārceļ kļūmes uz šuvēm: katra daļa viena pati strādāja, un neviens konfigurācijas fails neatbildēja par „fotogrāfija parādās”.
Kļūme 02
Analītikas ielāps, kas atvienoja React
- Simptoms
- Komits ar nosaukumu „Fix ui”, 2023. gada aprīlis. Viss tā diff ir viena elementa atgriešana failā
_document.tsx. - Cēlonis
- Iepriekšējā vakarā, pievienojot Google Tag Manager,
<NextScript/>tika izņemts kopā ar fragmentu, ko tas aizstāja. Šis elements nes hidratācijas datus, tāpēc React nekad nevarēja pārņemt servera HTML: burgera izvēlne, valodu izvēle, Load More un jaunumu vēstules forma būtu pilnīgi nedzīvas. Simptoms teica UI, bet cēlonis bija mārketinga rīki. - Risinājums
- Viena rinda, atjaunota pēc 19 stundām 44 minūtēm. Kļūme būtu bijusi neglīta, nevis melna: lapas ir iepriekš renderētas, tāpēc saturs un saites izdzīvo arī bez JavaScript. Neviens tests to nevarēja noķert, jo testu nebija.
Kļūme 03
Arhīvs, kas gadu rādīja 2008. gadu
- Simptoms
- Sākumlapas arhīva bloks sākās ar vecākajām izrādēm, nevis jaunākajām. Wayback Machine to ir saglabājis: četras 2008. gada izrādes 2023. gada februārī, tās pašas četras jūlijā, dienu pēc liela koncerta.
- Cēlonis
sort[0]=datepēc noklusējuma kārto augošā secībā. Tas tika uzrakstīts vienpadsmit dienas pirms vēsturisko ierakstu ievades, kad secība nebija redzama. Un tas izdzīvoja, jo izskatās ticami: lielu vārdu siena no 2008. gada izskatās pēc apzinātas izlases, nevis kļūdas.- Risinājums
date:desc, pēc 372 dienām. Kļūdām datu smagās vietnēs vajag, lai dati kļūtu redzami un lai uz tiem paskatītos cilvēks, kas tos pazīst.
Kļūme 04
Tulkojums ir rinda, nevis kolonna
- Simptoms
- Valodu izvēle nevarēja nonākt pie pareizā detaļu lapas tulkojuma. Ziņās un arhīvā, pārslēdzot valodu, uz ekrāna palika iepriekšējās valodas kartītes.
- Cēlonis
- Divi slazdi. Strapi katram tulkojumam piešķir savu skaitlisko id, tāpēc viena un tā pati izrāde ir 398, 399 un 400. Un Next, mainoties lokālei, lapu nepārmontē, tāpēc
useStatepatur vecās valodas sarakstu arī pēc tam, kad props ir mainījušies. - Risinājums
- Izvēle nolasa ieraksta lokalizācijas un pārraksta id uz radniecīgā ieraksta id. Saraksti renderēšanas laikā salīdzina lokāli un paši atiestatās. Tas pats nepārmontēšanas slazds atkal uzpeldēja tieši šajā vietnē, pirmajā ekrānā un čatā.
Kļūme 05
Pēdējais komits bija klienta Instagram darbplūsma
- Simptoms
- Arhīva kartītes bija būvētas ainavas formātā. Augšupielādētie attēli klusi bija pārgājuši no 3861×2574 uz 1080×1920, un failu nosaukumi to arī teica.
- Cēlonis
- Komanda bija sākusi veidot vienu vertikālu afišu Instagram Stories un lietot to visur. Neviens to nelēma; materiāli vienkārši mainījās zem dizaina.
- Risinājums
- Jauna kartītes attiecība 2024. gada februārī, pēdējās koda izmaiņas, kādas frontends ir saņēmis. Pēdējais, kas kodam bija vajadzīgs, nebija funkcija, bet gan atbilstība tam, kā darbinieki patiesībā strādā.
- komiti 20 dienu būvēšanā2023. gada 7.–26. janvāris, 17 atsevišķās dienās
- arhīva ieraksti LV, RU, ENsaskaitīts dzīvajā vietnē, 2026. gada 30. oktobris; no 2006. līdz 2026. gadam
- valodas, agrāk 2vecajā vietnē bija latviešu un krievu
- CMS lauki lokalizētiseši satura tipi
- dienas arhīvs rādīja 2008. gaduWayback kopijas pret labojuma komitu
- mēnesis starp pēdējo frontenda komitu un jaunāko ierakstu2024. gada februāris – 2026. gada 1. oktobris
Projekta pulss
Katrs komits projekta repozitorijos uz vienas līnijas. Jo augstāks stabiņš, jo karstāks laiks.
- Karkass ar Firebase plānu, kas izturēja mēnesi
- Būvēšana sākas: 114 komiti 20 dienās
- „Fix ui”: Tag Manager ielāps
- Arhīvs iemācās kārtot
- Pēdējais frontenda komits: afišas attiecība
- CMS pārceļas pie cita mitinātāja bez nevienas frontenda izmaiņas
Satura vietne sevi attaisno ar to, cik ilgi tā darbojas bez jums. Nododiet vārdus klienta rokās, atstājiet pasākumu pārcelšanu arhīvā datu modeļa ziņā, un tā strādā vēl gadiem pēc pēdējā komita. Ja jūsu vietnei katrai izmaiņai vajag izstrādātāju, šī problēma ir atrisināma.
Vai pajautājiet par to digitālajam prātam