The native SwiftUI iPhone app for SG Tutors — Singapore's home-tutor directory. Search verified tutors by subject, level, region and gender, read parent reviews, and send an enquiry straight to a tutor — no account, no login, no tracking.
Companion to the SG Tutors web platform and the Android app. The app reads live data from the production REST API — no mock data, no local backend.
| Tutors | Featured | Tutor Profile | Enquiry | Feedback | About |
|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Tutor search — full-text search plus Subject / Level / Region / Gender filters, served live from the API
- Featured tab — a dedicated tab listing hand-picked, highly-rated tutors from
/tutors/featured - Tutor profiles — ✓ Verified and ★ Featured badges, star ratings, qualifications, experience, students taught, and parent reviews
- Direct enquiry — send your message to a tutor from the app; the tutor replies to you directly. No sign-in required
- Feedback via WhatsApp — house-style Feedback tab that opens wa.me/6588666375
- About — developer info, website and privacy policy links, app version
- Privacy by design — tutors' NRIC, address, mobile and email are never exposed; only a coarse region is shown
| Area | Choice |
|---|---|
| UI | SwiftUI (iOS 17+), TabView (Tutors · Featured · Feedback · About), portrait iPhone |
| Networking | async/await URLSession, Codable, typed APIError |
| Theming | Theme enum — single source of colour truth; fixed white theme (indigo #4f46e5 accent, hairline-bordered cards, UIUserInterfaceStyle: Light) |
| Project gen | XcodeGen (project.yml) |
| Backend | SG Tutors REST API — https://sgtutors.tertiaryinfotech.com/api |
| Privacy | No tracking, no analytics; enquiry details used solely for app functionality (PrivacyInfo.xcprivacy) |
SGTutorsApp/
├── SGTutorsApp.swift # @main entry
├── Theme.swift # white theme tokens + cardSurface/whitePage modifiers
├── APIClient.swift # async client — read-only endpoints + enquiry POST
├── Models.swift # Codable models
├── PrivacyInfo.xcprivacy
└── Views/
├── MainTabView.swift # 4 tabs
├── TutorsHomeView.swift # search + filters + results
├── FeaturedView.swift # featured tutors tab
├── TutorDetailView.swift # profile, badges, reviews
├── EnquiryView.swift # enquiry form
├── FeedbackView.swift # WhatsApp feedback (house style)
└── AboutView.swift # developer + version info
brew install xcodegen # once
xcodegen generate # project.yml → SGTutors.xcodeproj
xcodebuild -project SGTutors.xcodeproj -scheme SGTutors \
-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 17 Pro Max' buildOr open SGTutors.xcodeproj in Xcode and hit Run. The app reads live data from the production API.
- Live on the App Store — apps.apple.com/sg/app/tertiary-sgtutors/id6787160558 (Singapore storefront)
- Current version 1.0.1 (build 2) · Bundle ID
com.alfredang.sgtutors· TeamGU9WTSTX9M· iPhone-only, iOS 17+ - Archive/export uses manual signing ("Apple Distribution" + "SGTutors App Store Local" profile, see
ExportOptions.plist) - App Store Connect automation in scripts/ (JWT minting, metadata, submission)
Signing material and App Store Connect credentials are read from a local
.env, which is not committed. Seescripts/asc_submit.pyfor the expected variables.
Powered by Tertiary Infotech Academy Pte Ltd





