This is a simple gRPC service that implements the Domain Layer: Challenge interface. Domain Challenge is responsible for syncronously keeping Informix and v5 Data Stores (Challenge DynamoDB Tables) in sync.
All CRUD operations performed in the Challenge API requires a gRPC call to domain challenge. The following is an outline of the events the follow
- domain challenge uses dynamo-access-layer to update the relevant dynamodb tables
- domain challenge maps the incoming input to necessary legacy object format required to keep the challenge(project) in legacy in sync
- domain challenge uses anticorruption-layer to update Informix
All CRUD operations performed in the legacy system that need to kept in sync in V5 make a syncronous call to anticorruption-layer which results in a syncronous call to domain-challenge. domain challenge then updates relevant v5 data stores.
This ensures both data stores are kept in sync regardless of where the operation happens. In addition domain challenge is responsible for the following operations
- locking & unlocking budget
- generating payment records using [topcoder wallet api] (http://github.com/topcoder-platform/wallet)
- NodeJS 18+
- Yarn 1.22+
- Typescript 5+
- dynamo-access-layer
- anticorruption-layer
The following environment variables are required. Placing a .env file in the root of the project will automatically load these variables.
ENV=local
GRPC_SERVER_HOST="localhost"
GRPC_SERVER_PORT=8888
GRPC_NOSQL_SERVER_HOST="localhost"
GRPC_NOSQL_SERVER_PORT=50052
GRPC_ACL_SERVER_HOST=localhost
GRPC_ACL_SERVER_PORT=40020
REGISTRATION_PHASE_ID=
SUBMISSION_PHASE_ID=
CHECKPOINT_SUBMISSION_PHASE_ID=
AUTH_SECRET=
AUTH0_AUDIENCE=
AUTH0_CLIENT_ID=
AUTH0_CLIENT_SECRET=
AUTH0_PROXY_SERVER_URL=
AUTH0_URL=
V4_CHALLENGE_API_URL=https://api.topcoder-dev.com/v4/challenges
V4_TECHNOLOGIES_API_URL=https://api.topcoder-dev.com/v4/technologies
V4_PLATFORMS_API_URL=https://api.topcoder-dev.com/v4/platforms
V3_BA_API_URL=https://api.topcoder-dev.com/v3/billing-accounts
TOPCODER_API_URL=https://api.topcoder-dev.com/v5
ES_HOST=https://admin:admin@localhost:9200/
ES_INDEX=challenge
ES_REFRESH=true
KAFKA_ERROR_TOPIC="local.error.topic"
AWS_REGION=us-east-1
- Install dependencies.
domain-challenge
uses topcoder-framework which is published in AWS CodeArtifact. To ensure all dependencies are correctly downloaded log into aws codeartifact first
aws codeartifact login --tool npm --repository topcoder-framework --domain topcoder --domain-owner 409275337247 --region us-east-1 --namespace @topcoder-framework
yarn i
Note: A valid AWS session is required for the above command to work. Ensure that you have the correct aws environment variables set
- Start the gRPC server
yarn start
The primary branch of this repo is the main
branch. Opening a pull request to the main branch will kick off building a docker image. Check CircleCI, specifically the Publish docker iamge to get the image tag. Use the tag for deploying to dev environment - see the branch deploy/dev, buildimage.sh.
After the PR is merged, follow the same steps. For production deploys use deploy/prod
branch