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:
parent
7256a71bdf
commit
5caae523e7
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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.
|
||||
|
|
@ -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 | 2–8 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
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
|
|
@ -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 |
|
|
@ -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 |
Loading…
Reference in New Issue