Files
sofa/docs/next.config.mjs
T
jake b289b7abed refactor: optimize cron scheduling, DB maintenance, and TMDB reliability
- Skip recommendations refresh for titles fetched within the last 7 days via `getTitlesWithFreshRecommendations`; only stale titles are re-fetched
- Replace `Promise.allSettled` in `refreshTvChildren` with a `mapWithConcurrency` helper (concurrency = 5) to stay within TMDB's rate limit
- Add 30s request timeout middleware to TMDB client to prevent indefinitely hung fetches
- Expand `optimizeDb` weekly job to prune 30-day-old cron runs, integration events, expired sessions, and expired verifications
- Add `wal_checkpoint(TRUNCATE)` to `optimizeDatabase` so the WAL is flushed before `PRAGMA optimize`
- Add `recoverStaleImportJobs` called on server startup to mark any `pending`/`running` import jobs as errored after a crash/restart
- Return `false` from `triggerJob` immediately if the job is already running
2026-03-23 13:59:31 -04:00

48 lines
1.1 KiB
JavaScript

import { createMDX } from "fumadocs-mdx/next";
const withMDX = createMDX();
/** @type {import('next').NextConfig} */
const config = {
serverExternalPackages: ["@takumi-rs/image-response"],
reactStrictMode: true,
turbopack: {
// docs site is essentially self-contained from the rest of the monorepo
root: import.meta.dirname,
},
async redirects() {
return [
{
source: "/docs/api",
destination: "/docs/api/account/account.removeAvatar",
permanent: false,
},
{
source: "/support",
destination: "https://github.com/jakejarvis/sofa/discussions",
permanent: false,
},
{
source: "/ios",
destination: "https://apps.apple.com/us/app/sofa-tv-movie-tracker/id6760432427",
permanent: false,
},
{
source: "/testflight",
destination: "https://testflight.apple.com/join/tjSddcaZ",
permanent: false,
},
];
},
async rewrites() {
return [
{
source: "/docs/:path*.mdx",
destination: "/llms.mdx/docs/:path*",
},
];
},
};
export default withMDX(config);