4.8 KiB
Portfolio New (Gitea Test)
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
Canlı medya kiti verileri
Medya kiti, YouTube kanalının herkese açık abone, toplam görüntülenme ve video
sayılarını YouTube Data API üzerinden saatlik olarak yenileyebilir. Yayın ortamına
YOUTUBE_API_KEY eklemek yeterlidir. İsteğe bağlı olarak YOUTUBE_CHANNEL_ID
tanımlanabilir; tanımlanmadığında @poyrazavsever kullanıcı adı kullanılır.
API anahtarı yoksa veya YouTube isteği başarısız olursa sayfa, data/media-kit.ts
içindeki son doğrulanmış YouTube Studio verilerine otomatik olarak geri döner.
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.