Next.jsReactSaaS启动器

Optimizely-SaaS-CMS-Next.js-15 — Next.js SaaS模板

作者 szymonuryga

面向 Optimizely SaaS CMS 与 Next.js 15 App Router 的启动模板,包含内容获取、预览、路由、Visual Builder 与缓存再验证等基础集成。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-03查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

基于 Next.js 15 App Router 的启动模板

02

通过 Optimizely Graph 获取内容,并用 GraphQL Codegen 生成类型与 SDK

03

静态生成配合 webhook 触发的按需缓存再验证

04

草稿模式用于内容预览,并集成 Visual Builder

05

多语言支持与自动语言检测

06

使用 Tailwind CSS 与 shadcn/ui,代码为 TypeScript

模板详细介绍

该模板用于在 Next.js 15 App Router 中接入 Optimizely SaaS CMS,覆盖内容获取、预览、路由、Visual Builder 和缓存再验证等基础集成。内容通过 Optimizely Graph 获取,并借助 GraphQL Codegen 生成类型与 SDK;页面采用静态生成,配合 webhook 触发按需缓存再验证,同时提供草稿模式用于内容预览。模板内置多语言支持与自动语言检测、用于动态渲染内容块的 Block Factory Mapper,以及基于 metadata 的 SEO 配置。界面层使用 Tailwind CSS 与 shadcn/ui,代码使用 TypeScript。仓库根目录附带 ExportedFile.episerverdata,可导入 Optimizely 实例获得预置内容;导入前需在 CMS 设置中添加“Polish”语言。设计部分有意保持简单,仅作示例,不针对具体项目视觉需求。使用前提是拥有 Optimizely SaaS CMS 实例与 Content Graph API key,并配置一组环境变量。

Next.jsSaaS启动器

适合你的项目吗?

适用场景

  • 为需要接入 Optimizely SaaS CMS 的 Next.js 项目搭建初始骨架
  • 验证 Optimizely Graph 内容获取、草稿预览与缓存再验证的集成方式
  • 在 Next.js 15 App Router 中实现多语言路由与内容渲染
  • 通过 Block Factory Mapper 动态渲染 Optimizely 内容块
  • 导入 ExportedFile.episerverdata 后以预置内容快速启动开发

适合人群

  • 已拥有 Optimizely SaaS CMS 实例与 Content Graph API key 的开发者
  • 需要 Next.js 15 App Router 与 Optimizely SaaS CMS 集成参考的项目
  • 希望了解 Optimizely Graph、草稿模式与缓存再验证实现方式的团队
  • 接受模板设计为示例、需自行按项目调整视觉与结构的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js 18.17 或更高版本,以及 Optimizely SaaS CMS 实例和 Content Graph API key

  2. 2

    在根目录创建 .env 并配置 OPTIMIZELY_API_URL、OPTIMIZELY_SINGLE_KEY、OPTIMIZELY_PREVIEW_SECRET、OPTIMIZELY_REVALIDATE_SECRET、OPTIMIZELY_START_PAGE_URL、NEXT_PUBLIC_CMS_URL

  3. 3

    运行 npm install 安装依赖,运行 npm run gen-types 生成 GraphQL 类型与 SDK,再运行 npm run dev 启动开发服务器

  4. 4

    OPTIMIZELY_START_PAGE_URL 需手动设置为 Start Page 的完整路由 URL,因为分层路由下 Start Page 默认不占用根路径 /

  5. 5

    导入 ExportedFile.episerverdata 前,需先在 CMS 设置中添加 Polish 语言,再通过 Admin > Tools > Import Data 上传该文件

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 使用该模板必须拥有 Optimizely SaaS CMS 实例,需联系 Optimizely 团队获取 CMS 访问权限,否则无法获取内容。
  • 运行前必须具备 Optimizely SaaS CMS 实例和 Content Graph API key,属于外部商业服务依赖。
  • 导入预置内容前,必须先在 CMS 设置中添加 Polish 语言,否则导入可能失败。
  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

This template requires an Optimizely SaaS CMS instance to retrieve content. Please connect with the [Optimizely](https://www.optimizely.com/products/content-management/) team to receive CMS access.

README 原文

An Optimizely SaaS CMS instance - Optimizely Content Graph API key

README 原文

Make sure to add "Polish" language in your CMS settings before importing content to ensure successful import

README 原文
https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/LICENSEhttps://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-03。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 88 / 100
技术栈
Next.js · React
网站类型
SaaS · 启动器
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2025-12-31
截图检查日期
2026-10-03

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-04

查看当时使用的来源资料

SHA-256: 2522137ce78c900de23f3fc11613d70ee5219499c2cf6dbe001dc8e1286e2d0a

2026-10-03T08:43:54.359Z

来源文件 / 仓库
# Optimizely SaaS CMS + Next.js 15

A comprehensive starter template for building modern websites with Optimizely SaaS CMS and Next.js 15 App Router. This template serves as an excellent starting point for projects integrating with Optimizely SaaS CMS.

This project was built based on a free course on how to get started with Optimizely SaaS CMS. You can find step-by-step information on how this project was built at: https://opti-masterclass.vercel.app

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fszymonuryga%2FOptimizely-SaaS-CMS-Next.js-15&env=OPTIMIZELY_API_URL,OPTIMIZELY_SINGLE_KEY,OPTIMIZELY_PREVIEW_SECRET,OPTIMIZELY_REVALIDATE_SECRET,OPTIMIZELY_START_PAGE_URL,NEXT_PUBLIC_CMS_URL)

> Note: This template requires an Optimizely SaaS CMS instance to retrieve content. Please connect with the [Optimizely](https://www.optimizely.com/products/content-management/) team to receive CMS access.

## Features

- ⚡ **Next.js 15** with App Router
- 🏗️ **Static Site Generation (SSG)** for optimal performance
- 🔄 **On-Demand Cache Revalidation** via webhooks for real-time content updates
- 👁️ **Draft Mode** for content previews
- 🌐 **Multi-language Support** with automatic language detection
- 🧩 **Block Factory Mapper** for dynamic content rendering
- 🎨 **Visual Builder Integration** for intuitive content editing
- 🔍 **SEO Optimized** with metadata support
- 💅 **Tailwind CSS & shadcn/ui** for beautiful, responsive designs
- 📊 **TypeScript** for type safety
- 📝 **GraphQL Codegen** for type-safe API calls

## Important Note

- This repository includes an `ExportedFile.episerverdata` file in the root folder, which contains all initial content for Optimizely SaaS CMS. You can import this file into your Optimizely instance to get started with pre-configured content.
- This template focuses on core functionality that is common to all projects, such as fetching content from Optimizely Graph, preview functionality, routing, Visual Builder and cache revalidation. The design is intentionally simple and serves as an example — each project will have its own design requirements.

## Getting Started

### Prerequisites

- Node.js 18.17 or later
- An Optimizely SaaS CMS instance
- Optimizely Content Graph API key

### Setup Instructions

- Clone the repository:

```bash
git clone https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15.git
cd Optimizely-SaaS-CMS-Next.js-15
```

- Install dependencies:

```shellscript
npm install
```

- Set up environment variables:

Create a `.env` file in the root directory with the following variables:

```plaintext
OPTIMIZELY_API_URL="https://cg.optimizely.com/content/v2"
OPTIMIZELY_SINGLE_KEY=""
OPTIMIZELY_PREVIEW_SECRET=""
OPTIMIZELY_REVALIDATE_SECRET=""
OPTIMIZELY_START_PAGE_URL=""
NEXT_PUBLIC_CMS_URL="https://app-{your-data}.cms.optimizely.com"
```

- Generate GraphQL types and SDK with all methods:

```shellscript
npm run gen-types
```

- Start the development server:

```shellscript
npm run dev
```

- Open [http://localhost:3000](http://localhost:3000) in your browser.

## Documentation

This project includes comprehensive documentation on various aspects of integrating Next.js with Optimizely SaaS CMS:

- [Project Setup](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/project-setup.md) - Basic setup instructions
- [Block Factory Mapper](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/block-factory-mapper.md) - Pattern for dynamically rendering content blocks
- [Fetching Data](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/fetch-data.md) - How to fetch data from Optimizely Graph
- [Cache Revalidation](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/cache-revalidation.md) - Implementing cache revalidation with webhooks
- [Visual Builder](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/visual-builder.md) - Integration with Optimizely's Visual Builder
- [Draft Mode](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/draft-mode.md) - Setting up preview/draft mode
- [Multi-language Support](https://github.com/szymonuryga/Optimizely-SaaS-CMS-Next.js-15/blob/main/docs/multi-language.md) - Implementing localization

👉 A complete step-by-step guide and course on how to build everything from scratch can be found here: https://opti-masterclass.vercel.app

## Importing Content to Optimizely

1. Log in to your Optimizely SaaS CMS instance
2. **Important**: Make sure to add "Polish" language in your CMS settings before importing content to ensure successful import
3. Go to Admin > Tools > Import Data
4. Upload the `ExportedFile.episerverdata` file from the root of this project
5. Follow the import wizard to complete the process

## Environment Variables

- `OPTIMIZELY_API_URL`: The base URL for the Optimizely Graph (typically "https://cg.optimizely.com/content/v2")
- `OPTIMIZELY_SINGLE_KEY`: Your Optimizely Content Graph API key
- `OPTIMIZELY_PREVIEW_SECRET`: Generated base64 string based on your AppKey and AppSecret credentials. For more details I recommend you to take a look at Kunal's article: https://kunalshetye.com/posts/optimizely-graph-using-appkey-appsecret/
- `OPTIMIZELY_REVALIDATE_SECRET`: A secret key used for revalidating cached content
- `OPTIMIZELY_START_PAGE_URL`: Defines the full route URL of the Start Page in Optimizely CMS. When using hierarchical routing, Optimizely does not assign the root path `/` to the Start Page by default. Instead, the Start Page must have an explicit URL like "/start-page". This impacts the overall routing logic and cache revalidation mechanisms. Therefore, this variable must be set manually to indicate the correct URL of the Start Page.
- `NEXT_PUBLIC_CMS_URL`: The URL of your SaaS CMS instance

## Future Enhancements

This template is actively maintained and will be updated to support new features and improvements in Optimizely SaaS CMS as they become available. Stay tuned for future enhancements!

## License

[MIT](LICENSE)
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。