How to create a new Next.js project with Cloudflare Pages and Workers

Introduction

In this guide, we'll walk through creating a new Next.js 14 project using TypeScript and deploying it on Cloudflare Pages with Workers for a full-stack solution. We'll use the create-cloudflare CLI (C3) to set up our project, and deploy the application.

Step 1: Create a new Git repository

Go to GitHub, click the "+" icon in the top right, and select "New repository". Set the repository name to nextjs-cf-pages-workers or whatever you would like to, choose Public or Private visibility, and click "Create repository".

new-git-repo

Your new repository is now ready! Clone the repository and get ready for the next step!

Step 2: Create a New Next.js Project

To get started, we'll use the create-cloudflare CLI (C3) to create a new Next.js project. Open your terminal and run the following command:

npm create cloudflare@latest my-next-app -- --framework=next

This command initializes a new Next.js project in a directory named my-next-app. Follow the prompts to configure your project. The CLI will install the necessary dependencies, including the Wrangler CLI and the @cloudflare/next-on-pages adapter.

npm-create-cloudflare

In your terminal, this is how it should look like. After the project is created, navigate to the project directory, and run npm run dev. You should have a browser preview like this:

next-browser-preview

Step 3: Configure the Project for Cloudflare Pages

You can deploy using mutliple options, I have covered 2 in this article.

Log in to the Cloudflare dashboard and select your account. Navigate to Workers & Pages > Create application > Pages > Connect to Git. Authorize access to your GitHub account and select the new repository you created.

Make sure you have added nodejs_compat as the compatibility flags or the build will fail!

Step 4: Configure and Deploy Without C3

If you prefer not to use C3, you can manually configure and deploy your project. Install the @cloudflare/next-on-pages adapter:

npm install @cloudflare/next-on-pages

Step 5: Set Up Bindings for Local Development

Bindings allow your application to interact with Cloudflare developer products. To set up bindings for local development, modify your Next.js configuration:

// next.config.mjs
import { setupDevPlatform } from "@cloudflare/next-on-pages/next-dev";

if (process.env.NODE_ENV === "development") {
  await setupDevPlatform();
}

/** @type {import('next').NextConfig} */
const nextConfig = {};

export default nextConfig;

Ensure you have a wrangler.toml file at the root of your project with a KV binding:

# wrangler.toml
name = "my-next-app"
compatibility_flags = ["nodejs_compat"]

[[kv_namespaces]]
binding = "MY_KV"
id = "<YOUR_KV_NAMESPACE_ID>"

Alternatively, you can run the following command and it should deploy the project as shown below.

npm run deploy

cf-deploy-terminal

Success!

By following these steps, you've successfully created and deployed a full-stack Next.js 14 project with TypeScript on Cloudflare Pages and Workers. This setup leverages Cloudflare's powerful developer products to enhance your application's capabilities.

cf-dashboard

Conclusion

Thank you for reading! If you found this blog post helpful, please consider sharing it with others who might benefit. Feel free to check out my other blog posts and visit my socials!

Read more

Share this article: