# Pre-Submission Checklist for BaoLife

Complete this checklist before submitting to the App Store to ensure a smooth review process.

---

## Quick Overview

**Estimated Time:** 2-4 hours
**Goal:** Verify all submission requirements are met
**Result:** Confident, ready-to-submit app

---

## 1. Technical Requirements

### Code & Build

- [ ] **App builds successfully** without errors
- [ ] **No compiler warnings** (or all warnings addressed)
- [ ] **Correct bundle ID** (com.baolife.app)
- [ ] **Version number set** (1.0.0 for launch)
- [ ] **Build number incremented** from previous uploads
- [ ] **Code signing configured** with distribution certificate
- [ ] **App icon set** in Xcode (all sizes)
- [ ] **Launch screen configured** and displays correctly
- [ ] **No test/debug code** in production build
- [ ] **No console logging** in production build
- [ ] **Archive validated** in Xcode without errors

### Performance

- [ ] **App launches in <3 seconds** on oldest supported device
- [ ] **Smooth 60 FPS** during normal gameplay
- [ ] **No memory leaks** (tested with Instruments)
- [ ] **Memory usage <200 MB** during typical use
- [ ] **Battery drain acceptable** (<5% per hour of gameplay)
- [ ] **Network requests complete** within 10 seconds
- [ ] **Handles poor connectivity** gracefully
- [ ] **No UI freezing** or unresponsive interactions

### Stability

- [ ] **No crashes** in 30 minutes of continuous use
- [ ] **Crash rate <0.1%** from TestFlight data
- [ ] **All features tested** and working
- [ ] **Edge cases handled** (no internet, low battery, etc.)
- [ ] **State restoration works** (app resume, backgrounding)
- [ ] **Data persists** correctly between sessions
- [ ] **Handles interruptions** (calls, notifications)

### Device Compatibility

- [ ] **Tested on iPhone 8** (or oldest supported device)
- [ ] **Tested on iPhone 15 Pro Max** (latest device)
- [ ] **Tested on iPad** (if supported)
- [ ] **Portrait orientation** works correctly
- [ ] **Landscape orientation** disabled (if not supported)
- [ ] **Safe area insets** respected (notch, home indicator)
- [ ] **Dynamic Type** respects user's text size settings
- [ ] **Dark Mode** works correctly (or disabled)

### iOS Version Support

- [ ] **Minimum iOS version** set appropriately (iOS 14+)
- [ ] **Tested on minimum iOS version**
- [ ] **Tested on latest iOS version** (iOS 17+)
- [ ] **No deprecated APIs** throwing warnings
- [ ] **API usage compatible** with minimum iOS version

---

## 2. App Store Connect

### App Information

- [ ] **App name entered** (BaoLife - Life Simulator)
- [ ] **Subtitle entered** (Live a lifetime in your pocket)
- [ ] **Primary category selected** (Games > Simulation)
- [ ] **Secondary category selected** (Games > Role Playing)
- [ ] **Privacy policy URL working** (https://baolife.app/privacy)
- [ ] **Privacy policy accessible** from any browser
- [ ] **Privacy policy complete** and accurate
- [ ] **Terms of service URL working** (https://baolife.app/terms)
- [ ] **Support URL working** (https://baolife.app/support)
- [ ] **Support page has FAQs** and contact info
- [ ] **Marketing URL set** (optional, https://baolife.app)
- [ ] **Age rating completed** (12+)
- [ ] **Age rating accurate** for content
- [ ] **Copyright information entered** (2025 BaoLife)

### Version Information

- [ ] **App description written** (4000 char max)
- [ ] **Description proofread** (no typos)
- [ ] **Description compelling** and clear
- [ ] **Keywords entered** (100 char max, no spaces after commas)
- [ ] **Keywords optimized** for search
- [ ] **Promotional text entered** (170 char max)
- [ ] **Promotional text engaging** with call to action
- [ ] **What's New entered** for version 1.0
- [ ] **What's New formatted** with bullets and emojis
- [ ] **Screenshots uploaded** for 6.7" display
- [ ] **Screenshots uploaded** for 6.5" display
- [ ] **Screenshots uploaded** for 5.5" display
- [ ] **Screenshots in order** (best first)
- [ ] **Screenshots show key features**
- [ ] **Screenshots have captions** (if desired)
- [ ] **App icon uploaded** (1024x1024 PNG)
- [ ] **App icon high quality** (no pixelation)
- [ ] **App icon no alpha channel** (fully opaque)
- [ ] **App icon no rounded corners** (Apple adds them)
- [ ] **App preview video uploaded** (optional)

### Pricing & Availability

- [ ] **Price set to Free** (or appropriate tier)
- [ ] **All territories selected** (or specific regions)
- [ ] **Pre-order disabled** (for initial launch)
- [ ] **Release option selected** (automatic or manual)

### App Privacy

- [ ] **Privacy questionnaire completed**
- [ ] **Data types accurately listed**
- [ ] **Data usage purposes correct**
- [ ] **Third-party data sharing disclosed** (OpenAI, Firebase)
- [ ] **Data deletion process described**
- [ ] **Privacy information published**

### In-App Purchases

- [ ] **Diamond pack 1 created** (com.baolife.app.diamond1)
- [ ] **Diamond pack 2 created** (com.baolife.app.diamond2)
- [ ] **Diamond pack 3 created** (com.baolife.app.diamond3)
- [ ] **IAP names clear** and descriptive
- [ ] **IAP descriptions detailed**
- [ ] **IAP prices set** correctly
- [ ] **IAP screenshots uploaded** (optional)
- [ ] **IAP status: Ready to Submit**
- [ ] **Subscription created** (if applicable)
- [ ] **Subscription group configured** (if applicable)

### App Review Information

- [ ] **Contact name entered**
- [ ] **Contact phone entered** (reachable during review)
- [ ] **Contact email entered** (support@baolife.app)
- [ ] **Sign-in required: Yes** selected
- [ ] **Demo account created** and tested
- [ ] **Demo account username entered** (reviewer@baolife.app)
- [ ] **Demo account password entered** (ReviewPass2025!)
- [ ] **Demo account works** (tested by you)
- [ ] **Demo account has content** (pre-populated character)
- [ ] **Review notes written** with clear instructions
- [ ] **Review notes mention AI** content filtering
- [ ] **Review notes provide context** for app purpose
- [ ] **Notes mention IAP testing** instructions
- [ ] **Available during review** (next 48-72 hours)

### Build

- [ ] **Build uploaded** to App Store Connect
- [ ] **Build processed** (shows in list)
- [ ] **Build selected** for version
- [ ] **Export compliance answered** (No - standard encryption only)
- [ ] **Build version matches** version info (1.0.0)
- [ ] **No missing compliance** warnings

---

## 3. Content & Legal

### Privacy & Terms

- [ ] **Privacy policy complete**
- [ ] **Privacy policy matches app behavior**
- [ ] **Privacy policy mentions third parties** (OpenAI, Firebase)
- [ ] **Terms of service complete**
- [ ] **Terms cover acceptable use**
- [ ] **Terms cover IAP policies**
- [ ] **Terms cover account termination**
- [ ] **Support page has FAQs**
- [ ] **Support page has contact email**
- [ ] **Support page has refund policy**

### Content Rating

- [ ] **No graphic violence**
- [ ] **No sexual content**
- [ ] **No profanity** (or filtered appropriately)
- [ ] **AI content filtered** for inappropriate responses
- [ ] **Character names validated** against offensive terms
- [ ] **Age-appropriate content** (12+)
- [ ] **COPPA compliant** (not directed at children under 13)

### Intellectual Property

- [ ] **No copyrighted content** without permission
- [ ] **No trademarked names** without permission
- [ ] **Original artwork** (or licensed)
- [ ] **Music/sounds licensed** (or original/free)
- [ ] **No third-party brands** depicted without permission
- [ ] **OpenAI terms followed** for API usage

---

## 4. Functionality

### Core Features

- [ ] **Character creation works** smoothly
- [ ] **Tutorial completes** without issues
- [ ] **AI conversations generate** correctly
- [ ] **AI responses appropriate** and filtered
- [ ] **Time progression works**
- [ ] **Energy system balanced**
- [ ] **Activities selectable** and complete correctly
- [ ] **Relationships develop** based on interactions
- [ ] **Dating system works**
- [ ] **Career progression functional**
- [ ] **Achievements unlock** properly
- [ ] **Statistics track** accurately
- [ ] **Character aging works**
- [ ] **Death/restart flow** works

### User Account

- [ ] **Account creation works**
- [ ] **Login works**
- [ ] **Logout works**
- [ ] **Password reset works** (if applicable)
- [ ] **Account deletion works** (GDPR)
- [ ] **Data export works** (GDPR)
- [ ] **Progress saves** to server
- [ ] **Progress loads** correctly
- [ ] **Cloud sync works** across devices (if applicable)

### In-App Purchases

- [ ] **Store displays** correctly
- [ ] **Purchase flow initiates** properly
- [ ] **Sandbox purchases work** (tested)
- [ ] **Purchase completes** successfully
- [ ] **Diamonds credited** to account
- [ ] **Receipt validated** by server
- [ ] **Restore purchases works**
- [ ] **Multiple purchases work**
- [ ] **Purchase states clear** (pending, failed, success)
- [ ] **No duplicate purchases** possible

### Notifications

- [ ] **Push notifications registered** (if using)
- [ ] **Notifications request permission** appropriately
- [ ] **Notifications delivered** successfully
- [ ] **Notification taps open** app correctly
- [ ] **Notification settings respected**
- [ ] **Can disable notifications** in app or iOS settings

### Error Handling

- [ ] **No internet shows message** (not crash)
- [ ] **Server errors handled** gracefully
- [ ] **Failed requests retryable**
- [ ] **Invalid inputs validated** with clear messages
- [ ] **Edge cases handled** (0 energy, max stats, etc.)
- [ ] **Empty states shown** (no relationships, no activities)

---

## 5. User Experience

### Onboarding

- [ ] **First launch clear** and welcoming
- [ ] **Tutorial skippable** (or very short)
- [ ] **Tutorial teaches** core mechanics
- [ ] **Permissions requested** at appropriate time
- [ ] **Value of permissions explained**
- [ ] **Onboarding completion** tracked

### UI/UX

- [ ] **Navigation intuitive**
- [ ] **Buttons clearly labeled**
- [ ] **Actions have feedback** (haptics, animations)
- [ ] **Loading states shown** (spinners, progress)
- [ ] **Empty states shown** (no data yet)
- [ ] **Error messages helpful** (not technical jargon)
- [ ] **Confirmation dialogs** for destructive actions
- [ ] **Text readable** (contrast, size)
- [ ] **Touch targets >44x44 pt** (Apple HIG)
- [ ] **No UI overlapping** or clipping
- [ ] **Consistent design** throughout app

### Accessibility

- [ ] **VoiceOver labels set** for all buttons/images
- [ ] **Dynamic Type supported** (or reasonable fallback)
- [ ] **Color not sole indicator** (consider color-blind users)
- [ ] **Sufficient contrast** ratios (WCAG AA)
- [ ] **Animations respect** reduced motion setting

---

## 6. Backend & Infrastructure

### Server

- [ ] **Production server live** (wss://lichun.app/wss/)
- [ ] **Server stable** (no crashes)
- [ ] **Server handles load** (tested with TestFlight)
- [ ] **Database optimized** (no slow queries)
- [ ] **WebSocket connections stable**
- [ ] **Automatic reconnection works**
- [ ] **Server errors logged** for debugging
- [ ] **Monitoring in place** (uptime, errors)

### API Integration

- [ ] **OpenAI API key valid**
- [ ] **OpenAI rate limits sufficient**
- [ ] **OpenAI content filtering active**
- [ ] **Firebase configured** (if using)
- [ ] **Analytics tracking** properly
- [ ] **Crash reporting working** (Crashlytics, etc.)

### Data & Security

- [ ] **HTTPS/WSS only** (no unencrypted connections)
- [ ] **User data encrypted** in transit
- [ ] **User data encrypted** at rest
- [ ] **Passwords hashed** (not plain text)
- [ ] **Session tokens secure**
- [ ] **SQL injection protected** (parameterized queries)
- [ ] **XSS protected** (input validation)
- [ ] **GDPR compliant** (data export/deletion)
- [ ] **Backup system in place**

---

## 7. Documentation & Support

### Internal Documentation

- [ ] **README up to date**
- [ ] **Build instructions documented**
- [ ] **Environment variables documented**
- [ ] **API endpoints documented**
- [ ] **Database schema documented**

### User-Facing

- [ ] **FAQ page complete** (common questions)
- [ ] **Support email monitored** (support@baolife.app)
- [ ] **Response process defined** (SLA, templates)
- [ ] **Refund policy clear** (through Apple)
- [ ] **Privacy policy accessible**
- [ ] **Terms of service accessible**

---

## 8. Marketing & Launch Prep

### App Store Optimization

- [ ] **App name optimized** for search
- [ ] **Subtitle compelling** and relevant
- [ ] **Keywords researched** and strategic
- [ ] **Description persuasive** and clear
- [ ] **Screenshots tell story** of app value
- [ ] **Icon eye-catching** and recognizable

### Launch Planning

- [ ] **Launch date selected**
- [ ] **Manual release chosen** (for coordinated launch)
- [ ] **Social media prepared** (Twitter, Reddit, etc.)
- [ ] **Press kit ready** (screenshots, description, etc.)
- [ ] **Landing page live** (if applicable)
- [ ] **Email list prepared** (if applicable)
- [ ] **App Store link ready** (from App Store Connect)

### Post-Launch

- [ ] **Monitoring plan** (crash rate, reviews, support)
- [ ] **Update schedule** planned (bug fixes, features)
- [ ] **Response templates** for reviews
- [ ] **Feedback collection** process defined
- [ ] **Analytics dashboard** setup (App Store Connect)

---

## 9. Team Readiness

### Availability

- [ ] **You're available** for next 48-72 hours (review period)
- [ ] **Support team ready** to respond to issues
- [ ] **Developer available** for emergency fixes
- [ ] **Backend monitored** during review

### Communication

- [ ] **Phone available** (App Store Connect contact)
- [ ] **Email monitored** (support and personal)
- [ ] **Response templates** prepared
- [ ] **Escalation process** defined (if issue arises)

---

## 10. Final Review

### Test Again

- [ ] **Full playthrough** from fresh install
- [ ] **Test on real device** (not simulator)
- [ ] **Test all features** one more time
- [ ] **Test purchase flow** in sandbox
- [ ] **Test with demo account** (same as reviewer)

### Double-Check Metadata

- [ ] **Read description aloud** (catch typos)
- [ ] **View screenshots** in App Store Connect preview
- [ ] **Check all URLs** open in browser
- [ ] **Verify IAP prices** in all currencies
- [ ] **Review age rating** questionnaire answers

### Mental Checklist

- [ ] **Confident in quality** of app
- [ ] **Proud to launch** this version
- [ ] **Ready for feedback** (positive and negative)
- [ ] **Prepared for support** requests
- [ ] **Excited to share** with users

---

## Submission

### Final Steps

1. [ ] **Save all changes** in App Store Connect
2. [ ] **Review summary page** one last time
3. [ ] **Click "Submit for Review"**
4. [ ] **Answer additional questions** (IDFA, export compliance)
5. [ ] **Confirm submission**
6. [ ] **Receive confirmation email**

### After Submission

- [ ] **Status: "Waiting for Review"** confirmed
- [ ] **Notification preferences set** (email alerts)
- [ ] **Calendar marked** (check status in 24-48 hours)
- [ ] **Team notified** of submission
- [ ] **Next steps planned** (if approved or rejected)

---

## Common Rejection Reasons

Before submitting, ensure you've addressed these common rejection reasons:

### 1. Crashes and Bugs
- [ ] No crashes during review
- [ ] All features work as described
- [ ] No dead-end screens

### 2. Incomplete Information
- [ ] All metadata fields filled
- [ ] Demo account works
- [ ] Screenshots accurate

### 3. Misleading Metadata
- [ ] Screenshots show actual app
- [ ] Description accurate
- [ ] No fake features

### 4. Privacy Policy
- [ ] URL accessible
- [ ] Covers all data collected
- [ ] Matches privacy questionnaire

### 5. Age Rating
- [ ] Accurate for content
- [ ] AI content flagged
- [ ] Mature themes disclosed

### 6. Design Issues
- [ ] Follows Human Interface Guidelines
- [ ] Professional appearance
- [ ] Clear navigation

### 7. IAP Issues
- [ ] Clear what user gets
- [ ] Restore purchases works
- [ ] No consumable confusion

### 8. Account Required
- [ ] Demo account provided
- [ ] Account creation clear
- [ ] Value explained

---

## Emergency Contacts

### If Issues Arise During Review

**Apple Developer Support:**
- Phone: 1-800-633-2152 (US)
- Website: https://developer.apple.com/support/

**BaoLife Team:**
- Email: support@baolife.app
- Emergency: [Your phone number]

---

## Submission Timeline

**Expected Timeline:**

1. **Submission:** Day 0
2. **Waiting for Review:** 0-3 days
3. **In Review:** 2-6 hours
4. **Decision:** Day 1-3
5. **If Approved:** Live in 24 hours (or manual release)
6. **If Rejected:** Fix and resubmit (add 1-2 days)

---

## Confidence Check

### Rate Your Readiness (1-10)

- **Technical Quality:** ___/10 (aim for 9+)
- **Metadata Complete:** ___/10 (aim for 10)
- **Content Quality:** ___/10 (aim for 9+)
- **Team Readiness:** ___/10 (aim for 9+)
- **Overall Confidence:** ___/10 (aim for 9+)

**If any score <8:** Review that section before submitting.

**If overall confidence <9:** Consider additional testing or review.

---

## Final Thought

Take a deep breath. You've worked hard to get here. If you've checked off everything above, you're ready!

**Good luck with your submission!** 🚀

---

## After Submission

Move on to `submission-guide.md` for what to expect during and after review.
