113 lines
4.1 KiB
Markdown
113 lines
4.1 KiB
Markdown
# 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...
|
||
}
|
||
```
|