Edit product content
Replace the demo story, copy, fixtures, prices, and legal placeholders.
The visible product is split between translated interface copy and typed mock data. Update both; changing only a headline leaves the rest of the Vela story behind.
Where content lives
| Content | Main location |
|---|---|
| Buttons, labels, errors, settings copy | src/i18n/resources.ts |
| Native permission and app-name strings | locales/en.json, locales/es.json |
| Dashboard and meals | src/data/mock/home.ts |
| Coach history and suggestions | src/data/mock/chat.ts |
| Scan result | src/data/mock/scan.ts |
| Notifications | src/data/mock/notifications.ts |
| Subscription plans | src/data/mock/payments.ts |
| Product scope and design intent | FEATURES.md, DESIGN.md, DESIGN-DARK.md |
| Privacy, terms, support, deletion | legal-site and its environment values |
Give your AI a complete brief
Rewrite the entire mock product around this brief:
App: [name]
User: [specific user]
Promise: [one result]
Core action: [what they do most often]
Premium value: [what paid users receive]
Tone: [three adjectives]
Update visible English and Spanish copy together, then replace the typed mock
fixtures so onboarding, dashboard, main action, coach, notifications, paywalls,
and profile tell one coherent story. Keep estimates and sensitive claims honest.Do not mix these two things
- Translation keys are for interface language written by you.
- User data is runtime content and should stay in typed data/backend models.
Do not generate translation keys from a user's name, message, meal, or project.
Prices in mock and production
Mock prices are presentation fixtures. Once RevenueCat is active, the paywall must display the localized live store price and real trial returned by the configured product. Never hard-code a price and call it production truth.