Add App Store Connect submission guide with copy and privacy answers.
Document metadata, descriptions, review notes, demo credentials, and pre-submission checklist for the iOS release. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,270 @@
|
||||
# App Store Connect — beenvoice iOS
|
||||
|
||||
Copy-paste reference for submitting **beenvoice** (`com.beenvoice.app`, v1.0.0). Update URLs if your production web host differs from `beenvoice.com`.
|
||||
|
||||
---
|
||||
|
||||
## App Information
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| **Name** | beenvoice |
|
||||
| **Subtitle** (30 chars max) | Invoices & time tracking |
|
||||
| **Bundle ID** | `com.beenvoice.app` |
|
||||
| **SKU** | `beenvoice-ios` (your choice; immutable) |
|
||||
| **Primary language** | English (U.S.) |
|
||||
| **Primary category** | Business |
|
||||
| **Secondary category** | Productivity |
|
||||
| **Content rights** | Does not contain third-party content |
|
||||
| **Age rating** | 4+ (no restricted content; business/finance utility) |
|
||||
|
||||
### Copyright
|
||||
|
||||
```
|
||||
© 2026 beenvoice
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## URLs
|
||||
|
||||
Deploy the Next.js legal pages before submission. Privacy Policy and Terms must load without login.
|
||||
|
||||
| Field | URL |
|
||||
|-------|-----|
|
||||
| **Privacy Policy URL** | `https://beenvoice.com/privacy` |
|
||||
| **Terms of Use (EULA)** | Use Apple Standard EULA *or* link `https://beenvoice.com/terms` |
|
||||
| **Support URL** | `https://beenvoice.com` (or a dedicated `/support` page when available) |
|
||||
| **Marketing URL** (optional) | `https://beenvoice.com` |
|
||||
|
||||
If production web is still on `beenvoice.soconnor.dev`, use `https://beenvoice.soconnor.dev/privacy` and `/terms` until `beenvoice.com` is live.
|
||||
|
||||
---
|
||||
|
||||
## Promotional Text (170 chars max)
|
||||
|
||||
Optional; can be changed without a new build.
|
||||
|
||||
```
|
||||
Track billable hours, manage clients, and send invoices from your phone. Syncs with your beenvoice account. Lock the app with Face ID.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Description (4000 chars max)
|
||||
|
||||
```
|
||||
beenvoice is the mobile companion for freelancers and small teams who invoice clients and track billable time.
|
||||
|
||||
DASHBOARD AT A GLANCE
|
||||
See revenue, pending and overdue invoices, and your running timer without opening multiple tools.
|
||||
|
||||
TIME CLOCK
|
||||
Clock in and out with an optional description, client, invoice, and hourly rate. On iPhone, a Live Activity on the Lock Screen and Dynamic Island shows elapsed time while you work.
|
||||
|
||||
INVOICES
|
||||
Browse, filter, create, and edit invoices. Update status and keep billing moving from anywhere.
|
||||
|
||||
CLIENTS & BUSINESSES
|
||||
Maintain client records and business profiles so invoices stay consistent across web and mobile.
|
||||
|
||||
MULTI-ACCOUNT
|
||||
Switch between beenvoice accounts (e.g. work and personal) with separate sessions, similar to a password manager.
|
||||
|
||||
SECURITY
|
||||
Optional per-account app lock with PIN and Face ID / Touch ID when returning to the app.
|
||||
|
||||
OFFICIAL OR SELF-HOSTED
|
||||
Sign in to the official beenvoice cloud or point the app at your own beenvoice server URL.
|
||||
|
||||
REQUIREMENTS
|
||||
A beenvoice account and network access to your beenvoice server. The mobile app is not a standalone product—it connects to the same API as the beenvoice web app.
|
||||
|
||||
Questions or feedback: support via your beenvoice administrator or the contact on beenvoice.com.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Keywords (100 chars max, comma-separated, no spaces after commas)
|
||||
|
||||
```
|
||||
invoice,time tracking,freelance,billing,clients,timer,accounting,small business,hours,beenvoice
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What’s New (Version 1.0.0)
|
||||
|
||||
```
|
||||
Initial App Store release.
|
||||
|
||||
• Dashboard with revenue and invoice summaries
|
||||
• Time clock with optional client, invoice, and rate
|
||||
• iOS Live Activity for running timers
|
||||
• Invoice list, create, and edit
|
||||
• Clients and businesses management
|
||||
• Multi-account support with secure sign-in
|
||||
• Per-account app lock (PIN and Face ID)
|
||||
• Light and dark appearance
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## App Review Information
|
||||
|
||||
### Sign-in required
|
||||
|
||||
**Yes** — the app requires a beenvoice account.
|
||||
|
||||
### Demo account (production server)
|
||||
|
||||
Ensure migration `0014_seed_demo_account` has run on the server reviewers will hit.
|
||||
|
||||
| Field | Value |
|
||||
|-------|--------|
|
||||
| **Username** | `demo@example.com` |
|
||||
| **Password** | `demo123` |
|
||||
|
||||
### Notes for Review
|
||||
|
||||
```
|
||||
beenvoice is a client for the beenvoice invoicing and time-tracking platform (web + API).
|
||||
|
||||
SIGN IN
|
||||
1. Open the app.
|
||||
2. Leave "Official" server selected (https://beenvoice.soconnor.dev) unless we specify otherwise in this note.
|
||||
3. Sign in with the demo account above.
|
||||
|
||||
WHAT TO TEST
|
||||
• Dashboard — sample invoices and stats are pre-seeded.
|
||||
• Timer tab — clock in, optionally pick client/description; on a physical device, Lock Screen Live Activity appears while a timer runs.
|
||||
• Invoices — list includes draft, sent, and paid examples.
|
||||
• Settings — profile, theme, optional app lock (PIN / Face ID).
|
||||
|
||||
APP LOCK
|
||||
Optional. Enable in Settings → App Lock. Face ID uses on-device biometrics only; no biometric data is sent to our servers.
|
||||
|
||||
LIVE ACTIVITY
|
||||
Requires a physical iPhone (not available in Simulator). Start a timer, lock the device, and check the Lock Screen / Dynamic Island.
|
||||
|
||||
SELF-HOSTED SERVERS
|
||||
Users may enter a custom server URL on sign-in. Review uses the official server only.
|
||||
|
||||
No in-app purchases. No ads.
|
||||
```
|
||||
|
||||
Update the official server URL in the note if you change `DEFAULT_API_URL` in `lib/config.ts`.
|
||||
|
||||
---
|
||||
|
||||
## App Privacy (Privacy Nutrition Labels)
|
||||
|
||||
Answer in App Store Connect → App Privacy. Adjust if you add analytics later.
|
||||
|
||||
### Data linked to the user
|
||||
|
||||
| Data type | Purpose | Collected | Linked | Tracking |
|
||||
|-----------|---------|-----------|--------|----------|
|
||||
| **Email address** | App functionality, account | Yes | Yes | No |
|
||||
| **Name** | App functionality, account | Yes | Yes | No |
|
||||
| **Other user content** (clients, invoices, time entries, business details) | App functionality | Yes | Yes | No |
|
||||
| **User ID** | App functionality | Yes | Yes | No |
|
||||
|
||||
### Data not collected for tracking
|
||||
|
||||
The app does **not** use data for tracking across apps/websites. No third-party analytics SDKs in the current build.
|
||||
|
||||
### Data collected but not linked (typically none)
|
||||
|
||||
If you only use on-device Face ID via `expo-local-authentication`, Apple treats biometrics as **not** collected by the developer—do **not** declare Face ID templates as collected data.
|
||||
|
||||
### Practice to select
|
||||
|
||||
- **Data Used to Track You:** None
|
||||
- **Data Linked to You:** Contact info, identifiers, user content (as above)
|
||||
- **Data Not Linked to You:** None (unless you add crash logs without account linkage)
|
||||
|
||||
---
|
||||
|
||||
## Age Rating Questionnaire (typical answers)
|
||||
|
||||
| Topic | Answer |
|
||||
|-------|--------|
|
||||
| Cartoon / fantasy violence | None |
|
||||
| Realistic violence | None |
|
||||
| Sexual content | None |
|
||||
| Profanity | None |
|
||||
| Drugs, alcohol, tobacco | None |
|
||||
| Gambling | None |
|
||||
| Horror | None |
|
||||
| Mature / suggestive themes | None |
|
||||
| Unrestricted web access | No (in-app browser not used for open web) |
|
||||
| User-generated content broadly distributed | No (invoice data is private to the account) |
|
||||
|
||||
Expected result: **4+**.
|
||||
|
||||
---
|
||||
|
||||
## Export Compliance
|
||||
|
||||
In App Store Connect encryption questions:
|
||||
|
||||
- **Uses encryption:** Yes (HTTPS/TLS for API)
|
||||
- **Exempt:** Yes — standard HTTPS only, qualify for exemption under mass-market encryption rules (same as most apps using TLS)
|
||||
|
||||
Confirm annually in Connect; no separate ERN needed for standard TLS-only apps in most cases.
|
||||
|
||||
---
|
||||
|
||||
## Screenshots (required sizes)
|
||||
|
||||
Capture from **iPhone 6.7"** (e.g. iPhone 15 Pro Max) and **6.5"** if you support older requirements. Xcode Simulator → Save Screenshot, or physical device.
|
||||
|
||||
Suggested screens (portrait):
|
||||
|
||||
1. **Sign-in** — brand, clean auth (optional; some teams skip)
|
||||
2. **Dashboard** — stats + recent invoices (demo account)
|
||||
3. **Timer** — running or ready to clock in
|
||||
4. **Invoices** — list with statuses
|
||||
5. **Invoice detail / edit** — line items
|
||||
6. **Settings** — theme + app lock (shows polish)
|
||||
|
||||
Minimum: **3 screenshots** per required device size.
|
||||
|
||||
Optional: iPad 12.9" if `supportsTablet: true` — use iPad simulator or “Run on iPad” with scaled iPhone UI.
|
||||
|
||||
---
|
||||
|
||||
## Build & submit (EAS)
|
||||
|
||||
```bash
|
||||
cd beenvoice-app
|
||||
|
||||
# Production iOS build (auto-increments build number)
|
||||
eas build --platform ios --profile production
|
||||
|
||||
# Submit latest build to App Store Connect
|
||||
eas submit --platform ios --profile production
|
||||
```
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- Apple Developer Program membership
|
||||
- App record created in App Store Connect with bundle ID `com.beenvoice.app`
|
||||
- EAS credentials configured (`eas credentials`)
|
||||
- Privacy Policy URL live and reachable
|
||||
|
||||
---
|
||||
|
||||
## Pre-submission checklist
|
||||
|
||||
- [ ] Legal pages live at Privacy Policy URL (HTTP 200, no auth wall)
|
||||
- [ ] Demo account works on production API (`demo@example.com` / `demo123`)
|
||||
- [ ] `eas build --profile production` succeeds
|
||||
- [ ] TestFlight smoke test on device (login, timer, invoices, app lock)
|
||||
- [ ] Live Activity tested on physical iPhone
|
||||
- [ ] App Privacy answers match actual data flows
|
||||
- [ ] Screenshots uploaded for required device sizes
|
||||
- [ ] Review notes include demo credentials and server URL
|
||||
- [ ] Export compliance answered
|
||||
- [ ] Version `1.0.0` matches `app.json` / Connect version field
|
||||
Reference in New Issue
Block a user