DEV Community

Discussion on: What's the Node framework landscape like?

Collapse
 
nikolasburk profile image
Nikolas Burk

I work at Prisma and we're currently working on a modern Node.js backend framework that'll make it easy to spin up an entire backend. A few core characteristics of the framework are:

  • Declarative and type safe
  • Minimum boilerplate
  • Extensible via plugins (e.g. for auth, logging, ...)
  • Database included
  • Code-first GraphQL
  • Zero-config and awesome developer experience

You can check out the framework on GitHub or watch this short demo video! The temporary name for the framework is graphql-santa 🎅

The stack is based on the following tools:

  • Database: PostgreSQL (alternatively you can use MySQL or SQLite)
  • Data access (ORM) & Database migrations: Prisma 2
  • Code-first GraphQL schema construction: GraphQL Nexus
  • GraphQL server: Apollo Server

To get started and set up your first project, you can simply run:

npx graphql-santa
Enter fullscreen mode Exit fullscreen mode

We're very eager on getting feedback for this framework, I'd love to hear some opinions and thoughts on this approach!

Collapse
 
nikolasburk profile image
Nikolas Burk

If you're looking for a fullstack framework, also definitely check out the Hammerframework.

It's built by GitHub's co-founder Tom Preston-Werner and has similar design as goals graphql-santa, but also includes the frontend. This is the stack they're using:

  • Babel
  • React
  • GraphQL
  • Prisma Photon
  • JSX
  • Styled Components
  • React Router
  • Apollo
  • Prisma Lift
  • Storybook
Collapse
 
albertgao profile image
AlbertGao • Edited

I am using Prisma v2 + Nexus + Nexus-Prisma for a month, and have a very pleasant experience with it. DX is top-notch and every flow is connected together.

For example,

First, Prisma2 schema gives you a nice abstraction over the DB, so later on you can migrate your data source easily. And its GraphQL-like syntax means you can pick it up in notime.

Then you play with your database schema, adding this, changing that, with prisma2 dev running, every change will be temp saved and you can review them in the Studio GUI, and after you feel good about it, you use prisma2 lift save and up the changes to the database.

Then go to your GraphQL schema, expose the fields to the schema, wow, just type, t.yourModel.blahblah, all properties from the DB are there with auto-completion.

later on, in the resolver, with normal CRUD, a beautiful t.crud.createOneUser or t.curd.upsertOneUser are there, makes it super easer to up and running, no boilerplate, and you can add control at every step because it is basically just giving you the conveniences without taking the control out of you.

With Typescript, you don't even need to look at the doc as everything is just there in the type information, and the API is intuitive, so I don't think you need to learn, after using it for a few times, you can infer the API by yourself, and found that it is just there... even you forget, with a single dot or hover your mouse over, auto-completion will tell you everything.

If you use REST but GraphQL, you can still benefit from every advantage that I just mentioned.

And then you can see, that it pretty much creates a productive closure for back-end development, and you go through the flow with confidence as everything is backed by typing if you are using Typescript.

Looking forward for graphql-santa for how much further it could take us.

I am always searching for a less-code but without sacrificing control solution to my back-end. And I am glad that I found the Prisma2 stack.