BANM-in 32 komandalı ixtisaslararası futzal çempionatı üçün ikidilli turnir platforması.
- Rol
- Full-stack developer
- Növ
- Canlı sayt
- İl
- 2026
- Linklər
- Canlı sayt ↗



Problem
32 komandanın iştirak etdiyi çempionatın matçlarını, nəticələrini və statistikasını bir yerdə göstərmək lazım idi.
Həll
Turnirin bütün məlumatlarını göstərən ikidilli platforma: matç cədvəli, nəticələr, turnir sxemi, komandalar və bombardirlər.
Nə etdim
- Admin hesabı zalda telefondan yazır, nəticə açıq olan bütün səhifələrdə saniyələr içində, yeniləmədən görünür (Sanity Live).
- Özü yenilənən turnir sxemi yazdım: yalnız ilk turun komandaları saxlanılır, qalanı nəticələrdən hesablanır. Köhnə nəticə düzəldiləndə ondan asılı nəticələr admin yenidən təsdiqləyənə qədər gizlənir.
- Admin panelini telefon üçün uyğunlaşdırdım: "Bugünkü matçlar" siyahısı, hesab üçün böyük + və - düymələri, bombardir adları üçün avtomatik təkliflər.
- Azarkeş proqnozları, təqvimə əlavə (.ics, Google Calendar) və hər matç üçün WhatsApp və Telegram-da paylaşılan nəticə şəkli əlavə etdim.
- Turnir məntiqini framework-dən ayrı modulda saxladım və 80-dən çox Vitest testi ilə örtdüm.
- Sərt CSP, HSTS, Turnstile və rate limit qurdum. Əlaqə mesajları Sanity-də yalnız adminlərin görə biləcəyi şəkildə saxlanılır, ingilis versiyasında isə adlar beynəlxalq yazılışla göstərilir.
Necə qurulub
AzarkeşlərAZ / EN
AdminZalda, telefondan
Next.jsSxem, proqnozlar
Sanity StudioSaytın içində
SanityContent Lake, Live API
Admin hesabı yazır və dərc edir. Açıq olan bütün səhifələr saniyələr içində, yeniləmədən dəyişir.
Texnologiyalar
- Next.js
- React
- TypeScript
- Sanity
- Tailwind CSS
- GSAP
- next-intl
- Vitest
- Vercel