fullstack-apollo-express-postgresql-boilerplate

一个复杂的GraphQL样板项目,带有Apollo、Express和PostgreSQL。(A sophisticated GraphQL with Apollo, Express and PostgreSQL boilerplate project.)

Github stars Tracking Chart

fullstack-apollo-express-postgresql-boilerplate

Build Status Slack Greenkeeper badge

A full-fledged Apollo Server with Apollo Client starter project with React and Express. Read more about it in this tutorial to build it yourself.

Family of universal fullstack repositories:

Server Applications:

Client Applications:

Features of Client + Server

  • React (create-react-app) with Apollo Client
    • Queries, Mutations, Subscriptions
  • Node.js with Express and Apollo Server
    • cursor-based Pagination
  • PostgreSQL Database with Sequelize
    • entities: users, messages
  • Authentication
    • powered by JWT and local storage
    • Sign Up, Sign In, Sign Out
  • Authorization
    • protected endpoint (e.g. verify valid session)
    • protected resolvers (e.g. e.g. session-based, role-based)
    • protected routes (e.g. session-based, role-based)
  • performance optimizations
    • example of using Facebook's dataloader
  • E2E testing

Installation

  • git clone git@github.com:the-road-to-graphql/fullstack-apollo-express-postgresql-boilerplate.git
  • cd fullstack-apollo-express-postgresql-boilerplate
  • touch .env
  • npm install
  • fill out .env file (see below)
  • start PostgreSQL database
  • npm start
  • visit http://localhost:8000 for GraphQL playground

.env file

Since this boilerplate project is using PostgreSQL, you have to install it for your machine and get a database up and running. You find everything for the set up over here: Setup PostgreSQL with Sequelize in Express Tutorial. After you have created a database and a database user, you can fill out the environment variables in the server/.env file.

DATABASE=mydatabase

DATABASE_USER=postgres
DATABASE_PASSWORD=postgres

SECRET=asdlplplfwfwefwekwself.2342.dawasdq

The SECRET is just a random string for your authentication. Keep all these information secure by adding the .env file to your .gitignore file. No third-party should have access to this information.

Testing

  • adjust test:run-server npm script with TEST_DATABASE environment variable in package.json to match your testing database name
    • to match it from package.json: createdb mytestdatabase with psql
  • one terminal: npm run test:run-server
  • second terminal: npm run test:execute-test

Want to learn more about React + GraphQL + Apollo?

Overview

Name With Ownerthe-road-to-graphql/fullstack-apollo-express-postgresql-boilerplate
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
PlatformLinux, Mac, Windows
License:MIT License
Release Count0
Created At2018-05-07 02:50:31
Pushed At2020-06-12 08:43:37
Last Commit At2020-06-12 10:43:36
Stargazers Count1.2k
Watchers Count26
Fork Count265
Commits Count174
Has Issues Enabled
Issues Count87
Issue Open Count27
Pull Requests Count15
Pull Requests Open Count17
Pull Requests Close Count8
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top