GymTeam
Клубтарды басқару: бір платформа, көп клуб
Fitofan экожүйесінің қызметкерлер жағы: спорт клубтары мүшелерді, сабақтарды, чек-инді, прогресті және төлемдерді жүргізеді, әр клуб өзінің жеке кеңістігінде.
- Рөл
- Senior Full-Stack Engineer
- Кезең
- 2025 – 2026


Контекст
GymTeam — клуб иелері, менеджерлер мен жаттықтырушылар жұмыс істейтін орын; спортшылар мен ата-аналар Fitofan-ды қолданады, ол оларды жүйеге де кіргізеді. Мен оны Fitofan кодтық базасынан жеке өнімге бөліп шығарып, көп бөлігін өзім жасадым.
Міндет
Бір қолданбадан көптеген тәуелсіз клубқа деректерді қатаң оқшаулап қызмет көрсету, клубтар жұмыс істейтін әр нарықта төлем қабылдау және клуб деректерін спортшылар платформасымен нақты уақытта үйлестіріп отыру.
Бүкіл стек бойынша құрылған
- Feature-Sliced Design негізіндегі Next.js 16 админ панелі: 80+ бет, 11 локаль
- NestJS бэкенді: әр домен нысанына жеке модуль, use case-тер, репозиторийлер және валидацияланған DTO-лар; 95 миграция
- Тенант оқшаулауы: guard әр клубты id немесе slug бойынша анықтап, кез келген handler іске қосылмас бұрын мүшелікті тексереді
- Мүшелер, шақырулар мен сынақ сабақтары, күту тізімі бар апталық кестелер, тікелей чек-ин, қатысу, оқу бағдарламасы мен белбеу деңгейлері, келісім құжаттары, үй тапсырмалары, бағалаулар
- Төлемдер: Finix, Stripe, PayPal, Square, Monopay, LiqPay, GCash және Mercado Pago, сонымен қатар қолма-қол ақша мен қарыздар, күнделікті биллинг жоспарлағышы, тіркелгі деректерін AES-256-GCM-мен сақтау
- Fitofan-мен ортақ RabbitMQ контракты: 29 маршруттау кілті, корреляция идентификаторлары бар типтелген конверт, құжатталған топология
- WebSockets арқылы QR кіру, Socket.IO сессия шлюзі, S3-үйлесімді медиа сақтау орны
- CSV және PDF экспорты бар табыс, қатысу және жаттықтырушы аналитикасы
- Fitofan-дағыдай жеткізу конвейері: типтерді тексеру және Jest тексерісі, Docker образы, SSH арқылы деплой
Инженерлік акценттер
- Тенант аумағын сервер қадағалайды, клиент жағына ешқашан сенім артылмайды
- Вебхуктар провайдер және оқиға id бойынша идемпотентті; төлем интенттерінде идемпотенттілік кілттері бар
- Өз тесттері бар арнаулы ESLint ережесі Feature-Sliced қабаттарын тәртіпте ұстайды
- Тіркелу және клуб құру сценарийлері екі өнімге ортақ пакеттерден келеді
Не береді
Әр клуб өзі үшін жасалғандай сезілетін өнім алады, ал инженерия бір кодтық база мен бір деплой күйінде қалады.