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.
This repository is the fullstack Apollo Server with Express and MongoDB project. You can find a working client application that can be used with this server in the list below:
- React (create-react-app) with Apollo Client
- Queries, Mutations, Subscriptions
- Node.js with Express and Apollo Server
- cursor-based Pagination
- MongoDB Database with Mongoose
- 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
git clone git@github.com:the-road-to-graphql/fullstack-apollo-express-mongodb-boilerplate.gitcd fullstack-apollo-express-mongodb-boilerplatetouch .envnpm install- fill out .env file (see below)
npm start- optional visit
http://localhost:8000for GraphQL playground
Since this boilerplate project is using MongoDB, 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 MongoDB with Mongoose in Express Tutorial [TODO: write 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.
[TODO: change psql to MongoDB equivalent]
- adjust
test:run-servernpm script withTEST_DATABASEenvironment variable in package.json to match your testing database name- to match it from package.json:
createdb mytestdatabasewith psql
- to match it from package.json:
- one terminal: npm run test:run-server
- second terminal: test:execute-test
- Don't miss upcoming Tutorials and Courses
- Check out current React Courses