Implement full Couch Potato movie & TV tracking app

Add all 10 milestones: Drizzle ORM + SQLite database with WAL mode,
Better Auth email/password authentication, TMDB API integration for
search and metadata import, TV season/episode caching, user tracking
(watchlist/status/watches/ratings with auto-transitions), discovery
feeds (continue watching, library, recommendations), US streaming
availability via TMDB providers, background job scheduler with
instrumentation hook, and dark cinema-themed frontend with DM Serif
Display + DM Sans typography and amber accent design system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 14:42:13 -05:00
co-authored by Claude Opus 4.6
parent 1b0ca5431a
commit b02ff1cdc1
65 changed files with 4994 additions and 382 deletions
+25
View File
@@ -0,0 +1,25 @@
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { badRequest } from "@/lib/api/errors";
import { registerJobs } from "@/lib/jobs/registry";
import { scheduler } from "@/lib/jobs/scheduler";
// Ensure jobs are registered for manual triggering
registerJobs();
export async function POST(
_req: NextRequest,
{ params }: { params: Promise<{ name: string }> },
) {
const { name } = await params;
const jobNames = scheduler.getJobNames();
if (!jobNames.includes(name)) {
return badRequest(
`Unknown job: ${name}. Available: ${jobNames.join(", ")}`,
);
}
await scheduler.runNow(name);
return NextResponse.json({ ok: true, job: name });
}