Yönetim Paneli — Genel Bakış
smart-menu-adisyon-admin-panel, Adisyon POS sisteminin web tabanlı yönetim
panelidir. Restoran yöneticisi menüyü, stoku, cihazları, personeli, restoran
ayarlarını, senkronizasyonu, hata ve denetim kayıtlarını, e-belgeleri ve
aboneliği buradan yönetir.
Sistemdeki yeri
Adisyon dört repodan oluşur. Hepsi aynı Jira projesini (SCRUM) ve aynı issue-key sırasını paylaşır:
| Repo | Rolü |
|---|---|
smart_menu_adisyon_ui | Flutter istemcisi — POS, Garson, KDS ve Yazıcı uygulama rolleri |
smart-menu-adisyon-backend-dev | Go backend — sipariş, ödeme, mutfak, yazdırma, error_logs |
smart-menu-adisyon-localdb-dev | Restorandaki yerel Postgres şeması, migration’lar ve seed’ler |
smart-menu-adisyon-admin-panel | Bu repo — Next.js yönetim paneli |
Panel henüz kendi iş mantığını taşımıyor. Diğer repoların yaptığı işin web yüzeyi olarak tasarlandı; ekranlar şu anda sabit örnek veriyle (fixture) çalışıyor ve hiçbir backend’e bağlı değil.
Mevcut durum
- 12 ekranın tamamı arayüz olarak hazır. Ekranlar Claude Design’da hazırlanan
tasarım paketinden (
admin-panel-dashboard-design/) birebir aktarıldı. - Veriler gerçek değil. Tüm rakamlar
app/_data/panel.tsiçindeki fixture’lardan geliyor. Ekranlarda yapılan düzenlemeler sayfa yenilenince kaybolur. Ayrıntılar: Veri ve entegrasyon. - Kimlik doğrulama yok. Giriş ekranı var ama oturum kontrolü yok; her rota herkese açık. Ayrıntılar: Rotalar ve kabuk.
- Kalıcılık yok. Supabase istemcisi, server action veya veritabanı çağrısı bulunmuyor.
- Otomatik test yok. Doğrulama lint, typecheck ve build ile yapılıyor.
Kapsam dışı (şimdilik)
- Mobil yerleşim. Bu, masaüstü öncelikli bir yönetim paneli. Kabuk sabit
248px kenar çubuğu ve viewport yüksekliğine kilitli bir ızgaradan oluşur.
Tasarımda iki sütunlu olan ekranlar
md/lgkırılımında tek sütuna düşer, ancak telefon için bir kırılım tasarlanmadı. - Karanlık tema. Modernist tasarım sistemi tek bir açık zemin tanımlıyor.
- Toast ve onay diyaloğu altyapısı. Prototipte global toast ve onay diyaloğu var; buradaki ekranlar işlemi doğrudan uygular. Gerçekten başarısız olabilen yıkıcı işlemler geldiğinde eklenmeli.
Teknoloji yığını
| Çatı | Next.js 16.3.4, yalnızca App Router (pages/ dizini yok) |
| UI | React 19.2.8 |
| Dil | TypeScript 5, strict: true, @/* yolu repo köküne eşlenir |
| Stil | Tailwind CSS 4 (@tailwindcss/postcss, CSS öncelikli @theme; tailwind.config.js yok) |
| Font | Archivo, next/font/google ile (Türkçe karakterler için latin-ext) |
| Lint | ESLint 9 flat config — eslint-config-next core-web-vitals + typescript |
Next.js 16, eğitim verilerindeki ve eski blog yazılarındaki sürümden farklı API’lere sahip. Kod yazmadan önce kurulu paketin kendi rehberini okuyun:
node_modules/next/dist/docs/.
Dizin yapısı
app/
layout.tsx Kök layout — Archivo, lang="tr"
globals.css Tailwind v4 @theme + Modernist bileşen katmanı
page.tsx `/` → redirect("/panel")
login/page.tsx Bölünmüş giriş ekranı (Client)
_data/panel.ts Tüm fixture verisi + türetilmiş sayaçlar
(panel)/ Rota grubu: yönetim kabuğunun arkasındaki her şey
layout.tsx Kabuk — kenar çubuğu + başlık + kayan içerik (Server)
_screens.ts Navigasyon/başlık kaydı: href, label, title, kicker, badge
_components/ sidebar, header, tenant-context, primitives
_lib/device-summary.ts Uygulama rolüne göre cihaz yapılandırma özeti
panel/ menu/ stock/ devices/ apps/ settings/
staff/ sync/ errors/ audit/ fiscal/ billing/
admin-panel-dashboard-design/ Claude Design tasarım paketi (görsel spesifikasyon)
docs/ Ekip dokümantasyonu (bu klasör)
docs/claude/ Claude Code'un çalışma dokümanlarıÇalıştırma ve doğrulama
npm install
npm run dev # http://localhost:3000 → /panelHer değişiklik şu üç kontrolden temiz geçmeli:
npm run lint # yeni bir uyarı da regresyon sayılır
npx tsc --noEmit # typecheck
npm run build # next build — App Router hatalarını yakalayan tek kontrolVitest, Jest ya da Playwright kurulu değil ve package.json’da test script’i
yok. Test altyapısı eklemek ayrı bir Jira issue’su olarak ele alınmalı.
İş akışı
- Her iş bir Jira issue’suna bağlıdır ve
SCRUM-<n>branch’inde yapılır. Üst seviye issue’lardev’den, subtask’lar ebeveyn issue’nun branch’inden açılır.mainhiçbir zaman branch noktası değildir. - Branch açarken
--no-trackkullanın (git switch -c SCRUM-14 --no-track origin/dev). Aksi halde push, yeni branch yerine taban branch’e gider. - Arayüz metinleri Türkçe ve doğal cümle düzeninde yazılır (TÜMÜ BÜYÜK veya Her Kelime Büyük değil).
- Dokümantasyon değişikliğin parçasıdır: Dokümantasyon düzeni.