Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,13 @@ projeler/*/*/.env.local
# Mint
.mintlify/

# Statik export build çıktısı (scripts/build-static.sh)
dist/
export.zip

# Vercel
.vercel/

# Logs / temp
*.log
tmp/
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ Format [Keep a Changelog](https://keepachangelog.com/) ve sürümleme
[github.com/komunite/harness-docs](https://github.com/komunite/harness-docs).
- Yayın adresi `harness.lokomotif.ai` → `harness.komunite.com.tr`
olarak değişti; repo içindeki tüm URL referansları güncellendi.
- Hosting Mintlify Cloud'dan çıkarıldı: site artık `mint export` ile
üretilen statik build olarak **Vercel** üzerinde self-host ediliyor
(`vercel.json` + `scripts/build-static.sh`). Eski adres 301 ile yeni
adrese yönlenir. Statik modda hosted search ve AI assistant
bulunmadığından arama UI'ı build sırasında gizlenir.
- Vercel proxy yaklaşımı bırakıldı; Mintlify Cloud doğrudan host eder.

### Düzeltmeler
Expand Down
8 changes: 5 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ gerektiğini söyler.

**Düzenek Mühendisliği (Harness Engineering)** — AI kod ajanlarını
güvenilir kılan çevreyi tasarlayan Türkçe açık kaynak müfredat.
12 ders + 6 proje + 8 şablon + skill paketi. **Mintlify Cloud** üzerinde
[harness.komunite.com.tr](https://harness.komunite.com.tr) adresinde host
edilir; `main`'e push → otomatik deploy.
12 ders + 6 proje + 8 şablon + skill paketi. İçerik Mintlify formatında
yazılır, `mint export` ile statik siteye çevrilip **Vercel** üzerinde
[harness.komunite.com.tr](https://harness.komunite.com.tr) adresinde
self-host edilir; `main`'e push → Vercel otomatik build + deploy
(`vercel.json` + `scripts/build-static.sh`).

## Hızlı başlangıç

Expand Down
61 changes: 54 additions & 7 deletions MEMORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ burada yaşar.
| 10 | 2026-05-19 | [Diyagram redesign + README cila](#10-2026-05-19--diyagram-redesign--readme-cila) |
| 11 | 2026-05-21 | [Diyagram mobil uyumu + dark logo](#11-2026-05-21--diyagram-mobil-uyumu--dark-logo) |
| 12 | 2026-08-15 | [komunite org'una taşınma + yeni domain](#12-2026-08-15--komunite-orguna-tasinma--yeni-domain) |
| 13 | 2026-08-15 | [Mintlify Cloud'dan çıkış: Vercel'de statik self-host](#13-2026-08-15--mintlify-clouddan-cikis-vercelde-statik-self-host) |

## Terim haritası

Expand Down Expand Up @@ -61,13 +62,14 @@ sonradan elle düzeltildi.

- [x] Mintlify Cloud üzerinde deploy edildi; Vercel proxy yaklaşımı
bırakıldı.
- [ ] Mintlify dashboard'da custom domain'i
`harness.komunite.com.tr` olarak değiştir + deployment'ın
`komunite/harness-docs` repo'suna bağlı olduğunu doğrula
(dashboard login gerektirdiği için manuel; DNS CNAME hazır).
- [ ] Yeni domain canlıya alındıktan sonra `harness.lokomotif.ai` →
`harness.komunite.com.tr` 301 redirect kur (Cloudflare Redirect
Rule; eski kayıt proxied'a çevrilmeli). SEO için önemli.
- [x] ~~Mintlify dashboard'da custom domain değişikliği~~ — geçersiz:
Faz 13'te hosting tamamen Mintlify Cloud'dan çıkarıldı, site Vercel'de
self-host ediliyor. 301 redirect `vercel.json` içinde.
- [ ] Mintlify Cloud aboneliği/projesi artık kullanılmıyor — dashboard
üzerinden kapat/iptal et (kullanıcı; billing erişimi gerekir).
- [ ] Statik modda arama yok (arama UI'ı build'de gizleniyor).
İstenirse Pagefind ile client-side arama eklenebilir:
build-static.sh sonunda `npx pagefind --site dist` + UI entegrasyonu.
- [x] 12 dersin diyagramları yeniden tasarlandı; SVG sanitizer
sorunundan dolayı tamamı pure HTML/CSS'e geçirildi.
- [x] README global standartlarda yeniden yazıldı + OG cover hero
Expand Down Expand Up @@ -651,3 +653,48 @@ sonrasında eski domain'den 301 redirect ("Sıradaki adımlar"da).
### Commits

- (bu commit) — `chore:` org taşınması + domain migration.

## 13. 2026-08-15 — Mintlify Cloud'dan çıkış: Vercel'de statik self-host

**Hedef**: Repo transferi Mintlify Cloud'un GitHub bağlantısını
kopardı (deploy tetiklenmiyordu, dashboard login'i gerekiyordu).
Kullanıcı kararı: Mintlify Cloud'dan tamamen çık, `mint export`
statik çıktısını kendi Vercel team'inde host et.

### Mimari

- `mint export` (ücretsiz CLI, login gerektirmiyor — izole HOME ile
doğrulandı) 29 sayfayı `dizin/index.html` yapısında tamamen statik
export ediyor; Next.js asset'leri dahil ~50 MB.
- `scripts/build-static.sh`: export → `dist/`'e aç → post-process:
1. `https://undefined.mintlify.app` → gerçek domain (export,
custom domain'i bilmediği için OG/canonical URL'lerini böyle
basıyor).
2. Arama UI'ı gizleyen `<style>` inject (`#search-bar-entry`,
`#search-bar-entry-mobile`, `[aria-label="Open search"]`) —
statik modda arama Mintlify backend'i istiyor, modal ziyaretçiye
"Run mint login" gösteriyordu. Not: repo'daki `style.css` export
HTML'inde referans edilmiyor (stil inline gömülü), o yüzden
inject `</head>` öncesine yapılıyor.
3. `serve.js` / `Start Docs.*` local önizleme dosyaları silinir.
- `vercel.json`: `buildCommand` = build-static.sh, `outputDirectory`
= dist, `installCommand` boş (repo'da package.json yok), host-bazlı
301: `harness.lokomotif.ai/*` → `harness.komunite.com.tr/*`.
- Vercel projesi `harness-docs` (komunite team), GitHub
`komunite/harness-docs`'a bağlı; `main`'e push → otomatik deploy.
- DNS (Cloudflare): `harness.komunite.com.tr` ve
`harness.lokomotif.ai` CNAME → `cname.vercel-dns.com` (DNS only).

### Bilinen kısıtlar

- Export, FontAwesome ikonlarını ve KaTeX CSS'ini Mintlify'ın public
CloudFront CDN'inden çeker — çalışıyor ama tam air-gap değil.
Gerekirse asset'ler bundle edilebilir.
- Hosted search + AI assistant statik modda yok. Pagefind ile arama
geri getirilebilir ("Sıradaki adımlar").
- `mint dev` / `mint validate` / CI workflow'u aynen çalışmaya devam
ediyor; içerik formatı değişmedi, sadece hosting değişti.

### Commits

- (bu commit) — `feat:` Vercel statik self-host pipeline.
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,16 @@ mint broken-links # iç linkler çözülüyor mu

## Deploy

Site **Mintlify Cloud** üzerinde host edilir. Üretim deploy'ı yalnızca `main` dalına push olduğunda tetiklenir (otomatik).
Site, Mintlify'ın açık CLI'ındaki `mint export` komutuyla **statik siteye
çevrilir ve Vercel üzerinde self-host edilir**. `main` dalına push olduğunda
Vercel, [`scripts/build-static.sh`](scripts/build-static.sh) betiğini koşar
(bkz. [`vercel.json`](vercel.json)) ve çıktıyı yayınlar.

- Özel alan adı: **[harness.komunite.com.tr](https://harness.komunite.com.tr)**
- TLS sertifikası Mintlify tarafından otomatik yönetilir
- Search ve AI assistant entegre çalışır
- TLS sertifikası Vercel tarafından otomatik yönetilir
- Eski adres `harness.lokomotif.ai` kalıcı (301) olarak yeni adrese yönlenir
- Statik modda Mintlify'ın hosted search ve AI assistant özellikleri
çalışmaz; arama UI'ı build sırasında gizlenir

Mintlify yapılandırması [`docs.json`](docs.json) dosyasındadır; SEO ve Open Graph yapılandırması aynı dosyadaki `seo.metatags` bloğundadır.

Expand Down
35 changes: 35 additions & 0 deletions scripts/build-static.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Mintlify içeriğini statik siteye çevirir ve Vercel'in sunacağı dist/
# dizinini hazırlar. Vercel'de buildCommand olarak koşar (bkz. vercel.json);
# local test: bash scripts/build-static.sh && npx serve dist
set -euo pipefail

SITE_URL="${SITE_URL:-https://harness.komunite.com.tr}"

npx -y mint export --output export.zip

rm -rf dist
mkdir dist
if command -v unzip >/dev/null 2>&1; then
unzip -oq export.zip -d dist
elif command -v bsdtar >/dev/null 2>&1; then
bsdtar -xf export.zip -C dist
else
python3 -c "import zipfile; zipfile.ZipFile('export.zip').extractall('dist')"
fi
rm -f export.zip

# Local önizleme yardımcıları hosting'de gereksiz.
rm -f dist/serve.js "dist/Start Docs.bat" "dist/Start Docs.command"

# Export, custom domain'i bilmediği için OG/canonical URL'lerini
# undefined.mintlify.app olarak basıyor; gerçek domain ile değiştir.
# Statik modda arama Mintlify backend'i istediği için arama UI'ı gizleniyor
# ("Run mint login" mesajı ziyaretçiye gösterilemez).
HIDE_SEARCH_CSS='<style>#search-bar-entry,#search-bar-entry-mobile,[aria-label="Open search"]{display:none !important}</style>'
find dist -name '*.html' -print0 | while IFS= read -r -d '' f; do
perl -pi -e "s|https://undefined\\.mintlify\\.app|$SITE_URL|g" "$f"
perl -pi -e "s|</head>|$HIDE_SEARCH_CSS</head>|" "$f"
done

echo "dist/ hazır: $(find dist -name '*.html' | wc -l | tr -d ' ') HTML sayfası"
16 changes: 16 additions & 0 deletions vercel.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"buildCommand": "bash scripts/build-static.sh",
"outputDirectory": "dist",
"installCommand": "",
"framework": null,
"trailingSlash": false,
"redirects": [
{
"source": "/:path*",
"has": [{ "type": "host", "value": "harness.lokomotif.ai" }],
"destination": "https://harness.komunite.com.tr/:path*",
"permanent": true
}
]
}
Loading