Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement designed UI/UX #235

Merged
merged 1 commit into from
Aug 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 7 additions & 5 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ build
typechain-types
.eslintrc.js
commitlint.config.js
subgraph/generated
public/mockServiceWorker.js
zkeys
playwright-report
test-results
next.config.js
subgraph/generated
packages/interface/playwright/fixtures.ts
packages/interface/playwright.config.ts
packages/interface/playwright-report
packages/interface/test-results
packages/interface/next.config.js
packages/interface/public/mockServiceWorker.js
101 changes: 6 additions & 95 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ module.exports = {
extends: [
"airbnb",
"prettier",
"next/core-web-vitals",
"plugin:import/recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
Expand All @@ -20,26 +19,23 @@ module.exports = {
"plugin:@typescript-eslint/stylistic",
"plugin:@typescript-eslint/stylistic-type-checked",
"plugin:import/typescript",
"plugin:react/recommended",
"plugin:playwright/playwright-test",
],
plugins: ["json", "prettier", "unused-imports", "import", "@typescript-eslint", "react-hooks"],
plugins: ["json", "prettier", "unused-imports", "import", "@typescript-eslint"],
parser: "@typescript-eslint/parser",
env: {
browser: true,
node: true,
jest: true,
es2022: true,
},
settings: {
react: {
version: "18",
version: "999.999.999",
},
"import/resolver": {
typescript: {},
node: {
extensions: [".ts", ".js", ".tsx", ".jsx"],
moduleDirectory: ["node_modules", "src", "playwright"],
extensions: [".ts", ".js"],
moduleDirectory: ["node_modules", "ts", "src"],
},
},
},
Expand All @@ -63,15 +59,7 @@ module.exports = {
"import/no-extraneous-dependencies": [
"error",
{
devDependencies: [
"**/*.test.ts",
"./src/test-msw.ts",
"./src/test-setup.ts",
"./src/lib/eas/*.ts",
"./playwright/**/*.ts",
"./playwright.config.ts",
"./vitest.config.ts",
],
devDependencies: ["**/*.test.ts"],
},
],
"no-debugger": isProduction ? "error" : "off",
Expand Down Expand Up @@ -113,86 +101,9 @@ module.exports = {
"error",
{
builtinGlobals: true,
allow: [
"alert",
"location",
"event",
"history",
"name",
"status",
"Option",
"Image",
"Lock",
"test",
"expect",
"describe",
"beforeAll",
"afterAll",
],
allow: ["location", "event", "history", "name", "status", "Option", "test", "expect"],
},
],
"@typescript-eslint/restrict-template-expressions": ["error", { allowNumber: true }],

"react/jsx-filename-extension": [
"error",
{
extensions: [".tsx", ".jsx", ".js"],
},
],
"react/no-unknown-property": ["error", { ignore: ["tw", "global", "jsx"] }],
"react/jsx-sort-props": [
"error",
{
callbacksLast: true,
shorthandFirst: true,
ignoreCase: true,
reservedFirst: true,
},
],
"react/sort-prop-types": [
"error",
{
callbacksLast: true,
},
],
"react/react-in-jsx-scope": "off",
"react/jsx-boolean-value": "error",
"react/jsx-handler-names": "error",
"react/prop-types": "error",
"react/jsx-no-bind": "error",
"react-hooks/rules-of-hooks": "error",
"react/no-array-index-key": "warn",
"jsx-a11y/no-static-element-interactions": "warn",
"jsx-a11y/click-events-have-key-events": "warn",
"jsx-a11y/anchor-is-valid": "warn",
"react/jsx-props-no-spreading": "off",
"react/forbid-prop-types": "off",
"react/state-in-constructor": "off",
"react/jsx-fragments": "off",
"react/static-property-placement": ["off"],
"react/jsx-newline": ["error", { prevent: false }],
"jsx-a11y/label-has-associated-control": "off",
"jsx-a11y/label-has-for": "off",
"react/require-default-props": [
"error",
{
functions: "defaultArguments",
},
],
"react/no-unused-prop-types": "error",
"react/function-component-definition": ["error", { namedComponents: ["arrow-function"] }],

"playwright/prefer-lowercase-title": "error",
"playwright/prefer-to-be": "error",
"playwright/prefer-to-have-length": "error",
"playwright/prefer-strict-equal": "error",
"playwright/max-nested-describe": ["error", { max: 1 }],
"playwright/no-restricted-matchers": [
"error",
{
toBeFalsy: "Use `toBe(false)` instead.",
not: null,
},
],
},
};
16 changes: 16 additions & 0 deletions .github/scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash
set -ex

cp packages/coordinator/.env.example packages/coordinator/.env

sed -i "s|^\(COORDINATOR_RPC_URL=\).*|\1$1|" packages/coordinator/.env
sed -i "s|^\(COORDINATOR_ADDRESSES=\).*|\1$2|" packages/coordinator/.env
sed -i "s|^\(COORDINATOR_ALLOWED_ORIGINS=\).*|\1$3|" packages/coordinator/.env

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 490752553772.dkr.ecr.eu-central-1.amazonaws.com

docker build -t maci-coordinator -f packages/coordinator/apps/Dockerfile .
docker tag maci-coordinator:latest 490752553772.dkr.ecr.eu-central-1.amazonaws.com/maci-coordinator:latest
docker push 490752553772.dkr.ecr.eu-central-1.amazonaws.com/maci-coordinator:latest

exit 0
13 changes: 13 additions & 0 deletions .github/scripts/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
set -ex

tasks="maci-coordinator"
for task in $tasks; do
maci_coordinator_revision=$(aws ecs describe-task-definition --task-definition $task --query "taskDefinition.revision")
aws ecs update-service --cluster maci-coordinator --service $task --force-new-deployment --task-definition $task:$maci_coordinator_revision
done

for loop in {1..3}; do
[ "$loop" -eq 3 ] && exit 1
aws ecs wait services-stable --cluster maci-coordinator --services $tasks && break || continue
done
4 changes: 2 additions & 2 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ jobs:
strategy:
fail-fast: false
matrix:
command: ["prettier", "types", "lint", "test"]
kittybest marked this conversation as resolved.
Show resolved Hide resolved
command: ["prettier", "types", "lint"]

runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 8
version: 9

- name: Use Node.js 20
uses: actions/setup-node@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
- uses: pnpm/action-setup@v4
with:
version: 8
version: 9

- name: Use Node.js 20
uses: actions/setup-node@v4
Expand Down
114 changes: 114 additions & 0 deletions .github/workflows/coordinator-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Coordinator

on:
push:
branches: [main]
pull_request:

env:
COORDINATOR_RPC_URL: "http://localhost:8545"
COORDINATOR_PUBLIC_KEY_PATH: "./pub.key"
COORDINATOR_PRIVATE_KEY_PATH: "./priv.key"
COORDINATOR_TALLY_ZKEY_NAME: "TallyVotes_10-1-2_test"
COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME: "ProcessMessages_10-2-1-2_test"
COORDINATOR_ZKEY_PATH: "./zkeys/"
COORDINATOR_RAPIDSNARK_EXE: "~/rapidsnark/build/prover"
SUBGRAPH_FOLDER: "./node_modules/maci-subgraph"
SUBGRAPH_NAME: ${{ vars.SUBGRAPH_NAME }}
SUBGRAPH_PROVIDER_URL: ${{ vars.SUBGRAPH_PROVIDER_URL }}
SUBGRAPH_DEPLOY_KEY: ${{ secrets.SUBGRAPH_DEPLOY_KEY }}
# interface related variables as they are needed for building the monorepo
NEXT_PUBLIC_CHAIN_NAME: ${{ vars.NEXT_PUBLIC_CHAIN_NAME }}
NEXT_PUBLIC_ADMIN_ADDRESS: ${{ vars.NEXT_PUBLIC_ADMIN_ADDRESS }}
NEXT_PUBLIC_APPROVAL_SCHEMA: ${{ vars.NEXT_PUBLIC_APPROVAL_SCHEMA }}
NEXT_PUBLIC_METADATA_SCHEMA: ${{ vars.NEXT_PUBLIC_METADATA_SCHEMA }}
NEXT_PUBLIC_ROUND_ID: ${{ vars.NEXT_PUBLIC_ROUND_ID }}
NEXT_PUBLIC_SKIP_APPROVED_VOTER_CHECK: false
NEXT_PUBLIC_MACI_ADDRESS: ${{ vars.NEXT_PUBLIC_MACI_ADDRESS }}
NEXT_PUBLIC_TALLY_URL: ${{ vars.NEXT_PUBLIC_TALLY_URL }}
NEXT_PUBLIC_WALLETCONNECT_ID: ${{ secrets.NEXT_PUBLIC_WALLETCONNECT_ID }}
NEXT_PUBLIC_FEEDBACK_URL: ${{ vars.NEXT_PUBLIC_FEEDBACK_URL }}
NEXT_PUBLIC_MACI_START_BLOCK: ${{ vars.NEXT_PUBLIC_MACI_START_BLOCK }}
NEXT_PUBLIC_MACI_SUBGRAPH_URL: ${{ vars.NEXT_PUBLIC_MACI_SUBGRAPH_URL }}
NEXT_PUBLIC_TOKEN_NAME: ${{ vars.NEXT_PUBLIC_TOKEN_NAME }}
NEXT_PUBLIC_MAX_VOTES_TOTAL: ${{ vars.NEXT_PUBLIC_MAX_VOTES_TOTAL }}
NEXT_PUBLIC_MAX_VOTES_PROJECT: ${{ vars.NEXT_PUBLIC_MAX_VOTES_PROJECT }}
BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }}
NEXT_PUBLIC_ALCHEMY_ID: ${{ secrets.NEXT_PUBLIC_ALCHEMY_ID }}
NEXT_PUBLIC_START_DATE: ${{ vars.NEXT_PUBLIC_START_DATE }}
NEXT_PUBLIC_REGISTRATION_END_DATE: ${{ vars.NEXT_PUBLIC_REGISTRATION_END_DATE }}
NEXT_PUBLIC_REVIEW_END_DATE: ${{ vars.NEXT_PUBLIC_REVIEW_END_DATE }}
NEXT_PUBLIC_VOTING_END_DATE: ${{ vars.NEXT_PUBLIC_VOTING_END_DATE }}
NEXT_PUBLIC_RESULTS_DATE: ${{ vars.NEXT_PUBLIC_RESULTS_DATE }}
NEXT_PUBLIC_POLL_MODE: ${{ vars.NEXT_PUBLIC_POLL_MODE }}
TEST_MNEMONIC: ${{ secrets.TEST_MNEMONIC }}
WALLET_PRIVATE_KEY: ""

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9

- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
cache: "pnpm"

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install --yes \
build-essential \
libgmp-dev \
libsodium-dev \
nasm \
nlohmann-json3-dev

- name: Install
run: |
pnpm install --frozen-lockfile --prefer-offline

- name: Build
run: |
pnpm run build

- name: Run hardhat
run: |
pnpm run hardhat &
sleep 5
working-directory: packages/coordinator

- name: Download rapidsnark (1c137)
run: |
mkdir -p ~/rapidsnark/build
wget -qO ~/rapidsnark/build/prover https://maci-devops-zkeys.s3.ap-northeast-2.amazonaws.com/rapidsnark-linux-amd64-1c137
chmod +x ~/rapidsnark/build/prover

- name: Download circom Binary v2.1.6
run: |
wget -qO ${{ github.workspace }}/circom https://github.com/iden3/circom/releases/download/v2.1.6/circom-linux-amd64
chmod +x ${{ github.workspace }}/circom
sudo mv ${{ github.workspace }}/circom /bin/circom

- name: Download zkeys
run: |
pnpm download-zkeys:test

- name: Generate keypair
run: |
pnpm generate-keypair
working-directory: packages/coordinator

- name: Test
run: pnpm run test
working-directory: packages/coordinator
37 changes: 37 additions & 0 deletions .github/workflows/coordinator-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CoordinatorDeploy
on:
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
deploy:
runs-on: ubuntu-22.04
permissions:
id-token: write
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::490752553772:role/maci-coordinator-ecs-deploy-slc
role-duration-seconds: 2700
aws-region: eu-central-1

- name: Build and Push images to ECR
run: |
.github/scripts/build.sh ${{ secrets.COORDINATOR_RPC_URL }} ${{ secrets.COORDINATOR_ADDRESSES }} ${{ secrets.COORDINATOR_ALLOWED_ORIGINS }}

- name: Create Deployment
run: |
.github/scripts/deploy.sh
Loading
Loading