Semih e583f6b6be feat(sase): VIN business-impact dashboard — Faz 3 (no-quota model)
Sase.tr has no monthly VIN quota — access is gated by plan.brandCount
+ user_brands assignments. The PRD's Faz 3 quota-centric metrics don't
apply; this commit ships the 8 business signals that DO apply to that
model. All queries are RO joins of query_logs to subscription/plan/brand.

1. Tier × decode volume (30d) — unique users, decode count, decodes/user,
   and success rate per plan. Plan derived from each user's most-recent
   active/trial subscription.
2. Brand-tier alignment — for plans with brandCount > 0, the fraction
   of decodes that landed on a brand the user actually has access to via
   user_brands. Low alignment = wrong tier or upsell signal.
3. Dormant payers — active subscription + no decode in the last 14 days.
   Sorted by lastDecodeAt ASC (most dormant first), 30 rows.
4. Empty-handed payers — active subscription + zero lifetime decodes.
   Onboarding-broken signal, sorted oldest start_date first.
5. Trial → paid funnel — bucket trial users by decodes-during-trial
   (0, 1–2, 3–5, 6–10, 11–25, 26+) and show the conversion rate (any
   subsequent active/cancelled subscription) per bucket. Answers
   "how many decodes is the aha moment".
6. Retention cohort — weekly signup cohorts (mature ≥30d), split by
   "had a successful decode in first 7 days" vs not; columns show 30d
   active rate per bucket and the retention lift (pp difference).
7. Power users — top 20 by 30d decode count: plan, decode count,
   brand diversity, top brand + occurrences, success rate.
8. Tier mismatch — brand-spesifik plan kullanıcıları whose 30d decodes
   include ≥3 hits on brands they don't have access to. Upsell candidates
   (or refund/downgrade conversation).

All tables link emails to /projects/sase/users/[id] (existing detail page),
so the dashboard is a "find users to talk to" tool, not just numbers.

VIN dashboard header now has a "Business →" pill next to the time range
picker.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 12:49:14 +03:00
2026-05-13 09:30:27 +00:00

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
Süper Panel - internal admin panel (sp.semih.ai)
Readme 4.1 MiB
Languages
TypeScript 99.2%
CSS 0.4%
Shell 0.2%
Dockerfile 0.2%