Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shylgenkodmitry/react-apollo-express-postgres
A full-fledged Apollo Server 2 with Apollo Client 2 starter project with React, Express and PostgreSQL.
https://github.com/shylgenkodmitry/react-apollo-express-postgres
apollo client express nodejs postgres reactjs server
Last synced: about 1 month ago
JSON representation
A full-fledged Apollo Server 2 with Apollo Client 2 starter project with React, Express and PostgreSQL.
- Host: GitHub
- URL: https://github.com/shylgenkodmitry/react-apollo-express-postgres
- Owner: shylgenkodmitry
- License: mit
- Created: 2019-05-23T08:02:43.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T02:11:20.000Z (almost 2 years ago)
- Last Synced: 2023-03-08T16:41:18.374Z (almost 2 years ago)
- Topics: apollo, client, express, nodejs, postgres, reactjs, server
- Language: JavaScript
- Size: 1.53 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fullstack-apollo-react-express-boilerplate-project
A full-fledged Apollo Server 2 with Apollo Client 2 starter project with React, Express and PostgreSQL.
[GraphQL Server Tutorial](https://www.robinwieruch.de/graphql-apollo-server-tutorial/)
## Features
* React (create-react-app) with Apollo Client 2
* Queries, Mutations, Subscriptions
* Node.js with Express and Apollo Server 2
* 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### Client
* `cd client`
* `npm install`
* `npm start`
* visit `http://localhost:3000`### Server
* `cd server`
* `touch .env`
* `npm install`
* fill out *.env file* (see below)
* `npm start`
* optional 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](https://www.robinwieruch.de/postgres-express-setup-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=postgresSECRET=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-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-server
* second terminal: npm run test