# 🚀 Menulio — Cross-Platform SaaS & Dynamic QR Stand Studio Ecosystem

> **Modern Restoranlar İçin Dijital Menü Deneyimi & Anlık JSON Şablon Motoru Destekli Masa Kartı Tasarım Platformu**

![Menulio Banner](https://images.unsplash.com/photo-1517248135467-4c7edcad34c4?w=1200&auto=format&fit=crop&q=80)

---

## 📌 Proje Özeti (Executive Summary)

**Menulio**, restoranların ve gastronomi işletmelerinin dijital menülerini ve fiziksel masa kartı QR stantlarını uçtan uca yönetmelerini sağlayan **Full-Stack Cross-Platform SaaS mimarisidir**. 

Geleneksel QR menü sistemlerinden farklı olarak Menulio, **0 (Sıfır) App Store güncellemesi gerektiren "JSON-Driven Dynamic Template Engine" (V2)** teknolojisine sahiptir. Admin panelinden tasarlanan SVG/PNG arka planları, kavisli metin hesaplamaları (*curved text math*), 360° döndürme, renk paletleri ve özel QR yerleşimleri API üzerinden anında hem Web hem de Mobil (iOS/Android) platformlarında canlı yayınlanır.

---

## 🛠️ Öne Çıkan Mimari Özellikler (Key Highlights)

### 1. 🎨 JSON-Driven Dynamic QR Stand Engine (V2)
- **Sıfır Güncelleme Dağıtımı**: Mobil uygulamayı yeniden derlemeden Web Admin panelinden yeni masa kartı şablonu oluşturma ve anında yayınlama.
- **Kavisli Metin Matematiği (`curveDegree`)**: Radyal açı hesaplamaları ile dairesel ve yay biçiminde metin hizalama (Yay ◡ ve ◠ kavis derecesi ayarlama).
- **Figma & Instagram Story Tarzı Tuval Editörü**: Sürüklenebilir (*drag & drop*), ölçeklenebilir, 360° döndürülebilir metin ve QR katmanları.
- **Manyetik Kılavuz Çizgileri**: Akıllı dikey/yatay merkezleme ve hizalama çizgileri (*snap-to-grid*).
- **Matbaa Kalitesinde Baskı Çıktısı**: 300 DPI Ultra HD PNG ve A5 Matbaa standartlarında vektörel PDF çıktısı.

### 2. 📱 Cross-Platform Mobil Uygulama (Expo & React Native)
- **iOS & Android Desteği**: Expo SDK 52 ve React Native mimarisi üzerine kurulu yüksek performanslı arayüz.
- **Dokunsal Geri Bildirim (Haptic Feedback)**: İşlem anında `expo-haptics` ile kullanıcıya fiziksel titreşim uyarısı.
- **Yerel iOS Derleme & Paketleme**: Xcode Archive & Fastlane entegrasyonu ile tam imzalı `embedded.mobileprovision` içerikli `.ipa` dağıtımı.

### 3. 🌐 Web Uygulaması & 10+ Lüks Menü Teması (Next.js 15 App Router)
- **10 Özel Restoran Teması**: `Eleia Coastal`, `Neon Street Fuze`, `La Maison d'Élève`, `Swiss Brutalist`, `Amber Artisan`, `Elegant Gold`, `Modern Sapphire`, `Luxury Dark`, `Nordic Minimal`, `Classic Bistro`.
- **Wildcard Subdomain Yönlendirmesi**: `restoran-adi.menul.io` şeklinde her işletmeye özel subdomain ve özel alan adı (custom domain) desteği.
- **Canlı Cihaz Simülatörü**: Admin panelinde tema ve şablon değişikliklerini anında gösteren interaktif iPhone çerçevesi.

### 4. 🔐 Çift Katmanlı Yönetici Güvenliği (Dual-Layer Admin Auth)
- **Next.js Server Middleware**: Yetkisiz sunucu isteklerini anında `/admin/login` sayfasına yönlendiren çerez tabanlı doğrulama.
- **Client Auth Guard**: React tarafında yükleme animasyonu ve oturum doğrulama mekanizması.
- **Supabase Auth & Fallback Credential**: Supabase PostgreSQL veritabanı entegrasyonu ve güvenli token çerezi (`menulio_admin_token`).

---

## 💻 Teknolojik Mimari & Kullanılan Teknolojiler

| Katman | Kullanılan Teknolojiler |
| :--- | :--- |
| **Monorepo Mimarisi** | `pnpm Workspaces`, Shared Type Definitions (`@menulio/shared`) |
| **Web Uygulaması (Frontend)** | `Next.js 15 (App Router)`, `React 18`, `Tailwind CSS`, `Glassmorphism UI` |
| **Mobil Uygulama** | `React Native`, `Expo (SDK 52)`, `Expo Router`, `ViewShot`, `Expo Haptics` |
| **Veritabanı & Auth** | `Supabase (PostgreSQL, Auth, RLS)`, REST API, Local Disk Cache |
| **Görsel & Baskı Motoru** | `html-to-image`, `jspdf`, `qrcode.react`, Google Fonts API |
| **CI/CD & Derleme** | `Xcode 26`, `Fastlane`, `EAS Build (Expo Application Services)` |

---

## 📸 Ekran Görüntüleri & Görsel Bileşenler

```
+-----------------------------------------------------------------------+
|  MENULIO ADMIN PANEL - DİNAMİK ŞABLON & TEMA STÜDYOSU                |
+-----------------------------------------------------------------------+
| [ Sol Panel: Renk/Düzen Kontrolleri ] | [ Sağ: Canlı iPhone Simülatörü ]|
| - Primary Color: #D4AF37              | +-----------------------------+ |
| - Product Layout: Card / List         | |  OZZY KEBAP                 | |
| - Category Layout: Tabs / Accordion   | |  [ QR KOD BÖLGESİ ]         | |
| - Curved Text Math: 35° Arc           | |  MENÜYÜ GÖRMEK İÇİN OKUTUN  | |
| - Font Family: Playfair / Inter       | +-----------------------------+ |
+-----------------------------------------------------------------------+
```

---

## 📐 Proje Dosya & Klasör Yapısı

```
menulio/
├── apps/
│   ├── mobile/                    # React Native / Expo Mobil Uygulama
│   │   ├── src/
│   │   │   ├── app/               # Expo Router Dosya Tabanlı Yönlendirme
│   │   │   ├── components/
│   │   │   │   ├── qr-canvas/     # Tuval Editörü, Curved Text & Dokunmatik Katmanlar
│   │   │   │   └── qr-templates/  # SVG & Vektörel Şablon Render Bileşenleri
│   │   └── ios/                   # Yerel Xcode Proje Klasörü & Podfile
│   │
│   ├── web/                       # Next.js 15 Web & Admin Uygulaması
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── admin/         # Yönetici Paneli & Auth Guard (/admin)
│   │   │   │   │   ├── templates/ # QR Stand Şablon Stüdyosu
│   │   │   │   │   └── menu-templates/ # Web Menü Temaları Stüdyosu
│   │   │   │   ├── qr/            # Müşteri QR Masa Kartı Jeneratörü
│   │   │   │   └── menu/[slug]/   # Canlı Restoran Web Menüsü
│   │   │   ├── components/        # Web Bileşenleri & Simülatörler
│   │   │   └── lib/               # Auth, Supabase & Tema Tanımları
│   │
│   └── api/                       # Express / Node.js Backend REST Servisleri
│
└── packages/
    └── shared/                    # Tip Tanımları, Renk Paletleri & Ortak Sabitler
```

---

## ⚡ Kurulum ve Çalıştırma (Getting Started)

Proje `pnpm` monorepo yapısında kurgulanmıştır.

### 1. Bağımlılıkları Yükleyin
```bash
pnpm install
```

### 2. Geliştirme Sunucularını Başlatın

- **Tüm Uygulamaları Aynı Anda Başlatma**:
  ```bash
  pnpm dev
  ```
- **Sadece Web Uygulamasını Başlatma**:
  ```bash
  pnpm --filter web dev
  ```
- **Sadece Mobil Uygulamayı (Expo) Başlatma**:
  ```bash
  pnpm --filter mobile start
  ```

---

## 👨‍💻 Mühendislik & Problem Çözme Vurguları (Portfolio Highlights)

1. **React Native Font Rendering Fix**:
   - React Native'in iOS ve Android native font motorunda virgüllü CSS fallback dizgilerinin (`Georgia, 'Times New Roman', serif`) sessizce varsayılan sistem fontuna düşme problemi tespit edilerek, platforma özel tekil font çözümleme mekanizması geliştirildi.
2. **Kavisli Metin Radyal Geometri Matematiği**:
   - Metin karakterlerinin dairesel bir yay etrafında doğru açı (`rotate`), `translateX` ve `translateY` offset hesaplamaları ile hem Web SVG/HTML hem de Native Text bileşenlerinde piksel mükemmelliğinde işlenmesi sağlandı.
3. **Senkronize JSON Şablon Yayınlama**:
   - Web Admin panelinde yapılan herhangi bir tasarım veya metin düzenlemesinin, veritabanı ve REST API üzerinden anında mobil uygulama tuvalinde ve web jeneratöründe canlı olarak görünmesi sağlandı.

---

## 📄 Lisans

Bu proje kişisel portfolyo ve özel geliştirme amacıyla kurgulanmıştır. Tüm hakları saklıdır.
