You are an AI developer assistant. Your task is to generate a complete admin panel scaffold (HTML templates, static assets and server-side route stubs) for a Go Fiber project. Use only the following frontend libraries already available in the project dependencies: Alpine.js, Bootstrap 5, HTMX, jQuery. Do not add other frameworks. Produce code artifacts described in the "Outputs" section below. Constraints & requirements (önemli) - Kullanılan frontend kütüphaneleri: Alpine.js (v3), HTMX, Bootstrap 5, jQuery — bunları proje /public üzerinden kullan. - Tema: Koyu ve aydın (dark/light) destekli olacak. Kullanıcı temayı değiştirdiğinde tercih localStorage'da saklansın ve sayfa yenilendiğinde korunmalı. - Layout: Sol sabit (desktop) sidebar; mobilde off-canvas veya slide-in davranışı. Üstte sticky header (navbar) — hep görünür. Ana içerik HTMX ile parçalar halinde yüklensin (partials/fragments). - Login sayfası: Cloudflare Turnstile ile korumalı. Turnstile için sitekey ve secret key placeholder kullanılacak (örneğin: YOUR_TURNSTILE_SITEKEY, YOUR_TURNSTILE_SECRET). Login formu HTMX ile POST gönderecek, sunucu Turnstile doğrulaması yapacak. - Accessibility: ARIA nitelikleri eklensin, klavye navigasyonu çalışsın, renk kontrastı erişilebilir seviyede olsun. - Responsive: Desktop / tablet / mobile uyumlu olmalı. - Minimal JS: Alpine.js ile UI state yönetimi (tema toggle, mobil sidebar), HTMX ile partial yükleme, küçük helper JS dosyası için jQuery veya vanilla kullanılabilir. Büyük bundler veya build pipeline gerektirmeyecek. - Security: CSRF, XSS ve session güvenliği için sunucu tarafı notları verilecek (CSRF token uygulaması önerisi, Turnstile server-side doğrulama, secure cookie flags, rate limiting). - Dosya/dizin yapısı: templates/ (HTML şablonları), public/css, public/js, public/assets. Server tarafı Go Fiber rotaları ve basit handler açıklamaları verilecek (kod değil; hangi endpoint ne döner). Görsel / UX istekleri - Tema değişimi için hem simge hem metin olacak (ör. güneş/ay). Geçiş animasyonu küçük (0.2s - 0.35s). - Sidebar: ikon + etiket, aktif öğe vurgulu, mümkünse collapse/expand (yalnızca genişlik daraltıldığında). - Header: sol marka, ortada opsiyonel breadcrumb (isteğe bağlı), sağda tema toggle ve kullanıcı dropdown. - İçerik alanı: kart bazlı, boşluklar (padding/margin) dengeli. - Animasyonlar: HTMX swap sırasında fade veya slide geçişi (kısa). - Renk paleti: net iki palet tanımı (aydın için açık nötr arka plan + mavi aksan; koyu için koyu mavi/şeftali aksan). Renkler CSS custom properties (CSS değişkenleri) ile tanımlansın. Girdi (input) - ./public Alpine.js, Bootstrap, HTMX, jQuery (mevcut). - Kullanıcı sağlayacak: Cloudflare Turnstile sitekey/secret (placeholder bırakılacak). - Sunucu: Go Fiber (kullanıcı Fiber projesine kolayca entegre edebilsin). Outputs — AI'nin üretmesi gerekenler (tam liste) 1. Temel layout şablonu (templates/layout.html veya .tmpl): - ./public/assets (Bootstrap CSS/JS, HTMX, Alpine, jQuery, Turnstile script). - Body: sticky header, sol sidebar, main content container (#main-content) — HTMX hedefi. - Tema yönetimi için Alpine veri nesnesi referansları (tema toggle, mobile sidebar kontrol). - Ana layout'ta HTMX ile fragment yüklemeye uygun linkler (hx-get, hx-target="#main-content", hx-swap). 2. Login şablonu (templates/login.html): - Cloudflare Turnstile widget (data-sitekey placeholder). - Form HTMX ile POST atacak (hx-post="/login", hx-target="#login-feedback" vb.). - Başarı/hata fragment'leri için sunucu tarafı cevap formatı belirtilecek. 3. Örnek HTMX fragment'leri (templates/fragments/*): - dashboard fragment - users list fragment - settings fragment (her fragment minimal içerik, HTMX swap ile çalışacak biçimde) 4. public/js/main.js (küçük açıklama, içerik oluşturulacak): - Alpine tema manager yapısı (isDark reactive, save/load localStorage, toggle fonksiyonları). - Mobile sidebar toggle fonksiyonları. - HTMX üzerinden fragment yüklenirken küçük loading indicator veya class ekleme. - Turnstile ile integration notu (widget render ve token gönderimi; token'ın login formu ile nasıl dahil olacağı). 5. public/css/theme.css: - CSS custom properties hem light hem dark için. - Sidebar, header, card stilleri, responsive medya sorguları. - Küçük animasyonlar (fade, transition). 6. Sunucu tarafı: Go Fiber rotaları listesi ve davranış açıklamaları (kod değil, endpoint + beklenen request/response): - GET /login -> login şablonunu döndür - POST /login -> Turnstile token doğrulaması + credentials doğrulama; başarılıysa session cookie oluştur ve /admin yönlendir (HTMX için fragment veya redirect) - GET /admin -> layout render (veya layout + default fragment) - GET /admin/content/dashboard -> dashboard fragment (HTMX hedefi) - GET /admin/content/users -> users fragment - GET /admin/content/settings -> settings fragment - GET /logout -> oturumu sonlandır - admin middleware ye agit tum rotalar - (Opsiyonel) POST /api/users/* gibi API uç noktaları (JSON) — HTMX yerine AJAX gerekeceğinde kullanılacak 7. Güvenlik & operasyonel notlar (dokümantasyon/metin): - Turnstile: server-side doğrulama nasıl yapılır (istek: secret ve token ile Cloudflare API endpoint çağrısı; doğrulama şartı). - CSRF: HTMX formlarında CSRF token nasıl geçilir (hidden input veya header); Fiber için örnek header adı ve cookie ilişkisi (kod değil açıklama). - Session yönetimi: secure, httpOnly, SameSite=strict/ Lax önerisi. - Rate limiting önerisi (ör. login için). - Input validation and output escaping reminder. 8. Acceptance criteria / test senaryoları: - Tema toggle yapıldığında localStorage güncellenmeli ve sayfa yenilendiğinde tercih korunmalı. - Sidebar linkine tıklandığında HTMX ile fragment yüklensin, header sabit kalsın. - Mobilde sidebar toggle düzgün çalışsın ve overlay kapanışı sağlansın. - Login formu Turnstile widget üretiyor; form gönderildiğinde Sunucu Turnstile token'ı doğruluyor — geçerse oturum açma gerçekleşiyor, geçmezse hata mesajı. - Erişilemeyen bir fragment istenirse HTMX hedefinde uygun hata gösterimi (alert/flash) gelsin. - Temel a11y kontrolü: tüm interaktif öğeler klavye ile erişilebilir olsun, img/ikonlar için alt metin/aria-label. Ek istekler / tercih edilen çıktı biçimi - Üretilen dosyaları dosya isimleriyle ve kısa açıklamalarıyla listelerken KOD VERMEYİN — sadece hangi dosyayı ve ne içermesi gerektiğini net maddelemeyle verin (ama AI kod da üretirse ayrı bir adımda bunu isteyebilirim). - Turnstile sitekey/secret için placeholder kullanın ve kullanıcıya nerede değiştireceğini açıkça belirtin. - HTMX fragment response biçimi: tam HTML fragment (sadece main-content içeriği) veya JSON+HTML toggles; tercihen saf HTML fragment kullanılsın. - Her dosya için kısa "örnek içerik açıklaması" verin (ör. dashboard fragment: 3 adet statistic card ve bir tablo). Çıktı teslim formatı - Lütfen üretim çıktısını şu şekilde organize et: - "Files to create" listesi (path + kısa açıklama) - "Server endpoints" listesi (method + path + beklenen davranış) - "Güvenlik & deployment notları" - "Acceptance tests" - Tekrar ediyorum: BU PROMPT sadece kılavuzdur — şu an yalnızca prompt dosyasını istiyorum, KOD YOK. Eğer kod oluşturmaya hazırsan, ayrı bir istekte bulunacağım. Not: Kullanıcı adı ve mevcut package.json bağımlılıklarını unutma: Alpine.js, Bootstrap 5, htmx, jquery. Cloudflare Turnstile sitekey/secret işaretlerini placeholder bırak.