- 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.
3.5 KiB
title, description, order
| title | description | order |
|---|---|---|
| Geliştirme | Neta üzerinde lokal geliştirme yapma ve kod yapısını anlama. | 13 |
Geliştirme
Neta'yı geliştirmek için önce standart bir Next.js uygulaması gibi düşünmek yeterli. Uygulama Supabase'e dışarıdan bağlanır; local geliştirme sırasında da aynı şekilde bir Supabase projesine ihtiyaç vardır.
Kurulum
Önce bağımlılıkları kurun:
npm install
Sonra .env.example dosyasını .env.local olarak kopyalayıp değerleri doldurun:
cp .env.example .env.local
Windows PowerShell için:
Copy-Item .env.example .env.local
Dev server:
npm run dev
Uygulama varsayılan olarak şurada açılır:
http://localhost:3000
Klasör Yapısı
Ana klasörler:
app/
components/
config/
hooks/
lib/
public/
docs/
supabase/
app/
Next.js App Router route'ları burada durur.
Önemli alanlar:
app/(dashboard): Freelancer dashboard ekranları.app/portal: Müşteri portalı.app/api: API route'ları.app/login: Login ekranı.app/register: İlk admin kayıt ekranı.
components/
Paylaşılan UI bileşenleri burada durur.
Örnekler:
- Layout shell bileşenleri.
- Auth bileşenleri.
- UI yardımcıları.
- Dashboard hızlı aksiyon bileşenleri.
config/
Menü ve navigation gibi sabit konfigürasyonlar burada durur.
Önemli dosyalar:
config/sidebar.ts
config/portal-sidebar.ts
Yeni bir dashboard sayfası eklerken genelde sidebar.ts dosyasını da güncellemek gerekir.
lib/
Uygulama yardımcıları ve servis bağlantıları burada durur.
Önemli dosyalar:
lib/supabase/client.tslib/supabase/server.tslib/supabase/admin.tslib/auth/first-admin-setup.tslib/auth/internal-users.tslib/ai.tslib/ai/embeddings.ts
Veri Çekme Deseni
Projede sık kullandığım desen şu:
page.tsxserver component olarak Supabase'ten veriyi çeker.- Client tarafında etkileşim gerekiyorsa veri bir
*-client.tsxbileşenine aktarılır. - Form işlemleri
actions.tsiçinde server action olarak yapılır.
Örnek:
app/(dashboard)/tasks/page.tsx
app/(dashboard)/tasks/tasks-client.tsx
app/(dashboard)/tasks/actions.ts
Bu desen hem okunabilirliği artırır hem de Supabase sorgularının nerede çalıştığını netleştirir.
Yeni Modül Eklemek
Yeni bir modül eklerken şu sırayı izlemek mantıklı:
- Supabase tablosunu ve RLS policy'lerini planla.
- Server page dosyasını oluştur.
- Gerekirse client component oluştur.
- CRUD işlemleri için
actions.tsekle. - Sidebar config'e menü ekle.
- Gerekirse dashboard/analiz ekranına özet veri ekle.
Build
Production build kontrolü:
npm run build
Build başarılıysa TypeScript ve Next.js route üretimi de temel seviyede doğrulanmış olur.
Lint
Lint komutu:
npm run lint
Eğer lint yavaş çalışıyorsa .next klasörünün temiz olduğundan emin olun. Generated dosyaların gereksiz taranması geliştirme deneyimini bozabilir.
.next Cache Temizleme
Dev server bazen eski route type veya cache nedeniyle garip davranabilir. Bu durumda:
Remove-Item .next -Recurse -Force
Sonra tekrar:
npm run dev
Python Yardımcı Dosyası
Repo içinde main.pyw ve requirements.txt bulunur. Bunlar web uygulamasının deploy akışına dahil değildir. Lokal Ollama tabanlı masaüstü metin işleme yardımcısı olarak korunur.
Python bağımlılıkları web build'i için gerekli değildir.