This folder contains the various components (aka "packages") of our project. We
use yarn workspaces to manage
this monorepo, to help us to keep things separate without slowing development
speed. All components of this project are named @app/*
so that we can
reference them from each other in a straightforward manner, e.g.
import { useAppQuery } from "@app/graphql";
- @app/config - shared configuration for the entire stack, powered by dotenv
- @app/client - the React frontend, powered by Next.js
- @app/graphql - the autogenerated GraphQL types and Apollo React hooks, powered by graphql-code-generator
- @app/server - the Node.js backend and tests, powered by Express, Passport and PostGraphile (provides auth, GraphQL, SSR, etc)
- @app/worker - job queue (e.g. for sending emails), powered by graphile-worker
- @app/db - database migrations and tests, powered by graphile-migrate
- @app/e2e - end-to-end tests for the entire stack, powered by Cypress
- @app/__tests__ - some test helpers