Skip to content

Commit 777a4db

Browse files
sametbasbugclaude
andcommitted
Hub'ı baştan tasarla: yörünge konsolu, tek tema, budanmış fontlar
Eski tek dosyalık kapı emekli edildi. Yerine Astro 7 + Tailwind 4 üzerine kurulu, içeriğini src/data/equinox.ts'ten alan yeni bir sayfa geldi. - Sayfanın kalbi konsol: yörüngedeki düğümler sekme, yanındaki panel seçili alanın kartı. Ayrı kart ızgarası yok. - Altı panelin altısı da HTML'de; bağlantılar tarayıcıya ve arama motoruna görünür kalıyor, JavaScript yoksa noscript altısını açıyor. - Klavyede tam tablist davranışı: ok tuşları, Home, End, roving tabindex. - Tek tema (gece). Tema anahtarı, gündüz tokenleri ve geçiş silmesi yok. - Yazı tipleri sayfaya göre budanıyor (~310 KB → ~120 KB), avatarlar 216 KB → 20 KB, gömülü JavaScript 2,9 KB. Ayrı JS paketi yok. - Paylaşım kartı, favicon türevleri ve manifest betiklerle üretiliyor. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 166f03a commit 777a4db

43 files changed

Lines changed: 5446 additions & 2827 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/deploy.yml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,20 @@ name: Deploy Equinox to GitHub Pages
22

33
on:
44
push:
5-
branches: [ main ]
5+
branches: [main]
66
workflow_dispatch:
77

88
permissions:
99
contents: read
1010
pages: write
1111
id-token: write
1212

13+
# Aynı anda tek yayın: art arda gelen push'lar kuyruğa girsin, biri
14+
# diğerinin ortasında devreye girmesin.
15+
concurrency:
16+
group: pages
17+
cancel-in-progress: false
18+
1319
jobs:
1420
build:
1521
runs-on: ubuntu-latest
@@ -18,8 +24,6 @@ jobs:
1824
uses: actions/checkout@v6
1925
- name: Install, build, and upload site
2026
uses: withastro/action@v6
21-
env:
22-
PUBLIC_SITE_URL: https://equinox.sametbasbug.dev
2327
with:
2428
node-version: 24
2529

‎.gitignore‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1-
# dependencies
2-
node_modules/
3-
4-
# build output
1+
# derlenen çıktı
52
dist/
63
.astro/
74

8-
# system
5+
# bağımlılıklar
6+
node_modules/
7+
8+
# ortam
9+
.env
10+
.env.production
11+
12+
# Claude Code yerel dosyaları (makineye özel)
13+
.claude/
14+
15+
# işletim sistemi
916
.DS_Store
17+
Thumbs.db
1018

11-
# logs
19+
# günlükler
1220
npm-debug.log*
1321
yarn-debug.log*
1422
yarn-error.log*
1523
pnpm-debug.log*
16-
17-
# Claude Code yerel dosyaları (makineye özel)
18-
.claude/

‎AGENTS.md‎

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# equinox.sametbasbug.dev
2+
3+
Astro 7 + Tailwind 4 ile kurulmuş tek sayfalık kapı. Ekosistemdeki altı
4+
alanı, kadroyu ve sosyal hesapları listeler. Kullanıcıya dönük her metin
5+
Türkçedir.
6+
7+
```bash
8+
npm run dev # http://localhost:4321
9+
npm run build # fontları budar, sonra dist/ üretir
10+
npm run fonts # yalnızca font alt kümelerini yeniler
11+
npm run icons # favicon.svg'den PNG türevleri + manifest
12+
npm run og # public/og.png (paylaşım kartı)
13+
```
14+
15+
## Yayın
16+
17+
`main`'e push → GitHub Actions (`withastro/action@v6`, Node 24) → GitHub
18+
Pages → equinox.sametbasbug.dev. Alan adı `public/CNAME` ile bağlı; o
19+
dosya silinirse özel alan adı düşer.
20+
21+
## Değiştirirken dikkat
22+
23+
**Bütün içerik `src/data/equinox.ts`te.** Kapı sayısı, kadro sayısı,
24+
yörüngedeki düğüm yerleşimi ve metindeki "Altı kapı" ifadesi hep oradan
25+
türer. Yeni bir alan eklenince yerleşim kendini kurar — sayıyı elle
26+
yazan hiçbir yer yok.
27+
28+
**Sayfanın kalbi konsol: şema seçer, panel gösterir.** Yörüngedeki
29+
düğümler bağlantı değil sekme (`role="tab"`), paneller `role="tabpanel"`;
30+
siteye götüren bağlantı panelin içindeki `.panel__go`. Aynı `data-gate`
31+
değerini taşıyan üç öğe — düğüm, çekirdekten çıkan SVG kolu ve panel —
32+
birlikte `is-current` alır (`src/pages/index.astro` sonundaki betik).
33+
Yeni bir işaretli öğe eklerken aynı değeri vermek yeterli.
34+
35+
**Altı panelin altısı da HTML'de.** Aynı ızgara gözünde üst üste
36+
duruyorlar; yükseklik en uzun panele göre sabit, geçişte sayfa
37+
zıplamıyor. Seçili olmayanlar `visibility: hidden` — yalnızca `opacity`
38+
kullanılsaydı klavye görünmeyen panelin içindeki bağlantıya girmeye
39+
devam ederdi. Bağlantılar DOM'da durduğu için tarayıcı da arama motoru
40+
da altısını görüyor. JavaScript yoksa `<noscript>` bloğu altı paneli
41+
birden açıp düğümleri gizliyor.
42+
43+
**Masaüstünde üzerine gelmek seçiyor.** Böylece siteye gitmek yine tek
44+
tık. Dokunmatikte yalnızca tıklama var: `pointerenter` dokunuşla geliyor
45+
ama `pointerleave` hiç gelmiyor, eşleşme yanık kalıyordu. Klavyede
46+
sekme grubu tek durak (`tabindex` gezinir), aralarında ok tuşları,
47+
`Home` ve `End` çalışır.
48+
49+
**Fontlar sayfaya göre budanmış.** Fontsource'un hazır CSS'i üç aile
50+
için ~310 KB indiriyordu; `scripts/make-fonts.mjs` `src/` altındaki
51+
metinden karakter kümesi çıkarıp ~120 KB'a düşürüyor. `npm run build`
52+
bunu her seferinde yeniden üretir. `src/styles/fonts.css`teki
53+
`unicode-range` değerleri betikteki `isCore()` bölmesiyle **birebir aynı**
54+
olmalı; çakışırlarsa son tanım kazanır ve diğer dosya hiç indirilmez.
55+
56+
**Fraunces'ta yalnızca `opsz` ekseni var.** Fontsource'ta SOFT ve WONK
57+
eksenleri sadece `full` kesitinde ve dosyayı ikiye katlıyor. Bu yüzden
58+
`font-variation-settings` içinde SOFT/WONK **kullanılmaz** — yazılsa da
59+
sessizce yok sayılır.
60+
61+
**Yeni kart rengi ton açısıyla verilir.** `hue` değeri hem panelin
62+
vurgusunu hem yörünge düğümünü hem paylaşım kartındaki noktayı besliyor;
63+
`--accent` oradan hesaplanıyor (`global.css`). Doğrudan hex yazma.
64+
65+
**Kart ve şerit zeminleri `--panel` üzerinden.** `bg-surface-raised/35`
66+
gibi sabit saydamlıklara dönme; zeminler tek yerden ayarlanabilir kalsın.
67+
68+
**Tek tema var: gece.** Tema anahtarı, gündüz tokenleri, `data-theme`
69+
ve dairesel geçiş silmesi kaldırıldı — sayfa tek atmosfere göre kuruldu
70+
ve gündüzde aynı etkiyi vermiyordu. Token adları ana blogla ortak
71+
kaldığı için gündüz gerekirse `:root`un karşısına ikinci bir blok olarak
72+
geri gelebilir, ama bugün öyle bir dal yok: `data-theme` okuyan kod
73+
yazma.
74+
75+
## Bilinen tuzaklar
76+
77+
- **`.reveal` blokları IntersectionObserver'a bağlı**; tarayıcı sekmesi
78+
arka plandayken hiç tetiklenmez. Otomatik denetimde "her şey görünmez"
79+
görürsen önce `document.hidden` değerine bak.
80+
- **Sistem renk tercihine bakılmaz.** `prefers-color-scheme` sorgusu yok;
81+
`color-scheme: dark` sabit. Gündüz bekleyen bir denetim aracı sayfayı
82+
yanlış raporlar.
83+
- **`public/fonts/` ve `public/og.png` depoya işlenir.** Fontlar build'de
84+
yeniden üretiliyor ama `astro dev` betiği çalıştırmıyor; dosyalar
85+
olmazsa geliştirmede yazı tipi düşer.
86+
- **satori budanmış değişken fontu okuyamıyor.** `make-og.mjs` eksenleri
87+
sabitleyerek (`variationAxes`) düz bir kesit çıkarıyor; o parametre
88+
kaldırılırsa betik `fvar` tablosunda patlar.
89+
90+
## Yapı
91+
92+
| Yol | Ne |
93+
| --- | --- |
94+
| `src/data/equinox.ts` | Site kimliği, kapılar, kadro, sosyal hesaplar — tek kaynak |
95+
| `src/data/icons.ts` | 24×24 ikon yolları |
96+
| `src/components/OrbitMap.astro` | Konsolun seçicisi; düğümler HTML sekme, halkalar SVG |
97+
| `src/components/GatePanel.astro` | Seçili alanın paneli; üst üste duran altı panelden biri |
98+
| `src/styles/global.css` | Tasarım sistemi (ana blogla aynı token seti) |
99+
| `src/styles/fonts.css` | Budanmış kesitlerin @font-face tanımları |
100+
| `scripts/` | Font, ikon ve paylaşım kartı üreticileri |
101+
102+
Tasarım kararları ve içerik ekleme için `README.md`. `CLAUDE.md` bu
103+
dosyaya sembolik bağdır; ikisi tek kaynaktır.

‎CLAUDE.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
AGENTS.md

‎README.md‎

Lines changed: 110 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,97 @@
11
# Equinox
22

3-
**Equinox** is the public gateway for Samet Başbuğ’s small web ecosystem: publishing surfaces, experiments, the shared Orbit timeline, and social profiles in one quiet place.
4-
5-
Live site: **https://equinox.sametbasbug.dev**
6-
7-
## What it is
8-
9-
Equinox is intentionally simple. It behaves like a lightweight link hub, but it is owned, static, fast, and shaped around the ecosystem instead of a third-party profile page.
10-
11-
Current destinations:
12-
13-
- **Ana Blog** — long-form posts, notes, and glossary entries
14-
- **Equinox Haber** — concise news publishing surface
15-
- **Equinox Orbit** — shared public timeline for Nyx, Hemera, and Asteria
16-
- **Signal Drift** — narrative survival experiment set inside the Equinox universe
17-
- **Status** — public status and surface index
18-
19-
Social links currently point to GitHub, X, Instagram, and Moltbook.
20-
21-
## Design notes
22-
23-
The page should stay:
24-
25-
- **Fast first** — no heavy runtime, no unnecessary client JavaScript
26-
- **Clear first** — site cards for primary destinations, compact chips for social links
27-
- **Atmospheric second** — Equinox mood in the background, not content bloat
28-
- **Low maintenance** — static Astro build, GitHub Pages deployment
29-
30-
If a future change makes the page feel like a full portal, it is probably too much. This is a door, not a lobby.
3+
**Equinox**, Samet Başbuğ'un küçük web ekosisteminin giriş kapısı: yayın
4+
yüzeyleri, deneyler, ajanların ortak akışı ve sosyal hesaplar tek yerde.
5+
6+
Yayında: **https://equinox.sametbasbug.dev**
7+
8+
## Ne olduğu
9+
10+
Tek sayfa. Bir kimlik bloğu, bir konsol, sosyal bağlantılar ve kadro
11+
şeridi. Bilerek kısa: burası bir kapı, lobi değil. Sayfanın işi
12+
ziyaretçiyi üç saniyede doğru alana göndermek.
13+
14+
Kapılar:
15+
16+
- **Ana Blog** — yazılar, notlar, sözlük
17+
- **Equinox Haber** — haber akışı
18+
- **Equinox Orbit** — ajanların ortak alanı
19+
- **Model Atlası** — yapay zekâ modeli karşılaştırma rehberi
20+
- **Signal Drift** — anlatı temelli hayatta kalma oyunu
21+
- **Status** — durum panosu
22+
23+
## Tasarım
24+
25+
Ana blogla (`sametbasbug.dev`) aynı tasarım sistemini paylaşır: aynı
26+
renk tokenleri, aynı üç yazı tipi, aynı gece/gündüz mantığı. İki site
27+
yan yana konduğunda tek elden çıktığı anlaşılmalı — ama hub kendi
28+
fikrini taşır.
29+
30+
**Eşik.** Ekinoks, gündüzle gecenin eşit olduğu an. Sayfanın adı bu
31+
geçişi taşıyor: "Equinox" yazısı kordan tüle uzanan bir gradyanla
32+
yazılıyor, hemen altından sağa doğru bir ufuk çizgisi çekiliyor.
33+
34+
**Konsol.** Sayfanın kalbi tek bir alet: solda yörünge, sağında panel.
35+
Yörünge ekosistemin kendisi — ortada Equinox, çevresinde altı alan — ve
36+
aynı zamanda kumandası. Bir düğüm seçilince yanındaki panel o alanın
37+
kartına dönüşür: adı, alan adı, tanımı ve rengi. Halkalar döner,
38+
düğümler durur; hareket eden bir hedefe tıklamak zorunda kalınmasın
39+
diye. Masaüstünde üzerine gelmek seçmeye yeter, yani siteye gitmek yine
40+
tek tık. Şema her ekranda var; telefonda küçülüp panelin üstüne oturur
41+
ve düğümler orada 46 px'lik dokunma hedefleri olur.
42+
43+
Ayrı bir kart ızgarası yok, çünkü altı alanın adı ve ikonu zaten
44+
yörüngede duruyor — aynı listeyi iki kez göstermenin anlamı yoktu.
45+
46+
**Kapı.** Panelin sol kenarında ince bir ışık şeridi var ve aralıktan
47+
içeri ışık sızıyor — açılan bir kapı. Rengi seçili alanın ton açısından
48+
geliyor, yani panel her seçimde baştan renkleniyor.
49+
50+
**Tek durum.** Sitenin teması gece; anahtar yok, sistem tercihine de
51+
bakılmıyor. Tasarım baştan bu atmosfere göre kuruldu — gradyanlar,
52+
yıldızlar, ışıyan vurgu renkleri — ve aydınlık bir kesitte aynı etkiyi
53+
vermiyordu. Bir düzeni iyi yapmak, iki düzeni idare etmekten iyi geldi.
54+
55+
## Hız
56+
57+
Tek sayfa, sıfır çerçeve, sıfır ayrı JavaScript dosyası. Bütün betikler
58+
HTML'e gömülü ve toplamı 2,9 KB. En ağır kalem yazı tipleri; onlar da
59+
sayfanın gerçekten kullandığı 127 glife budanmış durumda:
60+
61+
| | önce | sonra |
62+
| --- | --- | --- |
63+
| yazı tipleri | ~310 KB | ~120 KB |
64+
| avatarlar | 216 KB | 20 KB |
65+
| JavaScript | — | 2,9 KB (gömülü) |
66+
67+
## İçerik eklemek
68+
69+
Her şey `src/data/equinox.ts` içinde. Yeni bir kapı eklemek için
70+
`gates` dizisine bir kayıt yazmak yeterli:
71+
72+
```ts
73+
{
74+
id: "yeni",
75+
title: "Yeni Alan",
76+
short: "Yeni", // yörünge düğümündeki etiket
77+
domain: "yeni.sametbasbug.dev",
78+
href: "https://yeni.sametbasbug.dev",
79+
kind: "Araç", // panelde başlığın üstündeki tür
80+
description: "Tek cümlelik anlatım.",
81+
icon: "atlas", // src/data/icons.ts
82+
hue: 190, // 0–360 arası ton açısı
83+
badge: "yeni", // isteğe bağlı
84+
}
85+
```
3186

32-
## Stack
87+
Yörüngedeki düğümler eşit aralıkla yeniden dağılır, konsola yeni bir
88+
panel eklenir, hero'daki "Altı kapı" ifadesi kendini günceller. Elle
89+
sayı yazan hiçbir yer yok.
3390

34-
- [Astro](https://astro.build/)
35-
- GitHub Pages
36-
- Custom domain via [`public/CNAME`](public/CNAME)
91+
Yeni bir ikon gerekiyorsa `src/data/icons.ts`e 24×24 ızgarada, tek renk
92+
çizgi olarak eklenir.
3793

38-
## Local development
94+
## Kurulum
3995

4096
```bash
4197
npm install
@@ -44,25 +100,32 @@ npm run build
44100
npm run preview
45101
```
46102

47-
## Deployment
103+
## Yayın
48104

49-
Deployment is handled by GitHub Actions on pushes to `main`:
105+
`main`'e push edilince GitHub Actions derleyip GitHub Pages'e atıyor:
50106

51-
- Workflow: [`.github/workflows/deploy.yml`](.github/workflows/deploy.yml)
52-
- Domain: `equinox.sametbasbug.dev`
53-
- Output: static site from `astro build`
107+
- İş akışı: [`.github/workflows/deploy.yml`](.github/workflows/deploy.yml)
108+
- Alan adı: `public/CNAME`
109+
- Çıktı: `astro build` → `dist/`
54110

55-
## Project shape
111+
## Yapı
56112

57113
```text
58-
src/pages/index.astro # main link gateway
59-
src/pages/404.astro # custom not-found page
60-
src/styles/global.css # complete page styling
61-
public/CNAME # custom domain
62-
public/favicon.svg # site icon
63-
public/robots.txt # crawler hints
114+
src/data/equinox.ts # tek veri kaynağı
115+
src/data/icons.ts # ikon yolları
116+
src/layouts/Base.astro # head, tema, yapısal veri
117+
src/components/ # Sky, OrbitMap, GatePanel, Icon
118+
src/pages/index.astro # sayfanın tamamı
119+
src/pages/404.astro # kayıp rota
120+
src/styles/ # tasarım sistemi ve @font-face tanımları
121+
scripts/ # font, ikon ve paylaşım kartı üreticileri
122+
public/ # CNAME, ikonlar, fontlar, avatarlar, og.png
64123
```
65124

66-
## Maintenance rule
125+
Mimari notlar ve tuzaklar için [`AGENTS.md`](AGENTS.md).
126+
127+
## Bakım kuralı
67128

68-
Keep Equinox boring in the best way: links should be accurate, layout should stay light, and any new surface should earn its place before being added.
129+
Equinox'u iyi anlamda sıkıcı tut: bağlantılar doğru olsun, yerleşim
130+
hafif kalsın, yeni bir yüzey eklenmeden önce yerini hak etsin. Sayfa bir
131+
portala dönüşmeye başladıysa muhtemelen fazla gelmiştir.

‎astro.config.mjs‎

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎astro.config.ts‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// @ts-check
2+
import { defineConfig } from "astro/config";
3+
import tailwindcss from "@tailwindcss/vite";
4+
import sitemap from "@astrojs/sitemap";
5+
6+
export default defineConfig({
7+
site: "https://equinox.sametbasbug.dev",
8+
devToolbar: { enabled: false },
9+
integrations: [sitemap()],
10+
vite: {
11+
plugins: [tailwindcss()],
12+
},
13+
});

0 commit comments

Comments
 (0)