SilwayApp Codecheck
@egeuysall · Apr 25, 2026
@egeuysall · Apr 25, 2026
Referans hedef:

Hedef: Silway'i prototip/vibe-coded halinden çıkarıp Ryva'nın 7 günde güvenli ve tam çalışan core ürün çıkarma hızına daha yakın, production-grade bir yapıya taşımak.
Henüz production-ready değil.
Ürün yönü iyi, ama mevcut implementasyonda kritik güvenlik sınırı hataları, tutarsız AI runtime, boş database migration'ları, backend/AI tarafında başarısız TypeScript build'leri, frontend lint hataları, mock UI yüzeyleri ve operasyonel SaaS yerine dekoratif hissettiren bir tasarım sistemi var.
MVP için en hızlı yol stack'i sadeleştirmek olabilir:
Dosyalar:
backend/src/index.ts:27-30backend/src/routes/profile.ts:14-51backend/src/routes/setup.ts:43-107backend/src/routes/genesis.ts:111-166Problem: /api/setup, /api/genesis ve /api/profile public mount edilmiş ama Supabase service-role client kullanıyor. X-User-Id, user_id ve request'ten gelen role alanına güveniliyor.
Etki: Auth olmadan profile mutate edilebilir, admin atanabilir, kullanıcılar org'lara bağlanabilir.
Fix: Tüm service-role write işlemlerinde doğrulanmış auth zorunlu olmalı, user/role server-side çıkarılmalı, client'tan gelen identity/role alanları yetki kaynağı olmamalı.
Dosyalar:
backend/src/routes/genesis.ts:36-68frontend/middleware.ts:14-25frontend/app/admin/genesis/page.tsx:32-40Problem: Herkes /api/genesis/create çağırıp onboarding token/link alabiliyor. /admin route'u da middleware tarafından bypass ediliyor.
Fix: /admin ve /api/genesis/create admin-only auth ile korunmalı, rate limit eklenmeli, token üretimi audit edilmeli.
Dosyalar:
frontend/lib/api.ts:25-32backend/src/index.ts:24-25ai-engine/core/server.py:19-24docker-compose.yml:21-25Problem: Frontend direkt http://localhost:3002/chat endpoint'ine post ediyor. Böylece authenticated /api/chat, org scoping ve persistence bypass ediliyor. AI service CORS'u da wildcard.
Fix: Browser sadece authenticated backend'i çağırmalı. AI service backend'e private kalmalı veya internal service token istemeli.
Dosyalar:
ai-engine/Dockerfile:1-13ai-engine/package.json:5-8ai-engine/core/server.py:118-120backend/src/routes/chat.ts:160-173Problem: AI Dockerfile/package script'leri Node/TS server bekliyor, ama gerçek server Python/FastAPI. Backend /generate çağırıyor; Python /chat expose ediyor. Stream protokolleri farklı.
Fix: Tek runtime ve tek stream contract seçilmeli. Güçlü öneri: AI runtime'ı TypeScript'e taşıyıp Vercel AI SDK kullanmak.
Dosyalar:
backend/src/routes/genesis.ts:127-185backend/src/routes/chat.ts:33-43backend/src/routes/chat.ts:133-135Problemler:
created_by ve org_id overwrite edebiliyor.Fix:
id + org_id + created_by ile ownership kontrol edilmeli.Dosyalar:
backend/supabase/migrations/001_initial_schema.sqlbackend/supabase/migrations/002_genesis_tokens.sqlDATABASE.md:3-47Problem: Migration dosyaları boş; schema/RLS sadece dokümanda var.
Supabase kalacaksa: gerçek migration, constraint, index, RLS policy ve transactional RPC yazılmalı.
Daha iyi MVP önerisi: app verisini Convex'e taşımak. Convex schema, query, mutation, action, realtime sync ve generated client API'leri TypeScript'te tuttuğu için AI agent'ların güvenli şekilde geliştirmesi split SQL + Node + Python yapısına göre daha hızlı ve kolay olur. Ryva referansı için özellikle Convex multitenancy in Ryva okunmalı.
Dosyalar:
backend/tsconfig.json:6-16ai-engine/tsconfig.json:6-13backend/package.json:5-9frontend/package.json:5-9ai-engine/package.json:5-8Bulgular:
next build başarılı.eslint çalışıyor ama 19 error / 18 warning ile fail ediyor.Fix:
Dosyalar:
.gitignore:1-2ai-engine/venv/**ai-engine/core/__pycache__/**ai-engine/server.logProblem: virtualenv, pycache ve log dosyaları tracked.
Fix: generated artifact'lar git'ten çıkarılmalı, .gitignore genişletilmeli, Docker kalacaksa .dockerignore eklenmeli.
Dosyalar:
frontend/app/[slug]/workspace/page.tsx:44-103frontend/app/[slug]/workspace/team/page.tsx:7-13frontend/app/[slug]/workspace/settings/page.tsx:46-211frontend/app/[slug]/workspace/sources/page.tsx:41-85Problem: UI gerçek aksiyon alınabilir gibi görünüyor ama çoğu local state veya hard-coded value.
Fix: Ya gerçek persistence bağlanmalı ya da desteklenmeyen kontroller açıkça disabled olmalı.
Mevcut tasarım fazla dekoratif:
Dosyalar:
frontend/app/globals.css:87-95frontend/app/genesis/welcome/page.tsx:51-159frontend/components/genesis/BackgroundDecorator.tsxfrontend/app/genesis/invite/page.tsx:128-137frontend/app/[slug]/workspace/sources/page.tsx:88-190frontend/app/[slug]/workspace/page.tsx:35-103Hedef yön:
Agent design kuralları:
App database ve backend functions için Convex kullan.
Neden:
Auth ve org'lar için Clerk, MVP subscription için Clerk Billing kullan.
Neden:
Agent'lar için Vercel AI SDK agents ve Vercel AI Gateway kullan.
Neden:
Öneri:
Neden:
Öneri:
pnpm-workspace.yaml ekle.frontend, backend ve geçiş sürecindeki paketleri workspace package olarak yönet.pnpm install --frozen-lockfile, pnpm -C frontend build, pnpm -C frontend lint gibi netleştir.Neden:
Vercel for Next.js kullan.
Neden:
Oluştur:
/docs/architecture.md/docs/security.md/docs/data-model.md/docs/ui-guidelines.md/docs/agent-playbook.mdAGENTS.mdagents/ veya .codex/agents/Neden:
Kullanılabilecek araçlar:
Neden:
Agent mimarisi için How Ryva works under the hood ve ürün moat/differentiation tarafı için The real reason Ryva is hard to copy referans alınmalı. Amaç sadece tool eklemek değil; memory, integrations, decision state ve UI feedback loop'unu tek ürün davranışı gibi çalıştırmak.
/docs ve agent instruction'ları ekle.Audit sonuçları: