From 63a5b0c2d057f9af2f7d23c8ccaa6d5462271fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sza=C5=82owski?= Date: Wed, 31 Jul 2024 15:26:20 +0200 Subject: [PATCH 1/4] feat(#1644): add missing network metrics model to frontend service --- CHANGELOG.md | 1 + govtool/frontend/src/models/api.ts | 14 ++++++++++++++ .../src/services/requests/getNetworkMetrics.ts | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b414a208f..7b2fca089 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ changes. ### Added - Add network name to GET /network/metrics [Issue 1644](https://github.com/IntersectMBO/govtool/issues/1644) +- Add network metrics model to frontend service ### Fixed diff --git a/govtool/frontend/src/models/api.ts b/govtool/frontend/src/models/api.ts index ed33d9199..d073459ac 100644 --- a/govtool/frontend/src/models/api.ts +++ b/govtool/frontend/src/models/api.ts @@ -1,5 +1,19 @@ import { MetadataValidationStatus } from "@models"; +export type NetworkMetrics = { + currentTime: string; + currentEpoch: number; + currentBlock: number; + uniqueDelegators: number; + totalDelegations: number; + totalGovernanceActions: number; + totalDRepVotes: number; + totalRegisteredDReps: number; + alwaysAbstainVotingPower: number; + alwaysNoConfidenceVotingPower: number; + networkName: string; +}; + export interface VoterInfo { isRegisteredAsDRep: boolean; wasRegisteredAsDRep: boolean; diff --git a/govtool/frontend/src/services/requests/getNetworkMetrics.ts b/govtool/frontend/src/services/requests/getNetworkMetrics.ts index 59fd0c674..33c30a108 100644 --- a/govtool/frontend/src/services/requests/getNetworkMetrics.ts +++ b/govtool/frontend/src/services/requests/getNetworkMetrics.ts @@ -1,7 +1,8 @@ +import { NetworkMetrics } from "@models"; import { API } from "../API"; export const getNetworkMetrics = async () => { - const response = await API.get("/network/metrics"); + const response = await API.get("/network/metrics"); return response.data; }; From 2f3d2f07bf3dc2c1af6c028c8ab44ec0c8f15596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sza=C5=82owski?= Date: Wed, 31 Jul 2024 14:54:12 +0200 Subject: [PATCH 2/4] chore: remove occurencies of sanchonet from contributing guide --- CONTRIBUTING.md | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b348e3850..ccc9e9126 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,6 +3,7 @@ ⚠️ This is a work in progress document, more instruction on how-to contribute to come! Contributing todo: + - [ ] Align with latest OSC policies - [ ] Refactor to reflect reality - [ ] Make more friendly to open source contributors @@ -21,9 +22,9 @@ This document contains guidelines to help you get started and how to make sure y - [Ask for Help](#ask-for-help) - [Roles and Responsibilities](#roles-and-responsibilities) - [I Want To Contribute](#i-want-to-contribute) - - [Before Submitting a Bug Report](#before-submitting-a-bug-report) - - [How Do I Submit a Good Bug Report?](#how-do-i-submit-a-good-bug-report) - - [Your First Code Contribution](#your-first-code-contribution) + - [Before Submitting a Bug Report](#before-submitting-a-bug-report) + - [How Do I Submit a Good Bug Report?](#how-do-i-submit-a-good-bug-report) + - [Your First Code Contribution](#your-first-code-contribution) - [Working Conventions](#working-conventions) - [Pull Requests](#pull-requests) - [Branch Naming](#branch-naming) @@ -38,8 +39,6 @@ This document contains guidelines to help you get started and how to make sure y - [CSS in Javascript](#css-in-javascript) - [CSS / SASS](#css--sass) - [Haskell](#haskell) - - [Bumping Node, DB-Sync, SanchoNet Versions](#bumping-node-db-sync-sanchonet-versions) - - [Steps to upgrade](#steps-to-upgrade) - [Development Processes](#development-processes) - [Developer workflow](#developer-workflow) - [QA Workflow](#qa-workflow) @@ -90,7 +89,7 @@ We use GitHub issues to track bugs and errors. If you run into an issue with the (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) - Explain the behavior you would expect and the actual behavior. - Please provide as much context as possible. - Describe the *reproduction steps* that someone else can follow to recreate the issue on their own. + Describe the _reproduction steps_ that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. - Provide the information you collected in the previous section. @@ -117,6 +116,7 @@ TODO Thank you for contributing your changes by opening a pull requests! To get something merged we usually require: + - Follow the Pull Request template - Description of the changes - if your commit messages are great, this is less important - Quality of changes is ensured - through new or updated automated tests @@ -133,6 +133,7 @@ Please reuse the branch naming for the pull request naming. - Using the related issue number after the prefix is required. Examples: + - `feat/123-added-ability-for-dreps-to-change-drep-id` - `fix/312-fixed-drep-ids-being-reversed` - `chore/567-bumped-cardano-node-version-to-9` @@ -151,6 +152,7 @@ Also, include any relevant meta-information, such as issue numbers. If a commit completely addresses a issue, you can put that in the headline if you want, but it’s fine to just put it in the body. Here are seven rules for great git commit messages: + 1. Separate subject from body with a blank line 2. Limit the subject line to 50 characters (soft limit) 3. Capitalize the subject line @@ -190,6 +192,7 @@ Releases that aren't stable will be released as pre-releases and will append a - ### Changelog During development, on every PR; + - Make sure `CHANGELOG.md` is kept up-to-date with high-level, technical, but user-focused list of changes according to [keepachangelog](https://keepachangelog.com/en/1.0.0/). - Bump `UNRELEASED` version in `CHANGELOG.md` according to [semver](https://semver.org/). @@ -211,25 +214,6 @@ Please see [CSS / SASS Style Guide](./docs/style-guides/css-sass/). Please see [stylish-haskell configuration](./govtool/backend/.stylish-haskell.yaml). -## Bumping Node, DB-Sync, SanchoNet Versions - -- SanchoNet periodically has to be respun, where all data is erased. -- This is normally to allow for the nodes to be upgraded to a new version, where the old chain may not be compatible with newer node implementation. -- So to go along with each respin GovTool's Node needs to upgraded to a newer version and it's local database must be dropped. -- New versions of DB-Sync are usually released alongside new Node versions, to ensure compatibility. -- Some new versions of DB-Sync will include revisions to the DB schema, if this is the case then we also need to upgrade the BE interface to work. - -### Steps to upgrade - -1. Coordinate and align with DB-Sync/Node teams to anticipate SanchoNet respins and version releases. Once network has been respun upgrade. -- Often a new node version is released a few days ahead of a Sanchonet respin, DB-Sync is normally a couple of days post node release. -2. Change the versions in the [docker-compose file](./src/docker-compose.sanchonet.yml), here the DB-Sync and Node docker versions can be incremented. Merge this change, following standard working conventions. -- IF the DB-Sync schema changed, then BE changes will have to be merged also. -3. Then the upgrade can be deployed using normal workflows, ensure to tick `resync_cardano_node_and_db` option of the workflow. This will wipe the existing Node and Db-Sync's data, to let the upgraded versions fully resync. -4. Wait for resync, depending on the size SanchoNet resycing will likely take over an hour. -5. Check successful resync, using the BE you are able to check transaction status. You can use the SanchoNet faucet to send transactions, then check faucet Tx id via GovTool BE. If GovTool sees the Tx then GovTool BE is on the same network as the faucet which is ideal. - - ## Development Processes ### Developer workflow From 35c14d71e313bf1b19c32b7973b55c4d0757f16f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sza=C5=82owski?= Date: Tue, 6 Aug 2024 12:53:44 +0200 Subject: [PATCH 3/4] feat: replace hardcoded sanchonet with the network from network metrics --- CHANGELOG.md | 4 +- README.md | 9 +- docs/operations/README.md | 45 +- govtool/frontend/.storybook/preview.tsx | 52 +- govtool/frontend/index.html | 2 +- govtool/frontend/maintenance-page/index.html | 10 +- .../molecules/AutomatedVotingCard.tsx | 5 +- .../molecules/DashboardActionCard.tsx | 4 +- .../molecules/GovernanceActionCardMyVote.tsx | 6 +- .../WhatRetirementMeans.tsx | 5 +- .../organisms/RegisterAsDirectVoterBox.tsx | 5 +- govtool/frontend/src/consts/images.ts | 2 +- govtool/frontend/src/consts/index.ts | 12 + govtool/frontend/src/context/appContext.tsx | 68 + .../frontend/src/context/contextProviders.tsx | 25 +- govtool/frontend/src/context/index.ts | 1 + govtool/frontend/src/context/wallet.tsx | 31 +- .../forms/useCreateGovernanceActionForm.ts | 5 +- .../src/hooks/forms/useEditDRepInfoForm.ts | 5 +- .../src/hooks/forms/useRegisterAsdRepForm.tsx | 5 +- .../src/hooks/queries/useGetNetworkMetrics.ts | 4 - govtool/frontend/src/i18n/locales/en.ts | 10 +- .../src/pages/RegisterAsDirectVoter.tsx | 5 +- .../src/pages/RetireAsDirectVoter.tsx | 5 +- govtool/frontend/src/utils/localStorage.ts | 2 +- govtool/frontend/yarn.lock | 10111 +++++++++++----- govtool/metadata-validation/src/main.ts | 1 + 27 files changed, 7595 insertions(+), 2844 deletions(-) create mode 100644 govtool/frontend/src/context/appContext.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b2fca089..a3d75643e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,8 @@ changes. ### Added -- +- Unsancho GovTool [Issue 1637](https://github.com/IntersectMBO/govtool/issues/1637) +- Add network metrics model to frontend service ### Fixed @@ -27,7 +28,6 @@ changes. ### Added - Add network name to GET /network/metrics [Issue 1644](https://github.com/IntersectMBO/govtool/issues/1644) -- Add network metrics model to frontend service ### Fixed diff --git a/README.md b/README.md index 71c40ecb1..ee04c954d 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,14 @@

- Monorepo containing SanchoNet GovTool and supporting utilities + Monorepo containing Voltaire GovTool and supporting utilities

[![npm](https://img.shields.io/npm/v/npm.svg?style=flat-square)](https://www.npmjs.com/package/npm) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) - -[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=ncloc)](https://sonarcloud.io/summary/overall?id=intersect-govtool) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=coverage)](https://sonarcloud.io/summary/overall?id=intersect-govtool) [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=sqale_index)](https://sonarcloud.io/summary/overall?id=intersect-govtool) +[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=ncloc)](https://sonarcloud.io/summary/overall?id=intersect-govtool) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=coverage)](https://sonarcloud.io/summary/overall?id=intersect-govtool) [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=intersect-govtool&metric=sqale_index)](https://sonarcloud.io/summary/overall?id=intersect-govtool)
@@ -19,8 +18,8 @@ ## 🌄 Purpose -The SanchoNet GovTool enables ada holders to experience some of the governance features described in [CIP-1694](https://github.com/cardano-foundation/CIPs/blob/master/CIP-1694/README.md) and to test governance features on [SanchoNet](https://sancho.network/) through a guided and straightforward experience. -The SanchoNet GovTool is currently open for beta testing and can be accessed at [sanchogov.tools](https://sanchogov.tools/). +The Voltaire GovTool enables ada holders to experience some of the governance features described in [CIP-1694](https://github.com/cardano-foundation/CIPs/blob/master/CIP-1694/README.md) and to test governance features. +The Voltaire GovTool is currently open for preview testing and can be accessed at [preview.gov.tools](https://preview.gov.tools/). Learn more; [docs.sanchogov.tools](https://docs.sanchogov.tools/). diff --git a/docs/operations/README.md b/docs/operations/README.md index 4b6ab139f..f14769304 100644 --- a/docs/operations/README.md +++ b/docs/operations/README.md @@ -1,12 +1,13 @@ # Overview The application is setup with the following tools: -* Terraform - for creating infrastructure in AWS for each environment -* Docker - to build and run application components -* Docker Compose - to connect the application components together and deploy them as a stack -* make - to simplify operations tasks -* Prometheus - to gather metrics from application host and Docker containers -* Grafana - to visualize metrics gathered from Prometheus and handle alerting + +- Terraform - for creating infrastructure in AWS for each environment +- Docker - to build and run application components +- Docker Compose - to connect the application components together and deploy them as a stack +- make - to simplify operations tasks +- Prometheus - to gather metrics from application host and Docker containers +- Grafana - to visualize metrics gathered from Prometheus and handle alerting # Environments @@ -14,11 +15,11 @@ The application is hosted on AWS, there are several application environments, ea Each environment consists of: -* VPC network (with subnets, route tables, IGW) -* Security Groups -* EC2 instance -* Elastic IPs associated with EC2 instance -* Route 53 record (only for environments using `govtool.byron.network` domain) +- VPC network (with subnets, route tables, IGW) +- Security Groups +- EC2 instance +- Elastic IPs associated with EC2 instance +- Route 53 record (only for environments using `govtool.byron.network` domain) For each environment, the frontend is hosted at root and the backend is at `/api`. @@ -26,25 +27,27 @@ For each environment, the frontend is hosted at root and the backend is at `/api ### beta -A beta environment connected to `sanchonet` Cardano network. +A beta environment connected to `preview` Cardano network. -Available at https://sanchogov.tools/. The DNS record for this domain is created manually. +Available at https://preview.gov.tools/. The DNS record for this domain is created manually. # Deployment Deployment is performed via GitHub Actions workflow (`.github/workflows/build-and-deploy.yml`). The workflow performs the following steps: -* check if the environment is defined in Terraform (to avoid deployment attempt to inexistant environment) -* build of frontend app -* build of backend app -* generate configuration files and upload them (over SSH) to the target environment -* setup the application compoments with Docker Compose on the target environment + +- check if the environment is defined in Terraform (to avoid deployment attempt to inexistant environment) +- build of frontend app +- build of backend app +- generate configuration files and upload them (over SSH) to the target environment +- setup the application compoments with Docker Compose on the target environment The workflow can be triggered directly from GitHub Actions panel. When ruuning the workflow, you need to specify: -* Cardano network to be used -* environment name -* optionally skip the build process (frontend and backend) - useful when there are plain configuration changes that do not require the application to be rebuild + +- Cardano network to be used +- environment name +- optionally skip the build process (frontend and backend) - useful when there are plain configuration changes that do not require the application to be rebuild # Monitoring diff --git a/govtool/frontend/.storybook/preview.tsx b/govtool/frontend/.storybook/preview.tsx index 87b01a7d2..9ee56bf7b 100644 --- a/govtool/frontend/.storybook/preview.tsx +++ b/govtool/frontend/.storybook/preview.tsx @@ -4,6 +4,8 @@ import React from "react"; import { I18nextProvider } from "react-i18next"; import { QueryClient, QueryClientProvider } from "react-query"; import { MemoryRouter, Route, Routes } from "react-router-dom"; + +import { AppContextProvider } from "../src/context/appContext"; import { ModalProvider } from "../src/context/modal"; import i18n from "../src/i18n"; import { theme } from "../src/theme"; @@ -23,30 +25,32 @@ const preview: Preview = { decorators: [ (Story) => ( - - - - - - - - - } - /> - - - - - + + + + + + + + + + } + /> + + + + + + ), ], diff --git a/govtool/frontend/index.html b/govtool/frontend/index.html index 9fa7c8404..e3ff67282 100644 --- a/govtool/frontend/index.html +++ b/govtool/frontend/index.html @@ -10,7 +10,7 @@ rel="stylesheet" /> - SanchoNet Govtool + Voltaire Govtool