Gainstrack is
The following guide is targeted for developers. For user help, please visit Gainstrack Help
To proxy a mysql instance in google cloud as localhost:
cloud-sql-proxy -c ./gainstrack-firebase-adminsdk-some-id.json gainstrack:asia-northeast1:gainstrack-tk
AV_API_KEY - API Key for alphavantage. Free keys can be obtained from their website
MYSQL_PASS - Password to MySQL database
MYSQL_URL - (Optional) custom JDBC connect string. Examples include (check region carefully)
jdbc:mysql:///cloudsql/gainstrack:asia-east2:gainstrack-hkjdbc:mysql://google/quotes?cloudSqlInstance=gainstrack:asia-east2:gainstrack-hk&socketFactory=com.google.cloud.sql.mysql.SocketFactory
GOOGLE_APPLICATION_CREDENTIALS - Path to JSON file containing Google credentials for Firestore. Supplied automatically in Google environments
QUOTES_ADMIN - Enable quotes admin web API
AUTH0_DOMAIN - e.g gainstrack.auth0.com
AUTH0_AUDIENCE - e.g. https://poc.gainstrack.com
AUTH0_CLIENT - e.g. UjVvEmeNTbgIEU6g60h1xvvvBPL4vJqi
The following all need to be running
Open the project in IntelliJ or other IDE and run JettyLauncher. Set environment variables as needed by application.conf or override application.conf
export DEV=true
export GOOGLE_APPLICATION_CREDENTIALS=...
cd client/functions
npm run servecd client
npm run serveOr open client in your IDE and run npm serve from there
Front end client build can be built locally with
cd client
quasar buildFull single build of backend app server image can be built and submitted with
gcloud builds submit --config cloudbuild.yaml
This will also update the latest image in the container registry
A newer build system allows the creation of base images to speed the build of the final image
Base images should be regenerated when dependencies change
gcloud builds submit --config nodebase.cloudbuild.yaml
gcloud builds submit --config scalabase.cloudbuild.yaml
gcloud builds submit --config runtime.cloudbuild.yamlThe incremental gainstrack image can be built (with a faster CPU) as follows
gcloud builds submit --machine-type=N1_HIGHCPU_8 --config fast.cloudbuild.yamlwhich will update the latest image in the container registry
App server
gcloud run deploy appserver \
--region asia-northeast1 \
--image gcr.io/gainstrack/gainstrack \
--platform managed \
--allow-unauthenticated \
--project gainstrack && \
gcloud run services update-traffic appserver --platform managed --region asia-northeast1 --to-latestTODO: After deployment, the FX cache in the server needs priming or the first wave of calls will timeout with a 429 HTTP error
Quotes server
gcloud run deploy quotes \
--region asia-northeast1 \
--image gcr.io/gainstrack/gainstrack \
--platform managed \
--allow-unauthenticated \
--project gainstrackFront-end
cd client
quasar build && firebase deploy --only hosting:pocAnd for production
firebase deploy --only hosting:prodcd client/functions
firebase deploy --only functionsgcloud functions deploy investpy --runtime python38 --trigger-http --allow-unauthenticated --region=asia-northeast1Test with:
https://asia-northeast1-gainstrack.cloudfunctions.net/investpy?ticker=VWRD&marketRegion=LN