Remove obsolete scripts and configuration files for self-hosting and database migrations
- Deleted `pnpm-workspace.yaml` as it is no longer needed. - Removed `apply-migrations.sh` script that handled database migrations. - Eliminated `generate-full-stack-env.mjs` script for environment variable generation. - Deleted `selfhost-backup.sh` script for creating backups of the self-hosted environment. - Removed `selfhost-doctor.sh` script for health checks of the self-hosted services. - Deleted `selfhost-restore.sh` script for restoring backups in the self-hosted environment.
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
---
|
||||
title: Özelleştirme
|
||||
description: Neta'nın marka, arayüz, modül ve iş akışı açısından nasıl özelleştirileceği.
|
||||
order: 14
|
||||
---
|
||||
|
||||
# Özelleştirme
|
||||
|
||||
Neta'yı kendi kullanım şeklime göre geliştirdiğim için özelleştirilebilir kalmasına dikkat ettim. Renkler, logo, menüler, modüller, AI prompt'ları ve portal görünümü ihtiyaçlara göre değiştirilebilir.
|
||||
|
||||
## Logo Değiştirme
|
||||
|
||||
Logo dosyaları `public/logo` altında durur.
|
||||
|
||||
Kullanılan dosyalar:
|
||||
|
||||
```txt
|
||||
public/logo/lightLogoLong.png
|
||||
public/logo/blackLogoLong.png
|
||||
public/logo/iconLogo.png
|
||||
```
|
||||
|
||||
Logo kullanılan ana yerler:
|
||||
|
||||
- Auth ekranı.
|
||||
- Dashboard sidebar.
|
||||
- Portal sidebar.
|
||||
- Mobil header.
|
||||
|
||||
Logo değiştirirken aynı dosya adlarını korumak en kolay yoldur. Dosya adlarını değiştirirseniz ilgili `Image` kullanımlarını da güncellemeniz gerekir.
|
||||
|
||||
## Renk ve Tema
|
||||
|
||||
Ana renk değişkenleri `app/globals.css` içinde tanımlanır.
|
||||
|
||||
Özellikle şu CSS değişkenleri önemlidir:
|
||||
|
||||
```css
|
||||
--poyraz-background
|
||||
--poyraz-foreground
|
||||
--poyraz-primary
|
||||
--poyraz-primary-foreground
|
||||
--poyraz-border
|
||||
--poyraz-muted
|
||||
```
|
||||
|
||||
Tailwind tarafındaki eşlemeler `tailwind.config.ts` içinde bulunur.
|
||||
|
||||
Neta şu an açık tema odaklı tasarlanmıştır. Dark mode altyapısı tamamen ürünleşmiş kabul edilmemelidir.
|
||||
|
||||
## Sidebar Menüleri
|
||||
|
||||
Dashboard menüsü:
|
||||
|
||||
```txt
|
||||
config/sidebar.ts
|
||||
```
|
||||
|
||||
Portal menüsü:
|
||||
|
||||
```txt
|
||||
config/portal-sidebar.ts
|
||||
```
|
||||
|
||||
Yeni bir ekran eklediğinizde önce route'u oluşturun, sonra ilgili sidebar config'e menü elemanı ekleyin.
|
||||
|
||||
Örnek dashboard menü elemanı:
|
||||
|
||||
```ts
|
||||
{ title: "Projeler", href: "/projects", icon: FolderKanban }
|
||||
```
|
||||
|
||||
## Dashboard Özelleştirme
|
||||
|
||||
Dashboard ekranı iki parçadan oluşur:
|
||||
|
||||
```txt
|
||||
app/(dashboard)/page.tsx
|
||||
app/(dashboard)/dashboard-client.tsx
|
||||
```
|
||||
|
||||
Server component veriyi toplar. Client component KPI ve grafik görünümünü üretir.
|
||||
|
||||
Yeni KPI eklemek için:
|
||||
|
||||
1. `page.tsx` içinde gerekli veriyi çekin.
|
||||
2. `dashboardData` içine ekleyin.
|
||||
3. `DashboardClient` tipini güncelleyin.
|
||||
4. UI içinde yeni kartı oluşturun.
|
||||
|
||||
## Yeni Alan Eklemek
|
||||
|
||||
Bir tabloya yeni field eklemek istediğinizde sadece formu güncellemek yetmez.
|
||||
|
||||
Genel sıra:
|
||||
|
||||
1. Supabase tablosuna field ekle.
|
||||
2. RLS etkisini kontrol et.
|
||||
3. Server query select listesine field ekle.
|
||||
4. TypeScript tiplerini güncelle.
|
||||
5. Form input'unu ekle.
|
||||
6. `actions.ts` payload okuma fonksiyonunu güncelle.
|
||||
7. Liste/detay UI'ında göster.
|
||||
|
||||
Bu sırayı izlemek runtime hatalarını azaltır.
|
||||
|
||||
## AI Prompt Özelleştirme
|
||||
|
||||
AI chat prompt'u şu dosyada bulunur:
|
||||
|
||||
```txt
|
||||
app/api/chat/route.ts
|
||||
```
|
||||
|
||||
Finans analizi:
|
||||
|
||||
```txt
|
||||
app/api/finance-analysis/route.ts
|
||||
```
|
||||
|
||||
Proje risk analizi:
|
||||
|
||||
```txt
|
||||
app/api/project-risk/route.ts
|
||||
```
|
||||
|
||||
Prompt'ları değiştirirken dikkat ettiğim noktalar:
|
||||
|
||||
- Cevap dili Türkçe olmalı.
|
||||
- Gereksiz uzun cevap istenmemeli.
|
||||
- Veri yoksa model bunu açıkça söylemeli.
|
||||
- Finansal, hukuki veya klinik kesin hüküm verilmemeli.
|
||||
|
||||
## Client Portal Özelleştirme
|
||||
|
||||
Portal shell:
|
||||
|
||||
```txt
|
||||
components/layout/portal-shell.tsx
|
||||
```
|
||||
|
||||
Portal sayfaları:
|
||||
|
||||
```txt
|
||||
app/portal
|
||||
```
|
||||
|
||||
Müşteriye yeni bir veri göstermek için sadece UI eklemek yetmez. Supabase RLS policy'sinin de o veriye izin vermesi gerekir.
|
||||
|
||||
Önerilen sıra:
|
||||
|
||||
1. Müşteri gerçekten bu veriyi görmeli mi karar ver.
|
||||
2. RLS policy ekle veya güncelle.
|
||||
3. Portal server component içinde sorguyu yaz.
|
||||
4. Client component içinde göster.
|
||||
|
||||
## Yeni Modül Eklemek
|
||||
|
||||
Yeni modül için örnek klasör yapısı:
|
||||
|
||||
```txt
|
||||
app/(dashboard)/new-module/page.tsx
|
||||
app/(dashboard)/new-module/new-module-client.tsx
|
||||
app/(dashboard)/new-module/actions.ts
|
||||
```
|
||||
|
||||
Eğer modül müşteriyle ilişkiliyse `client_id`, projeyle ilişkiliyse `project_id` alanlarını baştan düşünmek iyi olur.
|
||||
|
||||
## Metinleri Türkçeleştirme
|
||||
|
||||
Projede bazı eski dosyalarda karakter bozulmaları veya İngilizce metinler kalmış olabilir. Ürünleştirme sırasında bu metinlerin tek tek düzeltilmesi gerekir.
|
||||
|
||||
Öncelikli yerler:
|
||||
|
||||
- Sidebar başlıkları.
|
||||
- Form label'ları.
|
||||
- Toast mesajları.
|
||||
- Empty state metinleri.
|
||||
- Hata mesajları.
|
||||
|
||||
## Kişisel Kullanıma Göre Sadeleştirme
|
||||
|
||||
Neta'yı herkes aynı şekilde kullanmak zorunda değil. Eğer bazı modüller size gereksizse menüden kaldırabilir, route'ları bırakıp görünürlüğü azaltabilirsiniz.
|
||||
|
||||
Örneğin finans modülünü kullanmayacaksanız:
|
||||
|
||||
- Sidebar'dan kaldırın.
|
||||
- Dashboard finans kartlarını kaldırın.
|
||||
- AI context içinde finans sorgularını sadeleştirin.
|
||||
|
||||
Bu yaklaşım projeyi daha kişisel ve odaklı tutar.
|
||||
Reference in New Issue
Block a user