refactor: 主题系统 → monorepo 五个独立网站
- packages/core: @aidir/core 底座库(src/pages 页面组件体 1:1 镜像路由树 / kit 站点外壳工厂 / content/blog / scripts) - sites/: 5 个独立 Next.js 网站(ai-stack / launchai / the-ai-ledger / devai-tools / findai) - 每站独立 package.json / next.config / tailwind / messages / .env / 构建 - src/app 约 56 个薄路由文件(re-export 底座页面 + 内联路由段配置 revalidate/dynamic) - src/site/brand.tsx 站点配置 + src/site/home.tsx 站点首页(createMarketingLayout / createHomePage 工厂) - generate-site.mjs: 站点生成器(新增网站 = SITES 加条目,零 Core 修改) - start-all-sites.sh: 一键启动 3001-3005 - next-config.mjs: 底座统一 Next 配置工厂(next-intl + MDX + standalone) - 五站共享同一套 PostgreSQL / Better Auth / Admin(设计文档 §42) - 验证: 5 站 build OK / typecheck OK / 55 路由冒烟 200 / 品牌-内容-截图 差异确认 / 登录-投票-重复检测 e2e PASS
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/analytics/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/analytics/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/categories/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/categories/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/claims/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/claims/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/discovery/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/discovery/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/reviews/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/reviews/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/submissions/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/submissions/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/tags/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/tags/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/tools/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/tools/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/admin/users/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/users/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(admin)/admin/votes/page.tsx 的薄路由
|
||||
export const revalidate = 0;
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/admin/votes/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(admin)/layout.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(admin)/layout";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(auth)/forgot-password/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(auth)/forgot-password/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(auth)/layout.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(auth)/layout";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(auth)/login/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(auth)/login/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(auth)/reset-password/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(auth)/reset-password/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(auth)/signup/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(auth)/signup/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/ai-tools-for/[slug]/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateStaticParams, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/ai-tools-for/[slug]/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/ai-tools-for/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/ai-tools-for/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/best/[slug]/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateStaticParams, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/best/[slug]/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/best/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/best/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/blog/[slug]/page.tsx 的薄路由
|
||||
export { default, generateStaticParams, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/blog/[slug]/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/blog/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/blog/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/category/[slug]/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateStaticParams, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/category/[slug]/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/contact/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/contact/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/cookies/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/cookies/page";
|
||||
@@ -0,0 +1,4 @@
|
||||
import { createMarketingLayout } from "@aidir/core/kit/create-marketing-layout";
|
||||
import { siteConfig } from "@/site/brand";
|
||||
|
||||
export default createMarketingLayout(siteConfig);
|
||||
@@ -0,0 +1,9 @@
|
||||
import { createHomePage, createHomeMetadata } from "@aidir/core/kit/create-home";
|
||||
import { siteConfig } from "@/site/brand";
|
||||
import { SiteHome } from "@/site/home";
|
||||
|
||||
// 首页内容变化不频繁,ISR 每小时再生
|
||||
export const revalidate = 3600;
|
||||
|
||||
export const generateMetadata = createHomeMetadata(siteConfig);
|
||||
export default createHomePage(siteConfig, SiteHome);
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/privacy/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/privacy/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/rankings/page.tsx 的薄路由
|
||||
export const revalidate = 1800;
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/rankings/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/submit/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/submit/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/terms/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/terms/page";
|
||||
@@ -0,0 +1,3 @@
|
||||
// 自动生成:[locale]/(marketing)/tools/[slug]/page.tsx 的薄路由
|
||||
export const revalidate = 3600;
|
||||
export { default, generateStaticParams, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/tools/[slug]/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/tools/page.tsx 的薄路由
|
||||
export { default, generateMetadata } from "@aidir/core/pages/[locale]/(marketing)/tools/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(protected)/dashboard/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(protected)/dashboard/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(protected)/layout.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(protected)/layout";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(protected)/profile/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(protected)/profile/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/check-email/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/check-email/page";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/layout.tsx 的薄路由
|
||||
export { default, generateStaticParams } from "@aidir/core/pages/[locale]/layout";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/verify-email/page.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/verify-email/page";
|
||||
Reference in New Issue
Block a user