77eecd53ac0c5a57dd8562c4955de141015c1304
Root-path requests to a subdomain or custom domain rewrote to /menu/<slug>/ (trailing slash), which the [slug] dynamic route can't match — the app fell through to notFound() even for verified, published restaurants. Custom domains (e.g. ad.ayris.tech) always hit this since their only real traffic is the root path.
Menulio
AI QR Menü SaaS. Ürün detayları için docs/AI_QR_Menu_SaaS_PRD.md, faz planı için docs/ROADMAP.md.
Yapı
apps/
api/ Node.js + Fastify — business logic, PRD §23
web/ Next.js — public menu (customer-facing, PRD §9)
mobile/ Expo — restaurant owner app (management, PRD §2)
packages/
shared/ Ortak TS tipleri ve theme config şeması
supabase/
migrations/ DB şeması (PRD §22)
seed.sql Başlangıç temaları
Geliştirme
pnpm install
| Komut | Ne çalıştırır |
|---|---|
pnpm dev:api |
API — http://localhost:3001 |
pnpm dev:web |
Public web — http://localhost:3000 |
pnpm dev:mobile |
Expo dev server |
Supabase local (Docker gerekir):
npx supabase start
npx supabase db reset # migration + seed uygular
Her app'in .env.example dosyasını .env'e kopyalayıp doldurun.
Faz durumu
Şu an Faz 0 — Altyapı tamamlandı (monorepo iskeleti, DB şeması, boş route/screen stub'ları). Sıradaki adım Faz 1 — Manuel akış: gerçek restoran/menü CRUD'unu API ve mobile'da uçtan uca bağlamak. Detaylar için ROADMAP.md.
Languages
TypeScript
98.7%
Dockerfile
0.4%
Objective-C++
0.3%
Ruby
0.3%
JavaScript
0.1%
Other
0.1%