# Make this app Puvio-ready

Paste this prompt into Lovable, Cursor, Claude, or any AI coding assistant
when you're building (or finishing) an Android / web app that you want to
publish on the **Puvio Store**. Following it means your app slots cleanly
into Puvio's identity, install, update, deep-link, and AI-memory layer with
zero friction.

---

## The prompt — copy everything below

You are helping me make this app **Puvio-ready** so it can be published on
the Puvio Store and integrate cleanly with the Puvio ecosystem (Puvio ID,
Puvio memory, cross-app intents, AI Install Assistant). Apply every
rule below without asking me to confirm each one.

### 1. App identity (must exist before submission)

- **App name**: human-readable, ≤ 30 chars, no emoji.
- **Slug**: lowercase, dashes only, ≤ 40 chars, stable forever (used in
  Puvio URLs).
- **Package name** (Android applicationId): reverse-DNS, e.g.
  `com.mybrand.appname`. Never change after publish.
- **Deep-link scheme**: short, lowercase, unique to this app, e.g.
  `brief`, `coral`, `clove`. Must be 2–40 chars `[a-z0-9-]`.
- **App icon**: 512×512 PNG, no transparency, no text, recognisable at 48dp.

### 2. Versioning rules (Puvio enforces these on every upload)

- `version` is a human semver string: `1.0.0`, `1.2.3`, `2.0.0-beta.1`.
- `version_code` is a strictly increasing integer (`1`, `2`, `3`, …).
  Never reuse, never decrement.
- Every release ships a **changelog** in `release_notes` written in plain
  English, present tense, user-facing ("Added dark mode", not "feat: dark").
- Bump `version_code` even for hotfixes — Puvio's update detector keys off
  this integer.

### 3. Distribution

- Primary: upload a signed `.apk` (release keystore, not debug).
- Optional: upload `.aab` only if you also want Play Store listing — Puvio
  will route Play Store users there.
- Optional: hosted APK URL (must be HTTPS, must serve
  `application/vnd.android.package-archive`).
- Max size: 4 GB. Larger builds split by ABI.
- Puvio computes SHA-256 on upload — don't ship pre-hashed builds, the
  hash must match the uploaded bytes.

### 4. Manifest hints that make Puvio work better

In `AndroidManifest.xml`:

```xml
<!-- Deep links from Puvio listings open straight into your app -->
<intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="<YOUR_DEEP_LINK_SCHEME>"/>
    <data android:scheme="https" android:host="puvio.app"
          android:pathPrefix="/app/<YOUR_SLUG>"/>
</intent-filter>

<!-- Lets Puvio's intent chooser route shared content (text, files) to you -->
<intent-filter>
    <action android:name="android.intent.action.SEND"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="text/plain"/>
</intent-filter>
```

Declare `minSdk` honestly. Puvio surfaces "needs Android X" to the user
before download — lying about minSdk leads to install failures the AI
Install Assistant will call out.

### 5. Sign in with Puvio ID (recommended)

If your app has accounts, support **Puvio ID** so users don't create yet
another login:

- OAuth-style flow, redirect to `https://puvio.app/auth/authorize`.
- Use the `puvio-id` SDK or hit `/api/puvio/auth/*` directly.
- Cache the returned `puvio_user_id` — that's the stable identity across
  every Puvio app on the device.

### 6. Puvio memory (recommended for AI features)

If your app uses LLMs, read/write user memory through Puvio memory instead
of building your own profile store:

- Scopes you'll typically request: `profile`, `memory.read`, `memory.write`.
- Memory is owned by the user, not the app — never write hidden data.
- Tag memories with your app slug so cross-app recommendations stay
  attributable.

### 7. Cross-app intents

Declare what your app can **handle** and **emit**:

- `handled_intents` in your Puvio listing tells other apps you accept e.g.
  `text/summarize`, `image/edit`, `task/create`.
- When you want to hand off to another app, call Puvio's
  `redeem_intent_handoff` so the user picks the receiving app from a
  Puvio-styled chooser.

### 8. Update behavior

- Don't ship a custom "update available" dialog. Puvio Store already
  notifies the user and runs the download via the AI Install Assistant.
- On first launch after an update, **don't** wipe user data. If you need a
  migration, write it idempotently — users may skip versions.
- If you absolutely must clear cache on update, do it inside your app
  using `Context.getCacheDir()`, never `Runtime.exec("rm ...")`.

### 9. Trust signals

Make these provably true so Puvio can show green badges on your listing:

- Sign every release with the same upload key.
- Keep `applicationId` stable.
- Don't request permissions you don't use — Puvio reviewers reject this.
- Provide a real privacy policy URL (Puvio links to it from your listing).

### 10. Web companion (if your app has one)

- Add the **Puvio install banner script** to your marketing site:
  `<script src="https://puvio.app/embed/install.js" data-slug="<YOUR_SLUG>"></script>`
- This drops a "Get on Puvio" button that deep-links into the Puvio
  listing on mobile and the web catalog on desktop.

### Checklist before you hit "Submit to Puvio"

- [ ] APK signed with release keystore
- [ ] `version_code` strictly higher than last published
- [ ] Changelog written in plain English
- [ ] Icon 512×512 PNG without transparency
- [ ] `minSdk` matches what the app actually needs
- [ ] Deep-link intent filter present
- [ ] Privacy policy URL live
- [ ] (If using accounts) Puvio ID wired
- [ ] (If using AI) Puvio memory scopes declared

---

That's it. An app that follows this list passes Puvio review on the first
attempt and feels native inside the Puvio Store, the AI Install Assistant,
and every future Puvio surface.
