first commit
This commit is contained in:
112
frontend/ADMIN_PANEL_GUIDE.md
Normal file
112
frontend/ADMIN_PANEL_GUIDE.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# Admin Paneli Geliştirme Kılavuzu
|
||||
|
||||
Bu kılavuz, `admin_user.md` dosyasındaki gereksinimlere dayanarak **Next.js 16 + TypeScript + Tailwind v4 + shadcn** teknolojileriyle geliştirilecek Admin Paneli için mimari yapıyı ve geliştirme süreçlerini içerir.
|
||||
|
||||
## 1. Teknoloji Yığını ve Kurulum
|
||||
|
||||
Proje `frontend` klasörü altında yapılandırılmıştır. Gerekli tüm paketler (`package.json`) önceden yüklenmiştir:
|
||||
- **Framework:** Next.js 16 (App Router)
|
||||
- **UI:** React 19, Tailwind CSS v4, shadcn/ui
|
||||
- **İkonlar:** lucide-react
|
||||
- **Validasyon:** Zod
|
||||
- **Auth:** NextAuth.js
|
||||
- **Bildirimler:** SweetAlert2
|
||||
- **Güvenlik:** nextjs-turnstile (Cloudflare)
|
||||
|
||||
### Kurulum ve Çalıştırma
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 2. Proje Klasör Yapısı (Önerilen)
|
||||
|
||||
Admin paneli için aşağıdaki klasör yapısını takip edeceğiz:
|
||||
|
||||
```
|
||||
frontend/
|
||||
├── app/
|
||||
│ ├── admin/ # Admin paneli rotaları
|
||||
│ │ ├── layout.tsx # Admin layout (Sidebar, Header, Auth Check)
|
||||
│ │ ├── dashboard/ # Dashboard (KPI kartları)
|
||||
│ │ ├── users/ # Kullanıcı yönetimi
|
||||
│ │ ├── products/ # Ürün yönetimi
|
||||
│ │ └── settings/ # Ayarlar
|
||||
│ ├── api/auth/[...nextauth]/ # NextAuth API rotası
|
||||
│ └── globals.css # Global stiller (Tailwind)
|
||||
├── components/
|
||||
│ ├── admin/ # Admin'e özel bileşenler
|
||||
│ │ ├── sidebar.tsx
|
||||
│ │ ├── header.tsx
|
||||
│ │ ├── data-table.tsx # Reusable tablo yapısı
|
||||
│ │ └── recent-sales.tsx
|
||||
│ └── ui/ # shadcn bileşenleri (Button, Input, vb.)
|
||||
├── lib/
|
||||
│ ├── utils.ts # cn() ve diğer yardımcılar
|
||||
│ ├── auth.ts # NextAuth konfigürasyonu
|
||||
│ └── db.ts # Veritabanı bağlantısı (veya API client)
|
||||
├── actions/ # Server Actions (Zod validasyonlu)
|
||||
│ ├── auth-actions.ts
|
||||
│ └── user-actions.ts
|
||||
└── public/
|
||||
└── admin/ # Admin ile ilgili statik dosyalar
|
||||
```
|
||||
|
||||
## 3. Ortam Değişkenleri (.env)
|
||||
|
||||
Kök dizindeki `.env` dosyasına aşağıdaki değişkenlerin eklenmesi gerekmektedir:
|
||||
|
||||
```env
|
||||
# NextAuth
|
||||
NEXTAUTH_URL=http://localhost:3000
|
||||
NEXTAUTH_SECRET=gizli-bir-anahtar-olusturun
|
||||
|
||||
# Backend API (Go)
|
||||
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1
|
||||
|
||||
# Cloudflare Turnstile (Login güvenliği için)
|
||||
NEXT_PUBLIC_TURNSTILE_SITEKEY=your-site-key
|
||||
TURNSTILE_SECRET_KEY=your-secret-key
|
||||
```
|
||||
|
||||
## 4. Geliştirme Adımları
|
||||
|
||||
Geliştirme süreci aşağıdaki sırayla ilerleyecektir:
|
||||
|
||||
1. **Temel Bileşenler:** shadcn kurulumunun doğrulanması ve temel bileşenlerin (Button, Input, Card, Form) eklenmesi.
|
||||
2. **Auth Yapısı:** NextAuth yapılandırması ve `middleware.ts` ile `/admin` rotalarının korunması.
|
||||
3. **Login Sayfası:** `/admin/login` sayfasının tasarımı ve Turnstile entegrasyonu.
|
||||
4. **Admin Layout:** Sidebar ve Header içeren ana yerleşim düzeninin oluşturulması.
|
||||
5. **Dashboard:** KPI kartları ve özet tabloların eklenmesi.
|
||||
6. **CRUD Sayfaları:** Kullanıcılar (`/users`), Ürünler (`/products`) sayfalarının geliştirilmesi.
|
||||
|
||||
## 5. Güvenlik ve Validasyon Kuralları
|
||||
|
||||
- **Zod:** Tüm form verileri hem istemci (client) hem sunucu (server) tarafında Zod şemaları ile doğrulanmalıdır.
|
||||
- **Server Actions:** Veri mutasyonları (Create, Update, Delete) Server Actions üzerinden yapılmalı ve oturum kontrolü içermelidir.
|
||||
- **Role-Based Access:** Sadece `admin` veya `superadmin` rolüne sahip kullanıcılar `/admin` paneline erişebilmelidir.
|
||||
|
||||
## 6. Örnek Kullanım (Server Action ile Form)
|
||||
|
||||
```typescript
|
||||
// actions/login.ts
|
||||
"use server"
|
||||
import { z } from "zod";
|
||||
|
||||
const loginSchema = z.object({
|
||||
email: z.string().email(),
|
||||
password: z.string().min(6),
|
||||
});
|
||||
|
||||
export async function loginAction(formData: FormData) {
|
||||
const data = Object.fromEntries(formData);
|
||||
const parsed = loginSchema.safeParse(data);
|
||||
|
||||
if (!parsed.success) {
|
||||
return { error: "Geçersiz veri" };
|
||||
}
|
||||
|
||||
// Auth işlemleri...
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user