As someone once said:
Individuals often make poor decisions.
And large groups often make poor decisions too.
The application consists of:
api/
web/
GraphQL has been chosen for the API layer for numerous reasons. While GraphQL provides the client with a sensible data contract, it makes few assumptions about the service layer.
Graphcool appears to be the current best option for rapid development and deployment of a GraphQL API. This project should not rely too heavily on Graphcool's platform-specific features, however. There may be significant advantages in using a graph persistence layer (Dgraph, Neo4j, etc.), and the many decisions made by Graphcool are not necessarily optimal.
Open questions:
- persistence
- permissions
- integrations with external services
- testing
- deployment
- React is the de facto standard for modern web development. Additionally, React Native can be used to build native applications.
- Create React App provides rudimentary scaffolding for development and deployment.
- React Router is a collection of navigational components for React.
- Apollo Client is a powerful set of tools for connecting applications (both web and native) to GraphQL APIs.
- Tachyons is a responsive CSS framework designed to preserve sanity.
Open questions:
- offline usability
- optimistic UI
- progressive enhancement
- server-side rendering
- testing
- deployment
First, install:
Note: all commands executed from api/
To start Graphcool:
yarn install
yarn up
yarn deploy -c local
Once you've done the above, you can get to the Graphcool playground by running:
yarn playground
Password authentication follows the tutorial
[authentication with email and password][https://www.graph.cool/docs/tutorials/auth/authentication-with-email-and-password-for-react-and-apollo-cu3jah9ech/].
Or, more accurately, it follows the template graphcool/templates/auth/email-password
.
Note: all commands executed from web/
To start the front end development server:
yarn install
yarn start