🚀 Boilerplate and Starter for Next.js with App Router support, Tailwind CSS and TypeScript ⚡️ Made with developer experience first: Next.js, TypeScript, ESLint, Prettier, Husky, Lint-Staged, Vitest (replacing Jest), Testing Library, Commitlint, VSCode, PostCSS, Tailwind CSS, Authentication with Clerk, Database with DrizzleORM (PostgreSQL, SQLite, and MySQL), Error Monitoring with Sentry, Logging with Pino.js and Log Management, Monitoring as Code, Storybook, Multi-language (i18n), and more. Ready for Next.js 15.
Clone this project and use it to create your own SaaS. You can check the live demo at SaaS Boilerplate.
Developer experience first, extremely flexible code structure and only keep what you need:
@
prefixBuilt-in feature from Next.js:
Run the following command on your local environment:
git clone --depth=1 https://github.com/ixartz/Next-js-Boilerplate.git my-project-name cd my-project-name npm install
For your information, all dependencies are updated every month.
Then, you can run the project locally in development mode with live reload by executing:
npm run dev
Open http://localhost:3000 with your favorite browser to see your project.
Create a Clerk account at Clerk.com and create a new application in Clerk Dashboard. Then, copy NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
and CLERK_SECRET_KEY
into .env.local
file (not tracked by Git):
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_pub_key CLERK_SECRET_KEY=your_clerk_secret_key
Now, you have a fully working authentication system with Next.js: Sign up, Sign in, Sign out, Forgot password, Reset password, Update profile, Update password, Update email, Delete account, and more.
The project uses DrizzleORM, a type-safe ORM compatible with PostgreSQL, SQLite, and MySQL databases. By default, the project is set up to work seamlessly with PostgreSQL and you can easily choose any PostgreSQL database provider.
For translation, the project uses next-intl
combined with Crowdin. As a developer, you only need to take care of the English (or another default language) version. Other languages are automatically generated and handled by Crowdin. You can use Crowdin to collaborate with your translation team or translate the messages yourself with the help of machine translation.
To set up translation (i18n), create an account at Crowdin.com and create a new project. In the newly created project, you will able to find the project ID. You'll also require to create a new Personal Access Tokens by going to Account Settings > API. Then, in your GitHub Actions, you need to define the following environment variables CROWDIN_PROJECT_ID
and CROWDIN_PERSONAL_TOKEN
.
After defining the environment variables in your GitHub Actions, your localization files will be synchronized with Crowdin everytime you push a new commit to the main
branch.
. ├── README.md # README file ├── .github # GitHub folder ├── .husky # Husky configuration ├── .storybook # Storybook folder ├── .vscode # VSCode configuration ├── migrations # Database migrations ├── public # Public assets folder ├── scripts # Scripts folder ├── src │ ├── app # Next JS App (App Router) │ ├── components # Reusable components │ ├── features # Components specific to a feature │ ├── libs # 3rd party libraries configuration │ ├── locales # Locales folder (i18n messages) │ ├── models # Database models │ ├── styles # Styles folder │ ├── templates # Templates folder │ ├── types # Type definitions │ └── utils # Utilities folder ├── tests │ └── e2e # E2E tests, also includes Monitoring as Code ├── tailwind.config.js # Tailwind CSS configuration └── tsconfig.json # TypeScript configuration
You can easily configure Next.js SaaS Boilerplate by making a search in the whole project with FIXME:
for making quick customization. Here is some of the most important files to customize:
public/apple-touch-icon.png
, public/favicon.ico
, public/favicon-16x16.png
and public/favicon-32x32.png
: your website favicon, you can generate from https://favicon.io/favicon-converter/src/utils/AppConfig.ts
: configuration filesrc/templates/BaseTemplate.tsx
: default themenext.config.mjs
: Next.js configuration.env
: default environment variablesYou have access to the whole code source if you need further customization. The provided code is only example for you to start your project. The sky is the limit 🚀.
The project enforces Conventional Commits specification. This means that all your commit messages must be formatted according to the specification. To help you write commit messages, the project uses Commitizen, an interactive CLI that guides you through the commit process. To use it, run the following command:
npm run commit
One of the benefits of using Conventional Commits is that it allows us to automatically generate a CHANGELOG
file. It also allows us to automatically determine the next version number based on the types of commits that are included in a release.
All unit tests are located with the source code inside the same directory. So, it makes it easier to find them. The project uses Vitest and React Testing Library for unit testing. You can run the tests with:
npm run test
The project uses Playwright for Integration and E2E testing. You can run the tests with:
npx playwright install # Only for the first time in a new environment npm run test:e2e
The App Router folder is compatible with the Edge runtime. You can enable it by adding the following lines src/app/layouts.tsx
:
export const runtime = 'edge';
For your information, the database migration is not compatible with the Edge runtime. So, you need to disable the automatic migration in src/libs/DB.ts
:
await migrate(db, { migrationsFolder: './migrations' });
After disabling it, you are required to run the migration manually with:
npm run db:migrate
You also require to run the command each time you want to update the database schema.
During the build process, the database migration is automatically executed. So, you don't need to run the migration manually. But, in your environment variable, DATABASE_URL
need to be defined.
Then, you can generate a production build with:
$ npm run build
It generates an optimized production build of the boilerplate. For testing the generated build, you can run:
$ npm run start
You also need to defined the environment variables CLERK_SECRET_KEY
using your own key.
The command starts a local server with the production build. Then, you can now open http://localhost:3000 with your favorite browser to see the project.
The project uses Sentry to monitor errors. For development environment, you don't need to do anything: NextJS SaaS Boilerplate is already configured to use Sentry and Spotlight (Sentry for Development). All errors will be automatically sent to your local Spotlight instance. So, you can try the Sentry experience locally.
For production environment, you need to create a Sentry account and create a new project. Then, in next.config.mjs
, you need to update the org
and project
attribute in withSentryConfig
function. You also need to add your Sentry DSN in sentry.client.config.ts
, sentry.edge.config.ts
and sentry.server.config.ts
.
NextJS Boilerplate relies on Codecov for code coverage reporting solution. To use Codecov, create a Codecov account and connect it to your GitHub account. On your Codecov dashboard, it should display a list of your repositories. Select the repository you want to enable Codecov for and copy the token. Then, in your GitHub Actions, you need to define the CODECOV_TOKEN
environment variable and paste the token you copied.
Be sure to create the CODECOV_TOKEN
as a Github Actions secret, do not paste it directly into your source code.
The project uses Pino.js for logging. By default, for development environment, the logs are displayed in the console.
For production environment, the project is already integrated with Better Stack to manage and query your logs using SQL. To use Better Stack, you need to create a Better Stack account and create a new source: go to your Better Stack Logs Dashboard > Sources > Connect source. Then, you need to give a name to your source and select Node.js as the platform.
After creating the source, you able to see your source token and copy it. Then, in your environment variabless, you can paste the token in LOGTAIL_SOURCE_TOKEN
variable. Now, all your logs will be automatically sent and ingested by Better Stack.
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
字节跳动发布的AI编程神器IDE
Trae是一 种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答 生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手 ,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火 大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥 有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号