LogoMkSaaS文档

项目结构

MkSaaS 模板文件和文件夹组织概述

MkSaaS 遵循基于 Next.js App Router 的模块化架构,专注于可扩展性和可维护性。本文档解释了模板中的关键目录和文件,帮助您更有效地导航代码库。

根目录结构

middleware.ts
routes.ts
drizzle.config.ts
next.config.ts
source.config.ts

关键文件

  • src/middleware.ts:包含路由保护逻辑和重定向
  • src/routes.ts:定义应用程序路由以实现一致的导航
  • drizzle.config.ts:数据库的 Drizzle ORM 配置
  • next.config.ts:Next.js 配置,包括重定向和重写
  • source.config.ts:文档的 Fumadocs 配置
  • Dockerfile:Dockerfile 配置
  • env.example:环境变量模板

关键目录

/src/app 目录

app 目录遵循 Next.js App Router 约定:

layout.tsx
not-found.tsx
robots.ts
sitemap.ts
manifest.ts

/src/actions 目录

按功能组织的 Server Action,由 next-safe-action 提供支持,用于类型安全的 Server Action:

check-newsletter-status.ts
create-checkout-session.ts
create-customer-portal-session.ts
get-active-subscription.ts
get-lifetime-status.ts
send-message.ts
subscribe-newsletter.ts
unsubscribe-newsletter.ts

/src/lib 目录

核心应用程序逻辑和实用程序:

auth.ts
auth-client.ts
source.ts
metadata.ts
constants.ts
formatter.ts
utils.ts

/src/components 目录

组件按功能和用途组织,以便更好地维护:

代码组织最佳实践

在使用 MkSaaS 时,请遵循这些代码组织最佳实践:

按功能分组,而不是按类型

将相关文件保持在一起,无论其类型如何。

保持组件专注和小巧

每个组件应该有单一职责。

巧妙使用统一导出

创建 index.ts 文件从目录重新导出组件,使导入更清洁。

// components/ui/index.ts
export * from './Button';
export * from './Card';
export * from './Input';

// 使用
import { Button, Card, Input } from '@/components/ui';

清楚地分离客户端和服务器组件

在客户端组件顶部使用 'use client' 指令,并将服务器组件保持为默认。

视频教程

下一步

现在您了解了项目结构,探索这些相关主题: