From f9be08114dac074bda0d876aad282bf98bb9cb56 Mon Sep 17 00:00:00 2001 From: suphicakir Date: Thu, 12 Nov 2026 00:30:39 +0300 Subject: [PATCH] =?UTF-8?q?feat(aray=C3=BCz):=20logo=20ve=20uygulama=20iko?= =?UTF-8?q?nlar=C4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Logo: indigo zemin, spiral defter ve ¥ (frontend/brand/*.svg) - scripts/icons.sh (npm run icons): favicon (svg/ico), PWA 192/512, maskable, Apple touch icon, Tauri 1024 - Logo bileşeni (components/logo.tsx) - index.html: ikon bağlantıları, theme-color, açıklama Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 1 + docs/MEMORY.md | 4 +- docs/PHASES.md | 4 +- frontend/brand/icon-1024.png | Bin 0 -> 34022 bytes frontend/brand/logo-fullbleed.svg | 24 +++++++++ frontend/brand/logo.svg | 23 +++++++++ frontend/index.html | 8 +++ frontend/public/apple-touch-icon.png | Bin 0 -> 3479 bytes frontend/public/favicon.ico | Bin 0 -> 15086 bytes frontend/public/favicon.svg | 23 +++++++++ frontend/public/icon-192.png | Bin 0 -> 5793 bytes frontend/public/icon-512.png | Bin 0 -> 15842 bytes frontend/public/icon-maskable-512.png | Bin 0 -> 9670 bytes frontend/src/App.tsx | 5 +- frontend/src/components/logo.tsx | 67 ++++++++++++++++++++++++++ package.json | 3 +- scripts/.gitkeep | 0 scripts/icons.sh | 37 ++++++++++++++ 18 files changed, 194 insertions(+), 5 deletions(-) create mode 100644 frontend/brand/icon-1024.png create mode 100644 frontend/brand/logo-fullbleed.svg create mode 100644 frontend/brand/logo.svg create mode 100644 frontend/public/apple-touch-icon.png create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/favicon.svg create mode 100644 frontend/public/icon-192.png create mode 100644 frontend/public/icon-512.png create mode 100644 frontend/public/icon-maskable-512.png create mode 100644 frontend/src/components/logo.tsx delete mode 100644 scripts/.gitkeep create mode 100755 scripts/icons.sh diff --git a/CLAUDE.md b/CLAUDE.md index 01126d7..bf5f3f6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -57,6 +57,7 @@ npm run db:seed npm run db:reset # kakeibo_dev + artık kakeibo_test_* veritabanlarını siler npm test # backend (cargo test, MongoDB açık olmalı) + frontend (vitest) npm run lint # clippy + oxlint +npm run icons # frontend/brand/*.svg → favicon, PWA, Apple, Tauri ikonları (rsvg-convert + magick) ``` - `npm run dev` öncesinde DB otomatik başlar (`predev`). - Yerel MongoDB host portu **27020** (27017 sistem mongod, 27018/27019 diğer projeler). diff --git a/docs/MEMORY.md b/docs/MEMORY.md index 32be0fd..e171334 100644 --- a/docs/MEMORY.md +++ b/docs/MEMORY.md @@ -1,7 +1,7 @@ # 🧠 Proje Hafızası ## ▶️ Sıradaki Adım -**Faz 2 – Adım 2:** Logo + uygulama ikonu (SVG, defter + yen/para teması), favicon, PWA ikonları (192/512, maskable), Apple touch icon. PNG üretimi için araç seçimi (rsvg-convert / sharp). +**Faz 2 – Adım 3:** `lib/api.ts` (fetch sarmalayıcı, `{error:{code,message}}` → `ApiError`), TanStack Query kurulumu, ts-rs ile Rust DTO → `frontend/src/types/` tip üretimi, oturum durumu (`useMe` / auth context). ## 📌 Alınan Kararlar - Sürüm kontrolü: Gitea (`https://gitea.ta1sph.info/suphicakir/kakeibo.git`), dal `main`. @@ -22,6 +22,7 @@ - Tasarım: ana renk indigo (`oklch(0.42 0.13 268)`), grup renkleri Okabe-Ito (needs #0072b2, wants #cc79a7, culture #009e73, unexpected #d55e00), *-fg tonları AA (açık ≥5.0, koyu ≥9) hesaplanarak doğrulandı. Gelir #15803d, gider #c62828, uyarı #b45309. - Tema seçimi localStorage (`kakeibo-theme`), yalnızca cihaz kolaylığı; ileride `users.preferences.theme` ile senkron olabilir. - `parseMoney`: virgül varsa ondalık; virgül yoksa son noktadan sonra 1–2 rakam → ondalık ("1.25" = 1,25 ₺; "1.250" = 1250 ₺). +- Logo: Taslak A (indigo zemin, spiral krem defter, ¥) seçildi. Kaynak `frontend/brand/logo.svg` + `logo-fullbleed.svg` (maskable/Apple, içerik %82). Uygulama içi `components/logo.tsx` aynı çizim (elle senkron tutulmalı). Manifest Faz 10'da (vite-plugin-pwa). - Sürümler: Rust 1.99.1 (edition 2024), Axum 0.8, React 19, Vite 8, TypeScript 7, Tailwind 4.3, shadcn 4.23, Vitest 5. ## ❓ Açık Konular @@ -49,3 +50,4 @@ ### 2026-11-12 — Faz 2 - **Adım 1:** Tailwind v4 (@tailwindcss/vite), shadcn init (radix, preset nova; `cn` paketi = shadcn'in clsx+tailwind-merge yerine geçeni, incelendi), Inter (@fontsource-variable, çevrimdışı). `index.css`: grup + durum token'ları, odak halkası, `money` utility, reduced-motion. `lib/format.ts` (+22 vitest), `lib/theme.tsx`, `lib/groups.ts`, `components/theme-toggle.tsx`. Butonlar 44/48 px'e büyütüldü. Geçici önizleme ekranı (App.tsx), 375 px headless ekran görüntüsüyle iki temada kontrol edildi. +- **Adım 2:** 3 logo taslağı (A indigo defter, B açık defter + para, C hanko) 512/64/32/16 px önizlemeyle sunuldu; kullanıcı A'yı seçti. `scripts/icons.sh` (`npm run icons`): favicon.svg/.ico, icon-192/512, icon-maskable-512, apple-touch-icon (180), brand/icon-1024 (Tauri). Maskable güvenli alan görsel olarak doğrulandı. `index.html`: ikon linkleri, theme-color, description. diff --git a/docs/PHASES.md b/docs/PHASES.md index 60e8ccb..91a68ce 100644 --- a/docs/PHASES.md +++ b/docs/PHASES.md @@ -33,7 +33,7 @@ ## Faz 2 Adımları - ✅ 1. Tailwind v4 + shadcn/ui (radix, nova), tasarım token'ları (4 grup + durum renkleri, AA doğrulandı), Inter, tema (aydınlık/karanlık/sistem), `lib/format.ts` + Vitest -- ⏳ 2. Logo ve uygulama ikonu (SVG), favicon, PWA/Apple ikonları -- ⏳ 3. `lib/api.ts`, TanStack Query, ts-rs tip üretimi, oturum durumu +- ✅ 2. Logo ve uygulama ikonu (SVG), favicon, PWA/Apple ikonları +- 🔄 3. `lib/api.ts`, TanStack Query, ts-rs tip üretimi, oturum durumu - ⏳ 4. Router (react-router), korumalı sayfalar, layout: mobil alt menü / masaüstü sol menü - ⏳ 5. Giriş / kayıt ekranları (react-hook-form + zod, beni hatırla, davet kodu), arayüz metinleri tek dosyada diff --git a/frontend/brand/icon-1024.png b/frontend/brand/icon-1024.png new file mode 100644 index 0000000000000000000000000000000000000000..462fe4cbec7e5fe12aabfad9c5bc7833231683e7 GIT binary patch literal 34022 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 eGZgxPfMB!C&KzcOQ~(u( + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/brand/logo.svg b/frontend/brand/logo.svg new file mode 100644 index 0000000..fa2bd1e --- /dev/null +++ b/frontend/brand/logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/index.html b/frontend/index.html index 3216197..3c027b6 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -5,6 +5,14 @@ Kakeibo + + + + + + + +