7.7 KiB
🚀 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
📌 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-hapticsile kullanıcıya fiziksel titreşim uyarısı. - Yerel iOS Derleme & Paketleme: Xcode Archive & Fastlane entegrasyonu ile tam imzalı
embedded.mobileprovisioniçerikli.ipadağı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/loginsayfası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
pnpm install
2. Geliştirme Sunucularını Başlatın
- Tüm Uygulamaları Aynı Anda Başlatma:
pnpm dev - Sadece Web Uygulamasını Başlatma:
pnpm --filter web dev - Sadece Mobil Uygulamayı (Expo) Başlatma:
pnpm --filter mobile start
👨💻 Mühendislik & Problem Çözme Vurguları (Portfolio Highlights)
- 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.
- React Native'in iOS ve Android native font motorunda virgüllü CSS fallback dizgilerinin (
- Kavisli Metin Radyal Geometri Matematiği:
- Metin karakterlerinin dairesel bir yay etrafında doğru açı (
rotate),translateXvetranslateYoffset hesaplamaları ile hem Web SVG/HTML hem de Native Text bileşenlerinde piksel mükemmelliğinde işlenmesi sağlandı.
- Metin karakterlerinin dairesel bir yay etrafında doğru açı (
- 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.