Strip Songs2VID to a payment-free self-hosted OSS core.

Remove Stripe/billing/pricing/marketing, simplify schema and entitlements for unlimited self-host use, and keep auth, encode, and YouTube upload.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Atakan Doğan Özban
2026-08-03 06:52:00 +02:00
co-authored by Cursor
parent 935abfb22e
commit 925aadae75
108 changed files with 397 additions and 8061 deletions
+3 -14
View File
@@ -21,11 +21,7 @@ const STATUS_LABELS: Record<string, string> = {
export function JobProgress({ jobId }: Props) {
const [job, setJob] = useState<JobResponse | null>(null);
const [quota, setQuota] = useState<{
remaining: number;
limit: number;
totalAvailable: number;
plan: string;
resetsIn: string;
used: number;
} | null>(null);
const [error, setError] = useState<string | null>(null);
@@ -47,11 +43,7 @@ export function JobProgress({ jobId }: Props) {
const quotaData = await quotaRes.json();
if (active)
setQuota({
remaining: quotaData.remaining,
limit: quotaData.limit,
totalAvailable: quotaData.totalAvailable ?? quotaData.remaining,
plan: quotaData.plan,
resetsIn: quotaData.resetsIn,
used: quotaData.used ?? 0,
});
}
} catch (err) {
@@ -91,10 +83,7 @@ export function JobProgress({ jobId }: Props) {
</div>
{quota && (
<div className="rounded bg-surface-light px-4 py-2 text-sm text-gray-300">
{quota.remaining} / {quota.limit} plan · {quota.totalAvailable} total available ·{" "}
{quota.plan === "FREE"
? `resets ${quota.resetsIn}`
: `monthly resets on ${quota.resetsIn}`}
{quota.used} videos created
</div>
)}
</div>