b180980e49a67b447b0f6208969765e2f55eae4a
Expired abonelikte panel "bu durum için aksiyon yok" diyordu; manuel paket tanımları DB'den yapılıyordu. Artık expired/cancelled/aboneliksiz kullanıcıda plan + dönem (aylık/yıllık) + süre (dönem default'u / 30g / 1 yıl / 3 yıl / özel gün) + marka-limitli planda marka seçimi ile yeni active abonelik açılıyor. - admin-sdk: hiç implement edilmemiş setSubscription (PATCH) yerine startSubscription → POST /internal/admin/users/:id/subscriptions (Sase PR #266 ile gelir; merge edilene kadar spoke 404 döner). - POST /api/sase/users/[id]/subscriptions route + audit kaydı. - BillingActions artık subscription'sız kullanıcıda da render ediliyor. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ww3tfpuxBcettz81dDvyYt
Süper Panel
Internal admin panel — sp.semih.ai — Tailscale-only access.
Phase 0 skeleton: Next.js 16 + Better Auth (email/password + TOTP) + Prisma + Postgres + Redis. Deployed on Coolify, fronted by Traefik with Let's Encrypt (Cloudflare DNS-01).
See super-panel-prd.md for the full PRD.
Local dev
pnpm install
cp .env.example .env
# fill DATABASE_URL_PANEL, BETTER_AUTH_SECRET (32+ chars)
pnpm --filter @panel/web prisma:generate
pnpm dev
Production deploy
Pushes to main trigger Coolify deploy via webhook.
Deploy status
First production deploy: 2026-05-13. Live at https://sp.semih.ai (Tailscale only).
Description
Languages
TypeScript
99.2%
CSS
0.4%
Shell
0.2%
Dockerfile
0.2%