rsnext/examples/with-edgedb
Karl Horky 3ad55721d1
Remove incorrect entries for pnpm debug log (#47241)
**Reasons for making this change:**

- it is contained within `node_modules/`, which is already ignored
- the previous versions, which were not in `node_modules/`, did not have
a period at the beginning of the filename

Links to documentation supporting these rule changes:

**Changelog with proof here:**


ba4b2db1f2/pnpm/CHANGELOG.md (L3330)

History:

- my PR to remove this from `github/gitignore` here:
https://github.com/github/gitignore/pull/4250
- First introduced in `github/gitignore` in
https://github.com/github/gitignore/pull/3732 by `@sakurayang` (merged
by `@martinwoodward`)

<!-- Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change(s) that you're making:

## For Contributors

### Improving Documentation or adding/fixing Examples

- The "examples guidelines" are followed from our contributing doc
https://github.com/vercel/next.js/blob/canary/contributing/examples/adding-examples.md
- Make sure the linting passes by running `pnpm build && pnpm lint`. See
https://github.com/vercel/next.js/blob/canary/contributing/repository/linting.md

### Fixing a bug

- Related issues linked using `fixes #number`
- Tests added. See:
https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md

### Adding a feature

- Implements an existing feature request or RFC. Make sure the feature
request has been accepted for implementation before opening a PR. (A
discussion must be opened, see
https://github.com/vercel/next.js/discussions/new?category=ideas)
- Related issues/discussions are linked using `fixes #number`
- e2e tests added
(https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Documentation added
- Telemetry added. In case of a feature if it's used or not.
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md



## For Maintainers

- Minimal description (aim for explaining to someone not on the team to
understand the PR)
- When linking to a Slack thread, you might want to share details of the
conclusion
- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues
- Add review comments if necessary to explain to the reviewer the logic
behind a change

### What?

### Why?

### How?

Closes NEXT-
Fixes #

-->

---------

Co-authored-by: JJ Kasper <jj@jjsweb.site>
2023-03-26 22:26:05 -07:00
..
components Run next/link codemod for Next.js 13 on examples (#41913) 2022-10-30 21:00:45 +01:00
dbschema Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00
pages Run next/link codemod for Next.js 13 on examples (#41913) 2022-10-30 21:00:45 +01:00
.eslintignore Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00
.gitignore Remove incorrect entries for pnpm debug log (#47241) 2023-03-26 22:26:05 -07:00
client.ts Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00
edgedb.toml Update edgedb.toml (#39243) 2022-08-02 02:31:04 +00:00
next-env.d.ts Remove incorrect entries for pnpm debug log (#47241) 2023-03-26 22:26:05 -07:00
package.json Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00
README.md docs(examples): improve DX while copying command to create new project (#38410) 2022-07-26 21:57:48 -05:00
seed.ts Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00
tsconfig.json Add with-edgedb example (#35929) 2022-04-27 16:49:17 +00:00

Full-stack EdgeDB + Next.js application

A simple blog application built with Next.js, TypeScript, React, and EdgeDB on the backend.

Deploy your own

Deploy the example using Vercel:

Deploy with Vercel

How to use

Download the example project

Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:

npx create-next-app --example with-edgedb with-edgedb-app
yarn create next-app --example with-edgedb with-edgedb-app
pnpm create next-app --example with-edgedb with-edgedb-app

Then cd into the created directory.

$ cd with-edgedb-app

Install the CLI

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 EdgeDB project

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 dependencies

Install npm dependencies:

$  npm install
# or
$  yarn

Generate the query builder

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'

Seed the database

$ npx ts-node seed.ts

Start the app

$ yarn dev

The application should now be running on http://localhost:3000.

Notes

packages structure

  • /: 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.

API structure

  • POST /api/post: Create a new post
    • Body: {title: string; content: string; authorName: string}
  • PATCH /api/post/:id: Update a post by id
    • Body: {title?: string; content?: string;}
  • PUT /api/publish/:id: Publish a post by id
  • DELETE /api/post/:id: Delete a post by id

Evolving the app

Evolving the application typically requires three steps:

  1. Update the schema in dbschema/default.esdl
  2. Generate a new migration with edgedb migration create
  3. Apply the migration with edgedb migrate
  4. Regenerate the query builder with npx edgeql-js
  5. Update the application code, as needed.

Deployment

To deploy this application, deploy EdgeDB to your preferred cloud provider:

Then:

  1. Find your instance's DSN (AKA connection string). The exact instructions for this depend on which cloud you are deploying to.

  2. Use this DSN to migrate your remote instance to the latest schema. Run this command from inside your project directory.

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.

  1. Deploy this app to Vercel with the button above. You'll be prompted to provide a value for EDGEDB_DSN, the value from the previous step.

  2. Open the application at the deployment URL supplied by Vercel.

Next steps