← Kullanım kılavuzu · Ana sayfa · Yönetim

Sistem analiziKalıp Üretici SaaS · mimari, veri modeli, akışlar, güvenlik, maliyet, riskler, yayın planı · 6 Eylül 2026

1 · Özet

Yerel çalışan kalıp üreticisi, statik web uygulaması + Supabase + Lemon Squeezy üçlüsüyle abonelik ürününe dönüştürüldü. Ağır iş (CSG) tarayıcıda kalır; sunucu tarafı yalnızca kimlik, plan/kota, proje deposu ve ödeme webhook'udur. Bu sayede sunucu maliyeti neredeyse sıfırdır ve kullanıcı dosyaları sunucuya yüklenmez; bu hem gizlilik hem pazarlama argümanıdır.

Ürün
Landing → uygulama (/app) → yönetim paneli (/admin). Ücretsiz: yöneticinin yüklediği kütüphane modellerinden sınırsız kalıp; Pro: kendi modelleri + ticari kullanım.
Altyapı
Statik barındırma (Cloudflare Pages/Netlify/Vercel) · Supabase (Auth, Postgres+RLS, Storage, Edge Function) · Lemon Squeezy (checkout, abonelik, vergi, fatura).
Durum
Kod ve şema hazır; hesap/anahtar kurulumu ve canlı test bekliyor (docs/kurulum-saas.md). Sahte mod ile tüm akışlar sunucusuz denenebilir.

2 · Mimari

Tarayıcı (statik site) Landing · /index.htmlfiyat, SSS, CTA Uygulama · /appthree.js + Manifold WASM workersaas.js: oturum, kota, projeler Yönetim · /adminkullanıcılar, planlar, ayarlar CSG tamamen istemcide · dosya yüklenmez Supabase (Frankfurt) Auth · e-posta / sihirli bağlantı / Google Postgres + RLSprofiles · subscriptions · downloadsevents · projects · app_settings Storage · models/<uid>/… Edge Function · ls-webhookHMAC doğrulama → subscriptions Lemon Squeezy Hosted checkoutcustom[user_id] Abonelik, vergi, faturaMerchant of Record Müşteri portalıiptal, kart güncelleme Webhooksubscription_* · X-Signature

Dosya haritası

/i18n.js, /i18n-dict.js  dil + para birimi (tr/en/de, USD/TRY/EUR; DOM gözlemcisiyle çeviri)
/index.html              landing              /admin/index.html      yönetim paneli (RLS + is_admin)
/app/index.html          uygulama             /config.js             Supabase + Lemon Squeezy anahtarları (anon)
/app/saas.js             SaaS katmanı         /supabase/migrations/  şema, RLS, fonksiyonlar, storage politikası
/worker.js /geom.js      CSG ve geometri      /supabase/functions/ls-webhook  webhook (Deno)
/vendor/                 three, manifold, supabase-js (çevrimdışı)   /docs/  kılavuz, kurulum, bu analiz
/gizlilik.html /kosullar.html  hukuki taslaklar   /netlify.toml /vercel.json  barındırma

3 · Veri modeli

TabloAmaçYazanRLS
profilesauth.users ile 1:1; rol (user/admin), plan_override, banned, last_seentrigger (kayıt), kullanıcı (sınırlı), adminkendi satırı + admin
subscriptionsLemon Squeezy abonelik durumu, portal URL'leri, ham webhookyalnızca service role (webhook)okuma: sahibi + admin
downloadsİndirme günlüğü; library_id kaynak modeli gösterir (kapı ve istatistik)record_download() (security definer)okuma: sahibi + admin
eventsKullanım analitiği: generate, login, checkout_click, ls_*log_event(), webhookokuma: sahibi + admin
projectsAd, mod, ayarlar (jsonb), model dosya yolusahibisahibi + admin
library_modelsYönetici kütüphanesi: ad, kategori, dosya yolu ve önizleme PNG yolu (public bucket library, thumbs/), önerilen mod, aktif, sıraadminaktifler herkese, hepsi admin'e
app_settingsfree_downloads_per_week, price_monthly/yearly (USD), fx (TRY/EUR kuru), announcementadminherkes okur
storage: modelsModel dosyaları, <uid>/<proje>.bin, 100 MB sınırsahibiklasör = uid

Fonksiyonlar: current_plan(uid) (banned > override > aktif abonelik > free), record_download, quota_status, log_event, is_admin, admin_stats; görünüm admin_users.

4 · Akışlar

Kayıt / giriş
E-posta+şifre, sihirli bağlantı ya da Google → Supabase Auth → trigger ile profiles satırı → uygulama quota_status çağırır, rozet ve menü gösterir.
İndirme (kapı)
STL/ZIP düğmesi → record_download(mode, pieces, file, library_id) → Pro: her zaman; Free: yalnızca aktif kütüphane modelinden üretilmişse (isteğe bağlı haftalık tavan) → aksi halde "Pro'ya geç". Yerel modda kapı yok.
Ödeme
"Pro'ya geç" → Lemon Squeezy hosted checkout (checkout[custom][user_id], e-posta ön dolu) → başarı → /app/?odeme=ok. Webhook subscription_created/updated/... → HMAC doğrulama → subscriptions upsert → uygulama yenilendiğinde plan pro.
İptal / süre sonu
Müşteri portalı → cancelled (ends_at'e kadar pro) → expired → free. past_due geçici olarak pro sayılır (ödeme yeniden denenir).
Projeler
"Projeyi kaydet": ayarlar jsonb + model dosyası Storage'a (≤ 30 MB tampon tutulur). "Projelerim": indir, ayarları uygula.
Yönetim
admin rolü → Lemon Squeezy işlemleri (iptal/duraklat/sürdür/iade) ls-admin fonksiyonuyla (JWT → admin kontrolü → LS API, anahtar sunucuda) → istatistik kartları, günlük grafik, kullanıcı tablosu (arama/sıralama/CSV), plan override, yasaklama, admin rolü, ücretsiz limit ayarı, olay günlüğü.

5 · Güvenlik

KonuÖnlemKalan risk
Anahtarlarİstemcide yalnızca anon key; service role yalnızca Edge Function gizli değişkenindedüşük
Veri erişimiTüm tablolarda RLS; yönetici is_admin() ile; storage klasörü = uiddüşük
Webhook sahteciliğiX-Signature HMAC-SHA256 sabit zamanlı karşılaştırma; user_id yoksa e-posta eşlemedüşük
Kota atlatmaSayaç sunucuda (RPC); ancak CSG istemcide olduğundan teknik bilgisi olan kullanıcı STL'i konsoldan alabilirorta · kabul edilebilir: hedef kitle maker'lar; ileride Pro'ya özel sunucu tarafı özellikler (proje deposu, yüksek çözünürlük) eklenebilir
Kötüye kullanımYasaklama, olay günlüğü, Supabase rate limit; kayıt için e-posta doğrulamaorta
ÖdemeKart bilgisi Lemon Squeezy'de (PCI), MoR olarak KDV/vergi onlardadüşük
HukukGizlilik ve koşullar taslak; KVKK/GDPR için danışmanlık, veri silme süreciyüksek · yayın öncesi kapatılmalı

6 · Maliyet ve fiyatlandırma

KalemBaşlangıçÖlçek (1000 kullanıcı)
Statik barındırma0 (Cloudflare Pages / Netlify free)0-20 $/ay
Supabase0 (free: 500 MB DB, 1 GB storage)25 $/ay Pro (8 GB DB, 100 GB storage)
Lemon Squeezy%5 + 0.50 $ / işlem (vergi dahil MoR)aynı
Alan adı, e-posta~15 $/yıl + Resend/Postmark 0-15 $/ayaynı

Öneri: Pro 9.90 $/ay, 99 $/yıl (₺/€ panelden çekilen kurla gösterilir). Rakipler: Meshcast 20 $/ay, MoldStudio3D 19 $/ay, Mold Studio kredi başı ~1 $, Moldboxer tek seferlik lisans. Konumlandırma: "dosyan yüklenmez, çevrimdışı da çalışır, beş kalıp türü tek yerde". Break-even 25 $/ay Supabase için ~4 Pro abone.

7 · Riskler ve varsayımlar

8 · Yayın öncesi test planı (birlikte)

  1. Sahte mod: /app/?mock=free → kendi modelinde indirme → yükseltme penceresi; Kütüphaneden seç → indirme serbest → sahte ödeme → PRO rozeti → Projeyi kaydet / Projelerim → /admin/?mock=1 paneli.
  2. Supabase: kayıt (e-posta doğrulama), giriş, sihirli bağlantı, Google; profiles satırı; admin rolü SQL.
  3. Kapı: free hesapla kendi modeli engelli, kütüphane modeli serbest; yönetim panelinden haftalık tavan girilirse kütüphane indirmeleri de sınırlanır.
  4. Ödeme (test modu): checkout → test kartı → webhook 200 → subscriptions.active → PRO; müşteri portalı; iptal → cancelled → (manuel) expired → free.
  5. Projeler: 20 MB model kaydet/aç/sil; Storage'da klasör = uid; başka kullanıcı erişemiyor (RLS).
  6. Yönetim: plan override pro → kullanıcıda PRO; yasakla → indirme engeli; CSV.
  7. Yayın: alan adı, HTTPS, Supabase Site URL, LS success URL, gizlilik/koşullar gözden geçirme, destek e-postası, hata izleme (Sentry isteğe bağlı).
  8. Duman testi node test/smoke.mjs yeşil; Lighthouse landing ≥ 90.

9 · Yol haritası

Aşamaİş
Hafta 1Hesaplar ve anahtarlar, test modunda uçtan uca ödeme, hukuki metinler, alan adı, yayın (beta).
Hafta 2-4Onboarding (ilk kalıp sihirbazı), e-posta bildirimleri (Resend), Pro'ya özel: proje sınırı yok, yüksek çözünürlük, öncelikli destek.
Ay 2-3Galeri/topluluk, kütüphane kategorileri, mum/vazo tasarımcıları, mobil düzen.