feat: app icon redesign, store assets, brand identity docs (batch v0.2.5)

- Redraw adaptive icon layers (background + foreground) with Closer palette colors
- Add monochrome icon layer for Android 13+ themed icons
- Add mipmap-anydpi-v33 adaptive icon configs (round + standard)
- Add store assets: 512px app icon, 1024x500 feature graphic, source SVGs
- Add docs/brand/visual-identity.md with brand mark, color palette, store voice, asset rules
- Update store-assets.md checklist to reflect completed items
This commit is contained in:
null 2026-06-19 19:10:03 -05:00
parent 7256a71bdf
commit 5caae523e7
11 changed files with 155 additions and 32 deletions

View File

@ -5,18 +5,18 @@
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#4B058F"
android:fillColor="#4A235F"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#A300FF"
android:fillAlpha="0.62"
android:pathData="M0,0h108v48c-12,4 -28,5 -45,2c-27,-4 -49,-17 -63,-31z" />
android:fillColor="#8F67C5"
android:fillAlpha="0.72"
android:pathData="M0,0h108v42c-18,8 -38,10 -59,5c-23,-5 -39,-16 -49,-29z" />
<path
android:fillColor="#2A044E"
android:fillAlpha="0.54"
android:pathData="M0,72c18,-9 39,-8 61,-2c20,5 34,8 47,1v37h-108z" />
android:fillColor="#24122F"
android:fillAlpha="0.50"
android:pathData="M0,75c19,-10 40,-9 62,-3c19,5 33,8 46,1v35h-108z" />
<path
android:fillColor="#7E00E6"
android:fillAlpha="0.36"
android:pathData="M24,0h84v108h-32c-4,-20 -8,-40 -15,-57c-8,-19 -20,-35 -37,-51z" />
android:fillColor="#B98AF4"
android:fillAlpha="0.22"
android:pathData="M35,0h73v108h-29c-3,-22 -8,-43 -16,-62c-7,-17 -17,-33 -28,-46z" />
</vector>

View File

@ -5,18 +5,29 @@
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#2A044E"
android:fillAlpha="0.34"
android:pathData="M54,88C49,82 26,64 21,50C16,36 23,24 36,24C44,24 50,28 54,35C58,28 64,24 72,24C85,24 92,36 87,50C82,64 59,82 54,88Z" />
android:fillColor="#24122F"
android:fillAlpha="0.38"
android:pathData="M54,89C48,82 25,65 20,50C15,35 23,22 37,22C45,22 51,26 54,33C57,26 63,22 71,22C85,22 93,35 88,50C83,65 60,82 54,89Z" />
<path
android:fillColor="#E7A2D1"
android:pathData="M54,84C49,78 27,61 22,48C17,35 24,24 37,24C45,24 51,28 54,34C57,28 63,24 71,24C84,24 91,35 86,48C81,61 59,78 54,84Z" />
android:fillColor="#F7C8E4"
android:pathData="M54,85C49,79 27,62 22,48C17,35 24,24 37,24C45,24 51,28 54,35Z" />
<path
android:fillColor="#FFE8F4"
android:fillAlpha="0.72"
android:pathData="M26,42C27,32 33,27 42,27C48,27 52,30 54,34C57,30 62,27 69,27C78,27 84,32 85,42C75,36 65,35 55,39C45,35 35,36 26,42Z" />
android:fillColor="#D9B8FF"
android:pathData="M54,85C59,79 81,62 86,48C91,35 84,24 71,24C63,24 57,28 54,35Z" />
<path
android:fillColor="#FFF4FA"
android:fillAlpha="0.68"
android:pathData="M27,42C28,32 34,27 42,27C48,27 52,30 54,35L54,41C47,36 37,36 27,42Z" />
<path
android:fillColor="#F3E8FF"
android:fillAlpha="0.52"
android:pathData="M54,35C57,30 62,27 69,27C78,27 84,32 85,42C75,36 65,36 54,41Z" />
<path
android:fillColor="#6D2B55"
android:fillAlpha="0.46"
android:pathData="M22,48C28,60 43,72 54,84C65,72 80,60 86,48C82,63 61,79 54,87C47,79 26,63 22,48Z" />
android:fillAlpha="0.22"
android:pathData="M22,48C29,62 45,75 54,85L54,89C45,79 27,65 22,48Z" />
<path
android:fillColor="#56306F"
android:fillAlpha="0.22"
android:pathData="M86,48C79,62 63,75 54,85L54,89C63,79 81,65 86,48Z" />
</vector>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M54,85C49,79 27,62 22,48C17,35 24,24 37,24C45,24 51,28 54,35C57,28 63,24 71,24C84,24 91,35 86,48C81,62 59,79 54,85Z" />
</vector>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>

View File

@ -0,0 +1,44 @@
# Closer visual identity
Closer should feel private, warm, and made for an equal partnership—not clinical, gamified, or like
a public dating profile.
## Brand mark
The mark is one heart formed by two equal halves. Pink and lavender represent two people meeting at
the center; neither side visually dominates. Keep the mark intact and do not separate, rotate, add
text inside, or place it directly over a busy image.
- Launcher source: `docs/store/sources/app-icon.svg`
- Android adaptive layers: `app/src/main/res/drawable/ic_launcher_*`
- Minimum clear space: one quarter of the mark's width on all sides.
- Minimum digital size: 24 px. At small sizes, use the solid monochrome mark.
## Core colors
| Role | Color | Hex |
| --- | --- | --- |
| Trust / deep background | Aubergine | `#24122F` |
| Primary brand | Deep purple | `#56306F` |
| Connection accent | Lavender | `#B98AF4` |
| Partner one | Soft pink | `#F7C8E4` |
| Partner two | Soft lavender | `#D9B8FF` |
| Warm light surface | Blush white | `#FFF8FC` |
Use the deep tones for trust and privacy, and the softer tones for connection and warmth. Product
text must continue using semantic Material theme colors so contrast remains correct in light and dark
mode.
## Store voice
- Primary promise: **A private space for two.**
- Supporting idea: **Private by design · Made for connection.**
- Prefer calm, specific language. Avoid promises to “fix” a relationship, competitive streak copy,
urgency, or public/social framing.
## Asset rules
- Store graphics and screenshots should use the same purple/pink palette as the product.
- Lead with privacy and mutual connection before feature volume.
- Do not show intimate answer content, real email addresses, invite codes, or notification tokens.
- Use clean demo data and crop out development indicators before publishing.

View File

@ -30,18 +30,19 @@
## 2. Graphic Assets
### 2.1 App icon
- [ ] Launcher icon provided in all required densities (`mipmap-mdpi` through `mipmap-xxxhdpi`).
- [ ] Adaptive icon foreground + background layers present (`ic_launcher_foreground`, `ic_launcher_background`).
- [x] Launcher icon is supplied as an adaptive icon for the app's Android 8+ (`minSdk 26`) target.
- [x] Adaptive icon foreground + background layers present (`ic_launcher_foreground`, `ic_launcher_background`).
- [x] Android 13+ monochrome layer provided for themed icons.
- [ ] Icon tested on light and dark wallpapers.
- [ ] Round icon variant provided (`ic_launcher_round`).
- [x] Round icon variant provided (`ic_launcher_round`).
### 2.2 Feature graphic
- [ ] Feature graphic 1024 × 500 px (JPEG or PNG, no alpha).
- [ ] Brand name and key tagline legible at small sizes.
- [ ] Complies with Google Play policy (no device images, no price/calls-to-action like "Buy now").
- [x] Feature graphic 1024 × 500 px (PNG, no alpha): `docs/store/feature-graphic-1024x500.png`.
- [x] Brand name and key tagline legible at small sizes.
- [x] Complies with Google Play policy (no device images, no price/calls-to-action like "Buy now").
### 2.3 Screenshots
- [ ] Phone screenshots: minimum 2, recommended up to 8.
- [x] Phone screenshots: 7 current captures at 1080 × 2400 in `docs/screenshots/`.
- Suggested screens:
- Onboarding / welcome
- Home dashboard
@ -51,7 +52,7 @@
- Date builder or bucket list
- Answer reveal / history
- Settings / subscription
- [ ] Screenshot dimensions one of: 1080×1920, 1080×2160, 1080×2220, etc. (9:16 to 9:20 typical).
- [x] Screenshot dimensions are 1080 × 2400 (9:20).
- [ ] 7-inch tablet screenshots if targeting tablets (optional for MVP).
- [ ] 10-inch tablet screenshots if targeting tablets (optional for MVP).
- [ ] Screenshots do not contain placeholder or hardcoded test data.
@ -62,7 +63,7 @@
- [ ] Video shows real in-app experience, no prohibited content.
### 2.5 Other assets
- [ ] 512 × 512 px high-res icon uploaded in Play Console.
- [x] 512 × 512 px high-res icon ready for Play Console: `docs/store/app-icon-512.png`.
- [ ] 16:9 promo graphic if running store experiments.
---
@ -154,9 +155,10 @@
| App name | ≤ 30 chars displayed | Draft | |
| Short description | ≤ 80 chars | Draft | |
| Full description | ≤ 4,000 chars | Draft | |
| Launcher icon | Adaptive, all densities | Ready/Not ready | |
| Feature graphic | 1024 × 500 | Ready/Not ready | |
| Phone screenshots | 28 images | Ready/Not ready | |
| Launcher icon | Adaptive + round + monochrome | Ready | |
| High-res store icon | 512 × 512 PNG | Ready | |
| Feature graphic | 1024 × 500 PNG, no alpha | Ready | |
| Phone screenshots | 7 images, 1080 × 2400 | Ready; final demo-data review pending | |
| Tablet screenshots | Optional | Ready/Not ready | |
| Promo video | Optional | Ready/Not ready | |
| Privacy policy URL | HTTPS | Ready/Not ready | |
@ -164,6 +166,10 @@
| Subscription terms URL | HTTPS | Ready/Not ready | |
| Support URL | HTTPS | Needs migration | |
Source SVGs and usage guidance live in `docs/store/sources/` and
`docs/brand/visual-identity.md`. Re-export PNGs after any source change; do not edit the raster
deliverables independently.
---
## 10. Sign-off

BIN
docs/store/app-icon-512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
<defs>
<filter id="shadow" x="-30%" y="-30%" width="160%" height="170%">
<feDropShadow dx="0" dy="18" stdDeviation="14" flood-color="#24122F" flood-opacity=".42"/>
</filter>
</defs>
<rect width="512" height="512" fill="#56306F"/>
<path d="M0 0h512v190C414 226 317 226 222 199 122 171 53 119 0 62Z" fill="#B98AF4" opacity=".28"/>
<path d="M0 355c92-52 192-45 296-15 93 27 157 37 216 1v171H0Z" fill="#180C20" opacity=".32"/>
<g filter="url(#shadow)">
<path d="M256 402c-25-28-130-111-153-177-24-62 13-116 73-116 38 0 65 19 80 49Z" fill="#F7C8E4"/>
<path d="M256 402c25-28 130-111 153-177 24-62-13-116-73-116-38 0-65 19-80 49Z" fill="#D9B8FF"/>
<path d="M122 199c7-45 36-69 78-69 27 0 46 11 56 28v28c-44-25-89-21-134 13Z" fill="#FFF4FA" opacity=".68"/>
<path d="M256 158c14-18 38-28 67-28 42 0 70 24 77 69-49-34-97-38-144-13Z" fill="#F3E8FF" opacity=".52"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 999 B

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="500" viewBox="0 0 1024 500">
<defs>
<filter id="shadow" x="-30%" y="-30%" width="160%" height="180%">
<feDropShadow dx="0" dy="12" stdDeviation="12" flood-color="#180C20" flood-opacity=".45"/>
</filter>
</defs>
<rect width="1024" height="500" fill="#3B1D4B"/>
<circle cx="938" cy="62" r="210" fill="#B98AF4" opacity=".13"/>
<circle cx="855" cy="470" r="245" fill="#E7A2D1" opacity=".10"/>
<path d="M0 396c134-81 273-73 418-29 127 39 230 43 307 6v127H0Z" fill="#180C20" opacity=".18"/>
<g transform="translate(92 96) scale(.72)" filter="url(#shadow)">
<path d="M256 402c-25-28-130-111-153-177-24-62 13-116 73-116 38 0 65 19 80 49Z" fill="#F7C8E4"/>
<path d="M256 402c25-28 130-111 153-177 24-62-13-116-73-116-38 0-65 19-80 49Z" fill="#D9B8FF"/>
<path d="M122 199c7-45 36-69 78-69 27 0 46 11 56 28v28c-44-25-89-21-134 13Z" fill="#FFF4FA" opacity=".64"/>
<path d="M256 158c14-18 38-28 67-28 42 0 70 24 77 69-49-34-97-38-144-13Z" fill="#F3E8FF" opacity=".50"/>
</g>
<text x="500" y="193" fill="#FFF8FC" font-family="DejaVu Sans" font-size="76" font-weight="700">Closer</text>
<text x="504" y="254" fill="#F3E8FF" font-family="DejaVu Sans" font-size="32" font-weight="500">A private space for two.</text>
<g transform="translate(504 296)">
<rect width="448" height="56" rx="28" fill="#6B4A7C"/>
<path d="M30 17l10 4v9c0 7-4 12-10 15-6-3-10-8-10-15v-9l10-4Zm0 6-5 2v5c0 4 2 7 5 9 3-2 5-5 5-9v-5l-5-2Z" fill="#F7C8E4"/>
<text x="56" y="36" fill="#FFF8FC" font-family="DejaVu Sans" font-size="18" font-weight="600">Private by design / Made for connection</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB