# Frenday (เฟรนเดย์) — brand identity kit

Built 2026-09-10, off the app code, on top of the v1 design direction in
`docs/paiduay/design/`. Open `brand-board.html` first; it is the whole identity
on one page. Nothing under `apps/paiduay/` was touched — adoption is a later
step and is sequenced below.

> **The name changed on 2026-09-18: ไปด้วย / Paiduay → เฟรนเดย์ / Frenday**, public
> host `frenday.xyz` (a temporary TLD; `paiduay.6326638.xyz` 301s to it). "Paiduay"
> stays as the internal identifier — the folder, the tenant slug, env names, routes,
> and every file path in this kit. **The mark itself does not change:** the sun disc
> over three plates is the logo either way, the palette, the Pridi/Anuphan pairing and
> the daylight system all stand. What changes is the word the mark sits beside. The
> kit's rendered assets below (`brand-board.html`, `logo/`, `social/`, `avatars/`) were
> built from "ไปด้วย" on 2026-09-10 and still carry the old wordmark — they are the
> 2026-09-10 record, not the current brand, and re-running the build against
> "เฟรนเดย์" is its own work order. The launch one-pager
> (`docs/paiduay/launch/one-pager.html`) is the first asset carrying the new wordmark:
> เฟรนเดย์ and Frenday, both shaped from `Pridi-SemiBold.ttf` with the same HarfBuzz
> route `logo/_build/shape.py` uses.
>
> **ชื่อเปลี่ยนเมื่อ 2026-09-18: ไปด้วย → เฟรนเดย์** โฮสต์สาธารณะคือ `frenday.xyz`
> ตราสัญลักษณ์ (ดวงอาทิตย์เหนือสามแผ่น) สี และคู่ฟอนต์ ไม่เปลี่ยน เปลี่ยนเฉพาะคำที่อยู่ข้างตรา

## The identity in five lines

1. **The reply is the brand.** The 2026-09-10 name, ไปด้วย, meant "I'll come along" — the accept button as the logo. เฟรนเดย์ / Frenday keeps that job in a borrowed word Thai already says easily: a friend, and the day you spend with one. One word, said in daylight.
2. **The mark is inside the name.** Written for ไปด้วย (the D2 proposal below, never adopted — the app draws the sun disc over three plates): the word carries exactly one tone mark, the ไม้โท over ด; the sun disc slides under it, and in Latin the same badge lands over the *d* of paiduay. Kept as the 2026-09-10 record. เฟรนเดย์ carries its own single mark, the ทัณฑฆาต over ย์, so the idea ports — but nothing has been re-drawn yet.
3. **Daylight is the structure.** Sun, band and hours are data, not mood: meetups run 06:00–21:00, in public, and every surface shows that.
4. **Thai first, English whole.** One slab face (Pridi 600) carries both scripts at one body height; Anuphan is the interface; scripts never share a line.
5. **Warm, sturdy, plain.** Pine ink on leaf-lit paper, jade for every yes, sun only as a mark. No pink, no purple, no night, no doodles, no photos of people in the brand's own materials.

## What is in the kit and where it maps in the product

| Path | What | Used for |
|---|---|---|
| `brand-board.html` | the identity on one page (self-contained; Google Fonts only) | the founder's review; the reference for whoever adopts it |
| `screenshots/brand-board-1440.png`, `-390.png` | the board rendered | proof it was looked at |
| `logo/d2-suntone/` | **direction 2, recommended**: the sun under the tone mark — wordmark-th/en, lockup-stacked, lockup-horizontal, mark, mark-small, app-icon (+ `-mono`, `-reverse`, `-light`) | nav (`lockup-horizontal`), OG/print (`lockup-stacked`), favicon and social avatars (`app-icon`), stamps/receipts (`*-mono`), on ink or photos (`*-reverse`) |
| `logo/d1-dortho/` | **direction 1, alternative**: ด้ — the together syllable as a monogram on a sun disc — same file set | the same slots if the founder picks it |
| `logo/text-only/` | the words without any badge (th/en, + reverse) and `bilingual-metrics.svg` | poster header, portal, anywhere the mark is already on screen |
| `logo/_build/build-logo.py` | generator: HarfBuzz-shaped, fontTools-outlined from `apps/paiduay/assets/fonts/Pridi-SemiBold.ttf` | re-run only if the wordmark geometry changes |
| `palette.md` | the full colour system with every ratio, dark-surface behaviour, hues, and the reconciliation with `globals.css` | the two token changes to make in the app |
| `social/og-th.png`, `og-en.png` (1200×630) | Open Graph cards, Thai and English | `<meta property="og:image">` per locale |
| `social/avatar-1024.png` (+ `-d1`) | square profile / app avatar, both directions | LINE OA, Instagram, TikTok, app stores |
| `social/story-th.png`, `story-en.png` (1080×1920) | a brand story frame — "find a companion for the day", not a specific provider | the first non-provider post on each channel |
| `social/*.html` | the sources of the PNGs (self-contained) | re-render after copy changes |
| `avatars/avatars.html`, `screenshots/avatars-1440.png` | the photo-less provider identity: hue + monogram + signature ring, eight seeded people, the photo-arrival state | the spec for the `Monogram` component's next step |
| `_src/` | board and social sources, `build.py` (assemble + render), `build-avatars.py`, `contrast.py` | regenerate everything |

## What the founder must decide

1. **The logomark.** Two directions, both fully worked, same wordmark and system either way:
   - **D2 — the sun under the tone mark (recommended).** The badge lives inside the word and over the *d* of paiduay; it grows out of v1's sun dot, so the app's header, "now" tick and locked-rule check keep their meaning; a non-Thai reader sees a name with a small sun on one letter. Risk: the bare disc is a blob under 24px — the app-icon tile is the small-size form.
   - **D1 — ด้, the together syllable.** A Thai letter with its tone mark standing in the sun. More Thai-proud, the stronger app icon, a coin or a seal to anyone else. Risk: a monogram beside the word it comes from; opaque abroad until the caption arrives.
   - The app-code agent is designing its own logomark in parallel. These two are the considered alternatives with the full system behind them; pick one of the three and the rest of this kit stands.
2. **Two colour corrections (recommend accepting both; both are AA-driven).** `--text-3` `#6F817C` → `#60746D` (v1's value fails AA at 4.11:1 on white); add `--paper-2` `#B7C6C0` for secondary text on ink surfaces. Details in `palette.md`.
3. **The signature ring.** From profile size, the person's real weekly hours bent over the top of their disc (deep = most working days, light = some). It makes two people with the same initial and hue distinct and survives a photo. It is a product call — it puts availability on the avatar — so it is a proposal, rendered, not adopted.
4. **The domain in the assets.** ~~Every social asset and the poster say `paiduay.co`.~~ Answered 2026-09-18: the public host is **`frenday.xyz`** (a temporary TLD; `paiduay.6326638.xyz` 301s to it). Every asset in this kit still prints `paiduay.co` and must be re-rendered before anything is posted — that is part of the same work order as the wordmark.
5. **Band hours in the design folder.** The brand follows the app (06→21). `docs/paiduay/design/DESIGN.md` and `tokens.css` still say 08→20; they should be updated when that folder is next touched.

## How the app should adopt it (later step, not done here)

1. **Wordmark.** Replace the CSS `.wordmark` (sun dot + live text) with the outlined SVG: inline `logo/d2-suntone/lockup-horizontal.svg` as a React component for the nav (26px tall) and the footer; for the poster header use `text-only/wordmark-th.svg`. To recolour the word on ink, use the `-reverse` file or swap the word's `fill="#17302B"` for `currentColor` at import time; the disc stays sun in every case.
2. **Favicon and app icon.** Export `app-icon.svg` to 32 / 180 / 512 / 1024 PNG (the SVG's rounded tile is for avatars; the OS masks app icons itself, so supply the square). Replace `app/favicon.ico`.
3. **Open Graph.** Point `og:image` at `social/og-th.png` / `og-en.png` per locale, or port `_src/parts/og-*.html` into the existing `next/og` route so the card stays in sync with copy (the poster route already has the fonts on disk).
4. **Tokens.** In `app/globals.css`: `--text-3: #60746D;` and add `--paper-2: #B7C6C0;` plus `--color-paper-2` in the `@theme inline` block. Nothing else changes.
5. **Monogram.** If the ring is accepted: extend `components/monogram.tsx` with an optional `hours` prop that draws the fifteen segments (the arc maths is in `_src/build-avatars.py`, 12 lines) at sizes ≥ 88 only.
6. **Illustration.** None. The "daylight pattern" (rows of band cells in sun and a person's deep hue) is the only texture the brand has, and it is built from real availability rows, never random.

## Regenerating

```sh
# logos (once): shaping + outlining needs HarfBuzz and fontTools
python3 -m venv docs/paiduay/brand/logo/_build/venv
docs/paiduay/brand/logo/_build/venv/bin/pip install fonttools uharfbuzz
docs/paiduay/brand/logo/_build/venv/bin/python docs/paiduay/brand/logo/_build/build-logo.py

# avatars part, then every HTML, then every PNG (uses apps/paiduay/scripts/shot.ts and the dev server's Chrome)
python3 docs/paiduay/brand/_src/build-avatars.py
python3 docs/paiduay/brand/_src/build.py --render
```

The SVG outlines are derived from Pridi (SIL Open Font License 1.1, see
`apps/paiduay/assets/fonts/OFL-Pridi.txt`); outlined logotypes are permitted use.

## Research and rejected directions

Ten to fifteen minutes on top of v1's `NOTES.md`. Kept: bilingual harmony is a
metrics question (Pridi's Thai body height and Latin x-height coincide, which is
why one face sets both names); the closest dignified analogue outside Thailand
(Papa, companionship for older adults) went "more human, engaging, real" rather
than clinical; no Thai consumer app uses a Thai glyph as its logomark — an
opening D1 takes. Rejected: two overlapping discs (Mastercard); a sun-arc "path
of the day" (a weather app); a speech bubble (v1 already rejected it); two
offset band cells as a mark (reads as a menu icon at 16px); colouring the tone
mark in live text (breaks shaping — which is why every logo here is a drawing).
