Monorepo for the MetaGame applications, backend and databases.
We're using the following stack:
If you're new to the MetaGame codebase, check out the following guides to learn how to contribute.
Before you start contributing read the Contributing Guide!
Create your local .env file
cp .env.sample .envCreate a GitHub token at https://github.com/settings/tokens
Set GITHUB_API_TOKEN=your_github_token in .env
yarnInitial TS Compilation For Monorepo Packages
yarn typecheckAdding a package to the codebase can be done with Lerna
Start backend services
yarn docker:startFor M1 Mac Users
Official docker images of Hasura don't work on M1 yet
In hasura/Dockerfile
Replace
FROM hasura/graphql-engine:v1.3.3.cli-migrations-v2
with
FROM fedormelexin/graphql-engine-arm64:v1.3.3.cli-migrations-v2
- Runs docker containers for backend, Hasura Engine, and PostGres database
- will auto-restart on any changes to
packages/backendandpackages/utils
If you are running for the first time on an empty database, once the services are running you have two options to populate the database:
- Populate the database with the production dataset:
yarn hasura:seed-db- Populate the database with the initial dataset:
curl -X POST http://localhost:4000/actions/syncSourceCredAccounts?force=trueRebuild backend services
If your docker containers fail to start due to changes in config, you may need to rebuild the containers. This can take several minutes.
yarn docker:buildStop backend services
yarn docker:stop- Stops all the containers
Troubleshooting
Rebuild and run the containers (in attach mode):
docker-compose up --buildIn case non of the above commands are working try purge the docker containers and images you can do this by running (notice: this removes all the containers and images on your computer!):
docker system prune -aIf you're working on the front-end and the build fails with something like the error below, you'll need to create a .env file in packages/web and add NEXT_PUBLIC_GRAPHQL_URL=https://api-staging.metagame.wtf/v1/graphql
[Error [CombinedError]: [Network] request to http://localhost:8080/v1/graphql failed, reason: connect ECONNREFUSED 127.0.0.1:8080] {
type: 'CombinedError',
graphQLErrors: [],
networkError: {
message: 'request to http://localhost:8080/v1/graphql failed, reason: connect ECONNREFUSED 127.0.0.1:8080',
type: 'system',
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED'
}
}
** A note about environment variables **
If you need to add an environment variable, it will need to go in several places:
- your own
.envfile .env.samplegcp-deploy.yaml- For backend variables, add to the
deploy-backendstep alongside the others - For frontend variables, add to the
deploy-frontendstep. You may also need to add it to thebuild-frontendstep, if it is used in a page that is statically generated by next.js
- For backend variables, add to the
gcp-deploy-frontend.yamlfor frontend variables, this should be the same as the frontend actions in the other yaml file
Secrets will need to be added to the TheGame Github secrets; contact a senior builder for assistance.
As an aside, the gcp-deploy-frontend.yaml is the deployment configuration for our test and production frontend instances, while gcp-deploy.yaml is only for PR environments.
yarn web:devGo to http://localhost:3000
Happy Coding!
yarn discord-bot devThis will automatically register with Discord and relay chat messages to your local instance! Pretty cool. Testing in a dedicated test Discord server (rather than MetaGame's) is recommended.
Start Hasura console
yarn hasura:consoleHasura CLI example
yarn hasura migrate status
yarn hasura migrate squash --name "<feature-name>" --from 1598417879553
yarn hasura migrate apply --version "<squash-migration-version>" --skip-executionHasura CLI documentation Hasura Migrations Guide
Generate GraphQL Types
yarn generateReload Schema + Generate GraphQL Types (backend needs to be running)
yarn update-schema
yarn generateyarn docker:clean
yarn docker:startyarn typecheckUpon pushing to the repository a linting check will be initialized validating your code. If you want to push the branch to the repository (maybe for collaboration) while the code isn't completely valid yet you have the option of skipping the linting process:
git push -u origin <branch> [--no-verify]Please use this only when absolutely necessary!
When running the backend stack locally using docker-compose, you can still debug the backend container using VS Code. Just add this configuration to your .vscode/launch.json.