https://github.com/colinhacks/edgedb-nextjs-blog.git
A simple blog application built with Next.js, TypeScript, React, and EdgeDB on the backend.
Deploy the example using Vercel:
Execute create-next-app with npm or Yarn to bootstrap the example:
npx create-next-app --example with-edgedb with-edgedb-app
# or
yarn create next-app --example with-edgedb with-edgedb-app
# or
pnpm create next-app -- --example with-edgedb with-edgedb-app
Then cd into the created directory.
$ cd with-edgedb-app
First install the EdgeDB CLI if you haven't already.
# macOS/Linux
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
# Windows (Powershell)
$ iwr https://ps1.edgedb.com -useb | iex
Initialize the project with the following CLI command:
$ edgedb project init
After you follow the prompts, this command will spin up a local EdgeDB instance and apply all the migrations inside dbschema/migrations. Now that the project is initialized, all EdgeDB clients initialized inside the project directory will connect to this instance automaticallyβno need for environment variables or hard-coded configuration. (Read more about projects here.)
Install npm dependencies:
$ npm install
# or
$ yarn
This project uses the EdgeQL query builder for TypeScript. This tool can express any EdgeQL query in a code-first way and infers a static return type. Generate it with the following command:
$ npx edgeql-js
The query builder consists of several files that are generated into the dbschema/edgeql-js directory. Import it like so:
import e from './dbschema/edgeql-js'
$ npx ts-node seed.ts
$ yarn dev
The application should now be running on http://localhost:3000.
/: See all published posts/drafts: See all drafts/create: Form to create new draft/blog/:id: See either an edit page or a published post, depending on the publish status of the post.POST /api/post: Create a new post{title: string; content: string; authorName: string}PATCH /api/post/:id: Update a post by id{title?: string; content?: string;}PUT /api/publish/:id: Publish a post by idDELETE /api/post/:id: Delete a post by idEvolving the application typically requires three steps:
dbschema/default.esdledgedb migration createedgedb migratenpx edgeql-jsTo deploy this application, deploy EdgeDB to your preferred cloud provider:
edgedb migrate --dsn <your-instance-dsn> --tls-security insecure
You have to disable TLS checks with --tls-security insecure. All EdgeDB instances use TLS by default, but configuring it is out of scope of this project.
EDGEDB_DSN, the value from the previous step.