175 lines
6.1 KiB
Markdown
175 lines
6.1 KiB
Markdown
# Bogazici Admin Dashboard
|
||
|
||
Bogazici Denizcilik yonetim paneli. Kurs, duyuru, sayfa, kullanici ve icerik yonetimi icin gelistirilmis kapsamli bir CMS admin uygulamasidir.
|
||
|
||
## Ozellikler
|
||
|
||
### Icerik Yonetimi
|
||
|
||
- **Kurslar** - Kurs olusturma, duzenleme, kategori atama, fiyatlandirma, gorsel yukleme
|
||
- **Kurs Takvimleri** - Takvim planlamasi, kontenjan takibi, egitmen atama
|
||
- **Kategoriler** - Kurslari kategorilere ayirma, slug, SEO meta bilgileri
|
||
- **Duyurular** - Blog tarzinda duyurular, zengin metin editoru, one cikan gorseller
|
||
- **Sayfalar** - Blok tabanli sayfa olusturucu ile dinamik CMS sayfalari
|
||
- **SSS** - Sikca sorulan sorular yonetimi
|
||
- **Basari Hikayeleri** - Musteri referanslari ve basari hikayeleri
|
||
|
||
### Site Yonetimi
|
||
|
||
- **Hero Slider** - Ana sayfa karousel yonetimi (gorsel ve video destegi)
|
||
- **Menuler** - Hiyerarsik navigasyon menu yonetimi
|
||
- **Rehber Kartlari** - Bilgilendirme kartlari yonetimi
|
||
- **Ayarlar** - Sistem genelinde yapilandirma
|
||
|
||
### Kullanici ve Erisim
|
||
|
||
- **Kullanici Yonetimi** - Admin kullanicilari CRUD islemleri, rol atama
|
||
- **Rol Tabanli Erisim Kontrolu (RBAC)** - Modullere gore ayrilmis detayli izin tanimlari
|
||
- **Lead Yonetimi** - Farkli kaynaklardan (form, WhatsApp) gelen leadlerin takibi, UTM parametreleri, KVKK onay takibi
|
||
- **Yorum Moderasyonu** - Yorumlari onaylama/reddetme, admin yaniti
|
||
|
||
### Arayuz
|
||
|
||
- Acik/karanlik/sistem tema destegi
|
||
- Responsive tasarim
|
||
- Komut paleti (Cmd/Ctrl+K) ile hizli navigasyon
|
||
- Siralama, filtreleme ve sayfalama destekli veri tablolari
|
||
- Zengin metin editoru (TipTap)
|
||
- Gorsel ve video yukleme
|
||
- Erisebilirlik (a11y) destegi
|
||
- RTL/LTR dil yonu destegi
|
||
- Toast bildirimleri ve ilerleme gostergeleri
|
||
|
||
## Teknoloji Yigini
|
||
|
||
| Katman | Teknoloji |
|
||
|---|---|
|
||
| **UI Framework** | [React 19](https://react.dev) |
|
||
| **Build** | [Vite 7](https://vitejs.dev) + [SWC](https://swc.rs) |
|
||
| **Bilesenler** | [Shadcn UI](https://ui.shadcn.com) (TailwindCSS + Radix UI) |
|
||
| **Routing** | [TanStack Router](https://tanstack.com/router) (dosya tabanli, otomatik code splitting) |
|
||
| **Sunucu Durumu** | [TanStack React Query](https://tanstack.com/query) |
|
||
| **Istemci Durumu** | [Zustand](https://zustand.docs.pmnd.rs) |
|
||
| **Formlar** | [React Hook Form](https://react-hook-form.com) + [Zod](https://zod.dev) |
|
||
| **Zengin Metin** | [TipTap](https://tiptap.dev) |
|
||
| **Grafikler** | [Recharts](https://recharts.org) |
|
||
| **Tablolar** | [TanStack Table](https://tanstack.com/table) |
|
||
| **HTTP** | [Axios](https://axios-http.com) (Bearer token interceptor) |
|
||
| **Stil** | [TailwindCSS 4](https://tailwindcss.com) |
|
||
| **Ikonlar** | [Lucide](https://lucide.dev) |
|
||
| **Dil** | [TypeScript](https://www.typescriptlang.org) |
|
||
| **Lint/Format** | [ESLint](https://eslint.org) + [Prettier](https://prettier.io) |
|
||
|
||
## Proje Yapisi
|
||
|
||
```
|
||
src/
|
||
├── routes/ # TanStack Router dosya tabanli yonlendirme
|
||
│ ├── (auth)/ # Giris sayfalari
|
||
│ ├── _authenticated/ # Korunmus rotalar (auth guard)
|
||
│ │ ├── dashboard/ # Ana panel
|
||
│ │ ├── courses/ # Kurs yonetimi
|
||
│ │ ├── categories/ # Kategori yonetimi
|
||
│ │ ├── schedules/ # Takvim yonetimi
|
||
│ │ ├── announcements/ # Duyuru yonetimi
|
||
│ │ ├── pages/ # Sayfa yonetimi (CMS)
|
||
│ │ ├── users/ # Kullanici yonetimi
|
||
│ │ ├── roles/ # Rol yonetimi
|
||
│ │ ├── leads/ # Lead yonetimi
|
||
│ │ ├── comments/ # Yorum moderasyonu
|
||
│ │ ├── hero-slides/ # Hero slider
|
||
│ │ ├── faqs/ # SSS
|
||
│ │ ├── menus/ # Menu yonetimi
|
||
│ │ ├── guide-cards/ # Rehber kartlari
|
||
│ │ ├── stories/ # Basari hikayeleri
|
||
│ │ └── settings/ # Ayarlar
|
||
│ └── (errors)/ # Hata sayfalari (403, 404, 500)
|
||
├── features/ # Ozellik modulleri (her module CRUD islemleri)
|
||
├── components/
|
||
│ ├── ui/ # Shadcn UI bilesenler (40+)
|
||
│ ├── layout/ # Sidebar, header, ana layout
|
||
│ ├── data-table/ # Yeniden kullanilabilir tablo bilesenleri
|
||
│ └── block-manager/ # Sayfa blok yonetimi
|
||
├── lib/api/ # API istemcisi ve modul bazli API fonksiyonlari
|
||
├── stores/ # Zustand durum yonetimi
|
||
├── context/ # React context (tema, font, yon, layout)
|
||
└── hooks/ # Ozel React hooklari
|
||
```
|
||
|
||
## Kurulum
|
||
|
||
### Gereksinimler
|
||
|
||
- Node.js 22+
|
||
- pnpm
|
||
|
||
### Yerel Gelistirme
|
||
|
||
```bash
|
||
# Projeyi klonla
|
||
git clone <repo-url>
|
||
cd bogazici-admin
|
||
|
||
# Ortam degiskenlerini ayarla
|
||
cp .env.example .env
|
||
# .env dosyasinda VITE_API_BASE_URL degerini duzenle
|
||
|
||
# Bagimliliklari yukle
|
||
pnpm install
|
||
|
||
# Gelistirme sunucusunu baslat
|
||
pnpm dev
|
||
```
|
||
|
||
### Mevcut Betikler
|
||
|
||
| Betik | Aciklama |
|
||
|---|---|
|
||
| `pnpm dev` | Gelistirme sunucusu |
|
||
| `pnpm build` | TypeScript kontrolu + uretim derlemesi |
|
||
| `pnpm preview` | Uretim derlemesini onizle |
|
||
| `pnpm lint` | ESLint ile kod kontrolu |
|
||
| `pnpm format` | Prettier ile otomatik formatlama |
|
||
| `pnpm format:check` | Format kontrolu |
|
||
| `pnpm knip` | Kullanilmayan dosya/bagimlilik tespiti |
|
||
|
||
### Ortam Degiskenleri
|
||
|
||
| Degisken | Aciklama |
|
||
|---|---|
|
||
| `VITE_API_BASE_URL` | Backend API adresi (orn: `https://bogazici-api.test`) |
|
||
|
||
## Deployment
|
||
|
||
### Docker
|
||
|
||
Proje, multi-stage Docker build ile Nginx uzerinde sunulmaktadir.
|
||
|
||
```bash
|
||
# Uretim imajini olustur
|
||
docker build --build-arg VITE_API_BASE_URL=https://api.bogazicidenizcilik.com -t bogazici-admin .
|
||
|
||
# Calistir
|
||
docker compose -f docker-compose.prod.yml up -d
|
||
```
|
||
|
||
### CI/CD (DroneCI)
|
||
|
||
| Dal | Islem |
|
||
|---|---|
|
||
| `develop` | TypeScript kontrolu + build dogrulamasi |
|
||
| `test` | Test sunucusuna otomatik deploy |
|
||
| `main` | Uretim sunucusuna otomatik deploy |
|
||
|
||
## Kimlik Dogrulama
|
||
|
||
- Email/sifre ile giris (`/sign-in`)
|
||
- JWT Bearer token tabanli kimlik dogrulama
|
||
- Token ve kullanici bilgisi Zustand store + cookie’lerde saklanir
|
||
- 401 yaniti alindiginda otomatik oturum sonlandirma
|
||
- Tum `/_authenticated` rotalari gecerli token gerektirir
|
||
|
||
## Lisans
|
||
|
||
[MIT](https://choosealicense.com/licenses/mit/)
|