- Added support for conditional rendering of the NekoFollower component in AppShell based on ENABLE_NEKO_FOLLOWER. - Introduced MarkdownImage component in BlogDetailContent for handling images in markdown, supporting both local and external assets. - Improved BlogToc component to use IntersectionObserver for better performance in tracking active headings. - Refactored ContentContent to utilize YoutubeLiteEmbed for embedding YouTube videos, simplifying the video rendering logic. - Created a new YoutubeLiteEmbed component for lazy loading YouTube videos with thumbnail previews. - Updated site-settings to include ENABLE_NEKO_FOLLOWER constant for feature toggling. - Enhanced next.config.ts with image optimization settings for better performance. - Refactored snippets-content to improve code readability and structure. - Cleaned up home-hero and home-videos-section components for better layout and performance.
Portfolio New
Bu monorepo, Next.js tabanlı portfolyo web uygulaması ve Electron ile geliştirilen veri yönetim panelini bir arada sunar.
Mimari
flowchart TD
subgraph WebUygulama["Web Uygulama (Next.js)"]
A[app/] --> B[components/]
A --> C[content/]
A --> D[data/]
A --> E[public/]
B --> F[UI Bileşenleri]
C --> G[Markdown Blog/Podcast]
D --> H[TypeScript Veri Kaynakları]
E --> I[Statik Dosyalar]
end
subgraph ElectronDataPanel["Electron Data Panel"]
J[apps/data-panel/] --> K[renderer/]
J --> L[main.cjs]
J --> M[preload.cjs]
K --> N[configs.js]
J --> O[assets/]
J --> P[Electron build scripts]
end
J --> D
J --> E
J --> C
J --> Q[Git ile publish]
Q --> D
Q --> E
Q --> C
Klasörler ve Akış
app/: Next.js route ve sayfa yapısıcomponents/: UI bileşenleri (React)content/: Markdown içerikler (blog, podcast)data/: TypeScript veri kaynakları (projeler, referanslar, eğitim vb.)public/: Statik dosyalar (görseller, PDF, avatar)apps/data-panel/: Electron tabanlı içerik yönetim panelirenderer/: Panelin arayüzü ve form konfigürasyonlarımain.cjs: Electron ana süreç, dosya ve git işlemlericonfigs.js: Koleksiyon ve form alanı yönetimi
Akış
- Web uygulaması Next.js ile çalışır, içerik ve veri dosyalarını okur.
- Electron paneli ile içerik (blog/podcast), veri (
data/*.ts) ve medya (public/) yönetimi yapılır. - Panelde yapılan değişiklikler git ile commit/push edilerek yayınlanır.
- Paneldeki koleksiyonlar ve form alanları
configs.jsile özelleştirilebilir.
Gereksinimler
- Node.js 20+
- pnpm 9+
- Git
Kurulum
pnpm install
Frontend Komutları
pnpm dev
pnpm lint
pnpm build
pnpm start
Electron Data Panel Komutları
pnpm panel:dev
pnpm panel:clean
pnpm panel:pack
pnpm panel:dist
pnpm panel:dist:win
pnpm panel:dist:portable
İçerik Kaynakları
- Blog markdown:
content/blog/*.md - Podcast markdown:
content/podcasts/yazilim/*.mdcontent/podcasts/masa-basi/*.md
- Site verileri:
data/*.ts - RSS feed:
/rss.xml(blog yazılarından otomatik üretilir)
Electron Panel Özellikleri
- Blog/podcast içeriği oluşturma, güncelleme, silme
data/*.tsexport dizilerini form tabanlı yönetmepublic/altına medya yükleme/silmegit add + commit + pushile yayınlama akışı
Özelleştirme ve Açık Kaynak
Dashboard tab/field özelleştirme
Paneldeki koleksiyonlar ve form alanları apps/data-panel/renderer/configs.js dosyasından yönetilir.
- Yeni tab/collection ekleyebilirsin
- Alan tiplerini (
text,textarea,number,url) değiştirebilirsin - Kart görünümünü özelleştirebilirsin
Farklı repo kökü ile çalıştırma
Panel varsayılan olarak bu monorepo kökünü kullanır. Farklı klasör için:
- Çevresel değişken:
PORTFOLIO_WORKSPACE_ROOT - veya CLI argüman:
--workspace-root=<path>
Örnek (PowerShell):
$env:PORTFOLIO_WORKSPACE_ROOT = "D:\my-portfolio-repo"
pnpm panel:dev
Örnek (packaged exe):
.\apps\data-panel\dist\portfolio-data-panel-0.1.0-x64-portable.exe --workspace-root="D:\my-portfolio-repo"
Panel başlarken data, public, content/blog, content/podcasts klasörlerini doğrular.
Publish akışını değiştirme
Git publish akışı apps/data-panel/main.cjs içindeki publishChanges fonksiyonunda yönetilir.
Varsayılan akış:
git add data public content- Otomatik veya manuel commit message
git push
İstersen branch seçimi, PR tabanlı akış veya sadece commit modu ekleyebilirsin.
Yayın ve Kontrol Listesi
pnpm lintpnpm build- İçerik/veri kontrolü (
content/,data/,public/) - Electron panel akışı kontrolü (
pnpm panel:dev) - Gerekirse distributable kontrolü (
pnpm panel:pack/pnpm panel:dist)
Sorun Giderme
YouTube cookie/SameSite uyarıları
Embed URL'ler youtube-nocookie.com formatına çekildi. Bu değişiklik cross-site cookie kaynaklı konsol gürültüsünü azaltır.
Tarayıcı güvenlik politikası nedeniyle bazı üçüncü parti loglar tamamen sıfırlanamayabilir; bu durumda uygulama davranışı etkilenmez.