From 5dfabfdacb79f2476ecb81190a84e760d2f0c12f Mon Sep 17 00:00:00 2001 From: Terraform Date: Tue, 3 Feb 2026 20:51:23 +0000 Subject: [PATCH 1/4] Add production release CICD --- .github/workflows/aws_prod_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/aws_prod_release.yml b/.github/workflows/aws_prod_release.yml index 8c9f0c7..3ca8116 100644 --- a/.github/workflows/aws_prod_release.yml +++ b/.github/workflows/aws_prod_release.yml @@ -50,7 +50,7 @@ jobs: cache: 'npm' - run: git config --global user.email devops@topia.io - run: git config --global user.name Devops - - run: npm version --no-git-tag-version ${{ github.event.release.tag_name }} + - run: npm version ${{ github.event.release.tag_name }} - run: npm i - run: CI=false npm run build From eb98e38c753953147c7816a4365cc87fbf63804e Mon Sep 17 00:00:00 2001 From: Lina Date: Mon, 9 Feb 2026 13:46:35 -0800 Subject: [PATCH 2/4] update README.md --- README.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e1fe02..1e1fddd 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,20 @@ Connect 4 is a completely on-canvas game where two players take turns dropping pieces in an attempt to connect 4 in a row. +## Built With + +### Client + +![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) +![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge&logo=vite&logoColor=white) +![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white) +![Tailwind CSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white) + +### Server + +![Node.js](https://img.shields.io/badge/node.js-%2343853D.svg?style=for-the-badge&logo=node.js&logoColor=white) +![Express](https://img.shields.io/badge/express-%23000000.svg?style=for-the-badge&logo=express&logoColor=white) + ## Key Features ### Canvas elements & interactions @@ -21,7 +35,25 @@ Connect 4 is a completely on-canvas game where two players take turns dropping p - Key Asset: the data object attached to the Reset Button key asset can stores all of the game play information including current players, player turn status, and game status. - World: the data object attached to the world will store the key asset id of each dropped scene indexed by `dropSceneId`. This allows world builders the option of dropping just the key asset and clicking Reset for the first time to build the board OR dropping the entire board as a prebuilt scene removing the need to click Reset to build the board for the first time. -## Developers: +## Implementation Requirements + +### Required Assets with Unique Names + +The app dynamically generates assets with the following unique names: + +| Unique Name | Description | +|-------------|-------------| +| `board` | The board background image | +| `gameText` | Game status message | +| `player1Text` | Player 1 name display | +| `player2Text` | Player 2 name display | +| `player1` | Player 1 selection button | +| `player2` | Player 2 selection button | +| `selector` | Column drop arrows (7 total, all share this name) | +| `claimedSpace` | Game pieces placed on board | +| `crown` | Victory crown for winner | + +## Developers ### Getting Started From c2c827beb99589261ed8c7a5ae2bd0993ab9baf5 Mon Sep 17 00:00:00 2001 From: Lina Date: Mon, 9 Feb 2026 14:02:49 -0800 Subject: [PATCH 3/4] update README.md --- README.md | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 1e1fddd..77d12d3 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,6 @@ Connect 4 is a completely on-canvas game where two players take turns dropping p ## Built With -### Client - -![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) -![Vite](https://img.shields.io/badge/vite-%23646CFF.svg?style=for-the-badge&logo=vite&logoColor=white) -![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&logo=typescript&logoColor=white) -![Tailwind CSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white) - ### Server ![Node.js](https://img.shields.io/badge/node.js-%2343853D.svg?style=for-the-badge&logo=node.js&logoColor=white) @@ -41,17 +34,17 @@ Connect 4 is a completely on-canvas game where two players take turns dropping p The app dynamically generates assets with the following unique names: -| Unique Name | Description | -|-------------|-------------| -| `board` | The board background image | -| `gameText` | Game status message | -| `player1Text` | Player 1 name display | -| `player2Text` | Player 2 name display | -| `player1` | Player 1 selection button | -| `player2` | Player 2 selection button | -| `selector` | Column drop arrows (7 total, all share this name) | -| `claimedSpace` | Game pieces placed on board | -| `crown` | Victory crown for winner | +| Unique Name | Description | +| -------------- | ------------------------------------------------- | +| `board` | The board background image | +| `gameText` | Game status message | +| `player1Text` | Player 1 name display | +| `player2Text` | Player 2 name display | +| `player1` | Player 1 selection button | +| `player2` | Player 2 selection button | +| `selector` | Column drop arrows (7 total, all share this name) | +| `claimedSpace` | Game pieces placed on board | +| `crown` | Victory crown for winner | ## Developers From c9e51b99264f762d4ce215baef7c89af5be410ca Mon Sep 17 00:00:00 2001 From: Lina Date: Tue, 10 Feb 2026 19:02:44 -0800 Subject: [PATCH 4/4] Update .env-example and README --- .env-example | 18 +++++++++--------- README.md | 29 +++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/.env-example b/.env-example index cd8d0fe..953f521 100644 --- a/.env-example +++ b/.env-example @@ -1,12 +1,12 @@ NODE_ENV="development" PORT=3001 - -APP_URL=https://connect4.app/api/ -S3_BUCKET=https://mybucket.s3.amazonaws.com/ +APP_URL=https://your-app.ngrok-free.app/api/ +S3_BUCKET=https://sdk-connect4.s3.amazonaws.com/ +TEXT_ASSET_ID=textAsset +WEB_IMAGE_ASSET_ID=webImageAsset INSTANCE_DOMAIN=api.topia.io -INTERACTIVE_KEY==\***\*\*\*\*\*** -INTERACTIVE_SECRET=\***\*\*\*\*\*** - -GOOGLESHEETS_CLIENT_EMAILxxxxxxx -GOOGLESHEETS_SHEET_IDxxxxxxx -GOOGLESHEETS_PRIVATE_KEY=xxxxxxx +INTERACTIVE_KEY=your_interactive_key +INTERACTIVE_SECRET=your_interactive_secret +GOOGLESHEETS_CLIENT_EMAIL=your_google_service_account_email +GOOGLESHEETS_SHEET_ID=your_google_sheet_id +GOOGLESHEETS_PRIVATE_KEY=your_google_private_key diff --git a/README.md b/README.md index 77d12d3..24fd255 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,26 @@ The app dynamically generates assets with the following unique names: | `claimedSpace` | Game pieces placed on board | | `crown` | Victory crown for winner | +## Environment Variables + +Create a `.env` file in the root directory. See `.env-example` for a template. + +| Variable | Description | Required | +| --------------------------- | ---------------------------------------------------------------------------------- | -------- | +| `NODE_ENV` | Node environment | No | +| `PORT` | Server port | No | +| `APP_URL` | Public URL for the app API, used for webhook callbacks | Yes | +| `APP_VERSION` | App version identifier | Yes | +| `S3_BUCKET` | S3 bucket URL for game assets | Yes | +| `TEXT_ASSET_ID` | Asset ID template for text assets in Topia | Yes | +| `WEB_IMAGE_ASSET_ID` | Asset ID template for web image assets in Topia | Yes | +| `INSTANCE_DOMAIN` | Topia API domain (`api.topia.io` for production, `api-stage.topia.io` for staging) | Yes | +| `INTERACTIVE_KEY` | Topia interactive app key | Yes | +| `INTERACTIVE_SECRET` | Topia interactive app secret | Yes | +| `GOOGLESHEETS_CLIENT_EMAIL` | Google service account email for analytics | No | +| `GOOGLESHEETS_SHEET_ID` | Google Sheet ID for analytics | No | +| `GOOGLESHEETS_PRIVATE_KEY` | Google service account private key | No | + ## Developers ### Getting Started @@ -55,14 +75,7 @@ The app dynamically generates assets with the following unique names: ### Add your .env environmental variables -```json -APP_URL -INSTANCE_DOMAIN=api.topia.io -INSTANCE_PROTOCOL=https -INTERACTIVE_KEY=xxxxxxxxxxxxx -INTERACTIVE_SECRET=xxxxxxxxxxxxxx -S3_BUCKET=https://mybucket.s3.amazonaws.com/ -``` +See [Environment Variables](#environment-variables) above. ### Where to find INTERACTIVE_KEY and INTERACTIVE_SECRET