
Control Centre
Production & App Store submission checklist
Last checked: 12:44:22
Base44 Auth system active
Email/password, Google, Apple login all handled by Base44 platform
Sign up flow
Join page at /join — handled by platform
Login redirect
redirectToLogin() used throughout
Logout
base44.auth.logout() wired in Profile screen
Delete account page
Available at /mobile/delete-account
Apple Sign In (iOS)
Handled by Base44 OAuth — StoreKit compliant
Google Sign In (Android)
Handled by Base44 OAuth — Play Store compliant
TV Programmes entity
TVProgramme records accessible
Radio Settings entity
RadioSettings accessible
News Articles entity
NewsArticle records accessible
Community Posts entity
CommunityPost records accessible
Events entity
Event records accessible
Advertisements entity
Advertisement records accessible
Competitions entity
RadioCompetition records accessible
Radio stream URL set
RadioKing stream URL configured in RadioSettings
Radio station name set
station_name field set in RadioSettings
Radio auto-reconnect
globalAudio singleton persists across navigation
Offline error state
StreamErrorState shown when all data calls fail
Push notification permission explainer
PermissionExplainer shown before OS prompt
Quiet hours respected
notificationManager.js enforces quiet window
Deep linking from notifications
Notification URLs route to correct screen
Notification categories
TV, Radio, Community, Events, Competitions
Admin routes protected
Admin pages check user.role === 'admin'
No API keys in frontend
All keys stored server-side in Base44 secrets
Upload file validation
uploadValidator.js enforces MIME type and size limits
React error boundary
Add a global ErrorBoundary component to catch runtime errors gracefully
Profile image upload
Base44 UploadFile integration used
Video upload
200MB limit enforced client + server
Admin media upload
AdminShorts, AdminLiveTV, AdminAdvertising
File size limits enforced
10MB images, 200MB video
Permission request flow
Shown contextually, not on first launch
Quiet hours
Configurable 10pm–8am window
Deep link routing
url field in notification data
Category subscriptions
Per-category opt-in in Notification Settings
Privacy Policy page
Available at /mobile/privacy
Terms of Service page
Available at /mobile/terms
Community Rules page
Available at /mobile/community-rules
Delete Account page
Available at /mobile/delete-account
iOS IAP (Apple In-App Purchase)
PremiumUpgradeModal triggers StoreKit via native bridge
Android IAP (Google Play Billing)
PremiumUpgradeModal triggers Play Billing via native bridge
No Stripe in native app
Stripe only used for web advertiser bookings, not in mobile IAP
Permission rationale shown
PermissionExplainer shown before Notifications OS prompt
App name set
'Channel ONE Africa' — confirm in Xcode project target
App description written
Ready — see app store metadata below
Bundle / Package ID
Set com.channelone.africa in Xcode + build.gradle
App icon (all sizes)
Generate 20×20 → 1024×1024 from logo using Xcode asset catalog or makeappicon.com
App Store screenshots
Capture iPhone 6.5", 5.5", iPad 12.9" — use simulator or real device
Privacy manifest (iOS 17+)
Add PrivacyInfo.xcprivacy to Xcode target. Required API reasons: NSUserDefaults, NSFileManager
Copy this directly into App Store Connect and Google Play Console
Short Description (80 chars):
Live TV, radio, breaking news and community — Channel ONE Africa.
Full Description:
Channel ONE Africa brings South Africa's premium broadcaster straight to your screen. WATCH & LISTEN • Live TV streaming across all devices • Channel ONE Radio — live 24/7 • Original series, interviews and exclusive shows • Podcast library updated daily STAY INFORMED • Breaking news from across Africa • Live event coverage • Celebrity and entertainment news COMMUNITY • Join discussions, polls and competitions • React and share with millions of Channel ONE members GO PREMIUM Subscribe for ad-free viewing, exclusive content and VIP event access. Real People. Real Stories. Real Impact.
Keywords (iOS — comma separated):
south africa,live tv,radio,news,channel one,africa,streaming,broadcast,entertainment,podcast
Only request these — nothing else
Push Notifications
iOS + AndroidBreaking news, live broadcast alerts and competition results
Camera (optional)
iOS + AndroidCommunity profile photo — only requested if user taps Upload Photo
Photo Library (optional)
iOS + AndroidProfile image and community post images
Background Audio
iOS + AndroidRadio continues playing when app is backgrounded
Network Access
iOS + AndroidStreaming live TV, radio and loading content
Microphone
NOT REQUIREDApp does not record audio — do not request
Location
NOT REQUIREDLocation-based ad targeting uses IP-based geolocation — no GPS required