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:
Poyraz
2026-06-16 09:57:32 +03:00
parent da8c55d1ad
commit 72a0b38f3e
48 changed files with 2463 additions and 13020 deletions
+175
View File
@@ -0,0 +1,175 @@
---
title: Geliştirme
description: Neta üzerinde lokal geliştirme yapma ve kod yapısını anlama.
order: 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:
```bash
npm install
```
Sonra `.env.example` dosyasını `.env.local` olarak kopyalayıp değerleri doldurun:
```bash
cp .env.example .env.local
```
Windows PowerShell için:
```powershell
Copy-Item .env.example .env.local
```
Dev server:
```bash
npm run dev
```
Uygulama varsayılan olarak şurada açılır:
```txt
http://localhost:3000
```
## Klasör Yapısı
Ana klasörler:
```txt
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:
```txt
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.ts`
- `lib/supabase/server.ts`
- `lib/supabase/admin.ts`
- `lib/auth/first-admin-setup.ts`
- `lib/auth/internal-users.ts`
- `lib/ai.ts`
- `lib/ai/embeddings.ts`
## Veri Çekme Deseni
Projede sık kullandığım desen şu:
1. `page.tsx` server component olarak Supabase'ten veriyi çeker.
2. Client tarafında etkileşim gerekiyorsa veri bir `*-client.tsx` bileşenine aktarılır.
3. Form işlemleri `actions.ts` içinde server action olarak yapılır.
Örnek:
```txt
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ı:
1. Supabase tablosunu ve RLS policy'lerini planla.
2. Server page dosyasını oluştur.
3. Gerekirse client component oluştur.
4. CRUD işlemleri için `actions.ts` ekle.
5. Sidebar config'e menü ekle.
6. Gerekirse dashboard/analiz ekranına özet veri ekle.
## Build
Production build kontrolü:
```bash
npm run build
```
Build başarılıysa TypeScript ve Next.js route üretimi de temel seviyede doğrulanmış olur.
## Lint
Lint komutu:
```bash
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:
```powershell
Remove-Item .next -Recurse -Force
```
Sonra tekrar:
```bash
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.