3daf123399
Document metadata, descriptions, review notes, demo credentials, and pre-submission checklist for the iOS release. Co-authored-by: Cursor <cursoragent@cursor.com>
271 lines
8.6 KiB
Markdown
271 lines
8.6 KiB
Markdown
# 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
|