Backend
UniClub
iOS App + Backend · Booking Platform
Marketplace for booking children’s classes with iOS app and Django backend.
- iOS App + Backend
- Booking Platform
- UIKit
- Alamofire
- Django
- Celery



Summary
Two-sided marketplace for kids’ study and sports activities in Nur-Sultan: discovery, filtering, class details, schedule selection, and request-based booking. I built the iOS app and mobile backend from scratch and supported the website booking experience. The product covered both parent-facing browsing/booking and partner onboarding and operations through admin tooling. Key highlights:
- iOS app: filter-first discovery, schedule picker, cart, and booking request forms
- Mobile backend: DRF + Celery, plus Telegram bot for collecting course reviews
- Web backend: phone auth, subscriptions, lesson generation, booking, and partner workflows
Quick facts
- Role: iOS Developer + Backend Developer (mobile stack). Also supported the main website booking flow.
- Timeframe: Not specified
- Platform: iOS + Web + Backend APIs
- Status: Discontinued (app removed from the App Store)
- Team: Solo for iOS + mobile backend (supported a separate web team/product)
Problem
- Needed a complete marketplace flow: discovery → schedule → booking request, plus partner acquisition.
- Required strong filter dimensions (age, activity type, location, time of day) with fast UX on mobile.
- Had to support operational constraints: capacity, schedules, verified reviews, and async notifications.
Solution
I delivered an end-to-end mobile stack: a UIKit iOS client with reactive bindings and a Django REST backend for filters, courses, and application submissions. The backend also integrated a Telegram bot for collecting reviews and shipped Swagger/Redoc docs for API consumers. The broader platform included a separate web backend with partner dashboards, scheduling, subscriptions, and attendance tracking, which I supported for booking-related needs.
- Focused on a predictable booking pipeline and clean admin-driven content management
Architecture
- iOS: UIKit + SnapKit UI, RxSwift bindings, shared cart/filters state propagated via subjects
- iOS networking: router-based API layer with Codable decoding and paginated lists
- Mobile backend: Django REST Framework apps (filters, courses, applications), Celery + RabbitMQ jobs
- Telegram bot: webhook endpoint → TeleBot flow → persisted reviews in DB
- Web backend: modular Django apps for clubs/courses/lessons/subscriptions/bookings with JWT auth
- API docs: Swagger + Redoc for backend endpoints and partner/client workflows
Tech stack
- iOS: Swift, UIKit, RxSwift, SnapKit
- Architecture: MVVM-lite with shared state, Router-based networking, Codable models
- Backend/Infra: Django, DRF, Celery, RabbitMQ, PostgreSQL
- Tooling: Docker, Swagger/Redoc (drf-yasg), Firebase, Kingfisher, Lottie
Hard problems solved
- Designed a filter model that supports many dimensions without breaking list pagination and UX
- Built schedule selection that maps weekday/time picks into stable booking payloads
- Implemented request-based checkout (not instant payment) with reliable success states and tracking IDs
- Kept cross-screen state consistent (filters, cart, selected lesson times) via reactive streams
- Shipped a Telegram bot review flow that enforces structure and persists results via webhook processing
- Orchestrated async tasks (emails/notifications) safely with Celery and transaction boundaries
Impact / Results
- Delivered iOS app + mobile backend from scratch with a complete discovery-to-request flow
- Enabled lead capture and partner onboarding via dedicated forms and admin-managed content
- Provided backend documentation and operational tooling to support iteration and support workflows