* quest-roles-demo init feat: backend changes * fix: more lint * fix: even more lint * fix: add field to update quest * chore: consolidate migrations * chore: rename * chore: update schema * quest-roles-demo init * feat: add role selector to create quest form * fix: after rebase * fix: bug when clicking the only selected value in filter * feat: save roles to backend * feat: display roles on /quest/id card * feat: add megamenu demo link * feat: add additional roles: Bridgebuilding, Rainmaking, Videomaking * feat: support for editing roles on quests * chore: revert changes that allowed me to bypass creating quests * fix: hide quests demo app link * fix: alec's corrections * chore: roles_id -> roleIds * quest-roles-demo init * feat: save roles to backend * feat: add additional roles: Bridgebuilding, Rainmaking, Videomaking * feat: support for editing roles on quests * chore: revert changes that allowed me to bypass creating quests * feat: completed quests section * feat: display completed quest name + link * fix: rebasing changes submitted_at -> submittedAt, etc... * style: add proof link and style * style: all quests content and subheader * style: all quests modal footer * chore: remove mock data * fix: schema * fix: schema * chore: delete console.log * chore: dysbulic's suggestions * fix: final fixes Co-authored-by: dan13ram <dan13ram@gmail.com>
The Game
Monorepo for the MetaGame applications, backend and databases.
We're using the following stack:
Frontend
Backend
Overall
MetaGame
Guides
If you're new to the MetaGame codebase, check out the following guides to learn how to contribute.
Development
Before you start contributing read the Contributing Guide!
Bootstrap
Create your local .env file
cp .env.sample .env
Create a GitHub token at https://github.com/settings/tokens
Set GITHUB_API_TOKEN=your_github_token in .env
Install Packages
yarn
Initial TS Compilation For Monorepo Packages
yarn typecheck
Adding a package to the codebase can be done with Lerna
Run services
Start backend services
yarn docker:start
For 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-local-db
- Populate the database with the initial dataset:
curl -X POST http://localhost:4000/actions/migrateSourceCredAccounts?force=true
Rebuild 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:build
Stop backend services
yarn docker:stop
- Stops all the containers
If you want to locally start the backend server (not in Docker) for debugging purposes:
yarn backend:dev
Troubleshooting
Rebuild and run the containers (in attach mode):
docker-compose up --build
In 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 -a
If 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'
}
}
Run NextJS Web App dev mode (new)
yarn web:dev
Go to http://localhost:3000
Happy Coding!
Run Discord Bot
yarn discord-bot dev
Tooling
Start Hasura console
yarn hasura:console
Hasura CLI example
yarn hasura migrate status
yarn hasura migrate squash --name "<feature-name>" --from 1598417879553
yarn hasura migrate apply --version "<squash-migration-version>" --skip-execution
Hasura CLI documentation Hasura Migrations Guide
Generate GraphQL Types
yarn generate
Reload Schema + Generate GraphQL Types (backend needs to be running)
yarn update-schema
yarn generate
Restart with fresh database
yarn docker:clean
yarn docker:start
Run typechecks
yarn typecheck
WIP Branch Push
Upon 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!