mirror of
https://github.com/supabase/supabase.git
synced 2026-05-06 22:18:00 +08:00
The docs build had a fragile implicit dependency on www's filesystem (`../../../apps/www/public/llms`), flagged by the docs team in #44670. Rather than formalising that dependency with a shared package, this PR eliminates it entirely by making www the sole owner of llms content assembly. **How it works now:** `/llms/[slug]` handles all `/llms/*.txt` requests via a 3-step cascade: 1. Dynamic content — `pricing.txt` generated at request time from `shared-data` imports 2. Local file — product overviews read from `data/llms/` 3. Docs proxy — reference docs (guides, js, dart, etc.) fetched from the docs app No hardcoded slug lists, so adding new content just works. **What changed:** - `apps/docs/scripts/llms.ts` trimmed to only generate per-source reference files — www now owns `llms.txt`, `llms-full.txt`, and product overviews - Removed `generateLlmsPricing.mjs` build script — pricing generated dynamically from `shared-data` - Removed llms rewrites from `rewrites.js` — routes handle everything with consistent `Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400` - Product overview `.txt` files moved from `public/llms/` → `data/llms/` so all requests go through routes for consistent caching **Docs team concerns from GROWTH-773:** | Concern | Resolution | |---------|-----------| | Docs build depends on www files at a fragile relative path | Path removed — docs no longer reads from www | | www restructuring breaks docs with no obvious connection | Eliminated — no cross-app filesystem dependency | | No build order enforcement between www and docs | Not needed — docs doesn't depend on www's build output | ## To test - `curl <preview>/llms.txt` — markdown index with doc + product overview links - `curl <preview>/llms-full.txt` — combined product overviews + docs content - `curl <preview>/llms/pricing.txt` — dynamically generated pricing tables - `curl <preview>/llms/auth.txt` — product overview from local file - `curl <preview>/llms/guides.txt` — proxied from docs app - `curl <preview>/llms/nonexistent.txt` — 404 - Verify `Cache-Control` header on all responses --------- Co-authored-by: Alaister Young <[email protected]>
72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
const rewrites = [
|
|
{
|
|
source: '/:path*',
|
|
destination: `/:path*`,
|
|
},
|
|
{
|
|
source: '/dashboard',
|
|
destination: `${process.env.NEXT_PUBLIC_STUDIO_URL}`,
|
|
},
|
|
{
|
|
source: '/dashboard/:path*',
|
|
destination: `${process.env.NEXT_PUBLIC_STUDIO_URL}/:path*`,
|
|
},
|
|
...(process.env.NEXT_PUBLIC_VERCEL_ENV === 'production'
|
|
? [
|
|
{ source: '/docs', destination: `${process.env.NEXT_PUBLIC_DOCS_URL}` },
|
|
{
|
|
source: '/docs/',
|
|
destination: `${process.env.NEXT_PUBLIC_DOCS_URL}`,
|
|
},
|
|
{ source: '/docs/:path*', destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/:path*` },
|
|
]
|
|
: []),
|
|
{
|
|
source: '/ui',
|
|
destination: `${process.env.NEXT_PUBLIC_UI_LIBRARY_URL}`,
|
|
},
|
|
{
|
|
source: '/ui/:path*',
|
|
destination: `${process.env.NEXT_PUBLIC_UI_LIBRARY_URL}/:path*`,
|
|
},
|
|
{
|
|
source: '/design-system',
|
|
destination: `${process.env.NEXT_PUBLIC_DESIGN_SYSTEM_URL}`,
|
|
},
|
|
{
|
|
source: '/design-system/:path*',
|
|
destination: `${process.env.NEXT_PUBLIC_DESIGN_SYSTEM_URL}/:path*`,
|
|
},
|
|
|
|
{
|
|
source: '/new-docs',
|
|
destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`,
|
|
},
|
|
{
|
|
// redirect /docs/
|
|
// trailing slash caused by docusaurus issue with multizone
|
|
source: '/new-docs/',
|
|
destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}`,
|
|
},
|
|
{
|
|
source: '/new-docs/:path*',
|
|
destination: `${process.env.NEXT_PUBLIC_REFERENCE_DOCS_URL}/:path*`,
|
|
},
|
|
// misc rewrites
|
|
{
|
|
source: '/humans.txt',
|
|
destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/humans.txt`,
|
|
},
|
|
{
|
|
source: '/lawyers.txt',
|
|
destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/lawyers.txt`,
|
|
},
|
|
{
|
|
source: '/.well-known/security.txt',
|
|
destination: `${process.env.NEXT_PUBLIC_DOCS_URL}/.well-known/security.txt`,
|
|
},
|
|
{ source: '/feed.xml', destination: `/rss.xml` },
|
|
]
|
|
|
|
module.exports = rewrites
|