{"id":20001966,"url":"https://github.com/pooltogether/v4-admin-dashboard","last_synced_at":"2026-03-02T12:05:25.223Z","repository":{"id":45596333,"uuid":"423856178","full_name":"pooltogether/v4-admin-dashboard","owner":"pooltogether","description":"The PoolTogether V4 Admin Dashboard simplifies reading and writing to the V4 protocol smart contracts.","archived":false,"fork":false,"pushed_at":"2021-12-13T12:26:53.000Z","size":1787,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-04T15:40:18.091Z","etag":null,"topics":["defi","ethereum","pooltogether","web3"],"latest_commit_sha":null,"homepage":"https://admin.pooltogether.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pooltogether.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":["https://app.uniswap.org/#/swap?outputCurrency=0x0cec1a9154ff802e7934fc916ed7ca50bde6844e"]}},"created_at":"2021-11-02T13:32:34.000Z","updated_at":"2024-04-01T08:31:10.000Z","dependencies_parsed_at":"2022-08-12T11:52:27.548Z","dependency_job_id":null,"html_url":"https://github.com/pooltogether/v4-admin-dashboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pooltogether/v4-admin-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooltogether%2Fv4-admin-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooltogether%2Fv4-admin-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooltogether%2Fv4-admin-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooltogether%2Fv4-admin-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pooltogether","download_url":"https://codeload.github.com/pooltogether/v4-admin-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pooltogether%2Fv4-admin-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30001652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T11:09:27.951Z","status":"ssl_error","status_checked_at":"2026-03-02T11:08:53.255Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["defi","ethereum","pooltogether","web3"],"created_at":"2024-11-13T05:19:17.512Z","updated_at":"2026-03-02T12:05:25.207Z","avatar_url":"https://github.com/pooltogether.png","language":"TypeScript","funding_links":["https://app.uniswap.org/#/swap?outputCurrency=0x0cec1a9154ff802e7934fc916ed7ca50bde6844e"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/pooltogether/pooltogether--brand-assets\"\u003e\n    \u003cimg src=\"https://github.com/pooltogether/pooltogether--brand-assets/blob/977e03604c49c63314450b5d432fe57d34747c66/logo/pooltogether-logo--purple-gradient.png?raw=true\" alt=\"PoolTogether Brand\" style=\"max-width:100%;\" width=\"200\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n# PoolTogether V4 Admin Dashboard\n\n![CI](https://github.com/pooltogether/v4-admin-dashboard/actions/workflows/main.yml/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/github/pooltogether/v4-admin-dashboard/badge.svg?branch=master)](https://coveralls.io/github/pooltogether/v4-admin-dashboard?branch=master)\n[![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](http://perso.crans.org/besson/LICENSE.html)\n\n\nThe PoolTogether V4 Admin Dashboard simplifies reading and writing to the V4 protocol smart contracts. \n\n[admin.pooltogether.com](https://admin.pooltogether.com/)\n\n# Getting Started\n\n## Development\n```.sh\nyarn dev\n```\n\n## Production\n\n```.sh\nyarn build\n```\n\nWhen the `production` is updated a new build will be deployed on Netlify.\n\n# Overview\n### Core Web3 Components\nThe application is built with modularity in mind. Components can express what `data` is required and the fetching/normalizing for the frontend will be handled automatically.\n\n - [ContractIsolatedMulticall](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Contracts/ContractIsolatedMulticall.tsx)\n - [ContractMulticallAndRender](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Contracts/ContractMulticallAndRender.tsx)\n - [ContractReadValuesGenericRender](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Contracts/ContractReadValuesGenericRender.tsx)\n - [GenericReadFunction](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Contracts/GenericReadFunction.tsx)\n - [Web3TypeRender](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Web3TypeRender.tsx)\n - [Web3SafeTypeRender](https://github.com/pooltogether/v4-admin-dashboard/blob/master/src/components/Web3/Web3SafeTypeRender.tsx)\n\n ### Example View\n\n The `ContractDrawBeacon` view defines with `reads` should be executed and the values are passed to dynamic render component.\n\n Ideally, the generic render components utilize the Tailwind CSS classes for modularity and minimally perriptive in design.\n\n ```js\n import React from 'react';\n\nimport { AppPageHeader } from '@src/components/App/AppPageHeader';\nimport { ContractMulticallAndRender } from '@src/components/Web3/Contracts/ContractMulticallAndRender';\nimport { ContractReadValuesGenericRender } from '@src/components/Web3/Contracts/ContractReadValuesGenericRender';\nimport { InterfaceDrawBeacon } from '@src/contracts/interfaces';\nimport { Admin } from '@src/templates/Admin';\n\nconst ContractDrawBeacon = () =\u003e {\n  const methods = [\n    'owner',\n    'getDrawBuffer',\n    'getRngService',\n    'canStartDraw',\n    'canCompleteDraw',\n    'calculateNextBeaconPeriodStartTimeFromCurrentTime',\n    'calculateNextBeaconPeriodStartTime',\n    'beaconPeriodRemainingSeconds',\n    'beaconPeriodEndAt',\n    'getNextDrawId',\n    'getBeaconPeriodSeconds',\n    'getLastRngLockBlock',\n    'getLastRngRequestId',\n    'getRngTimeout',\n    'isBeaconPeriodOver',\n    'isRngCompleted',\n    'isRngRequested',\n    'isRngTimedOut',\n  ];\n  const inputs = [];\n\n  return (\n    \u003cdiv className=\"card\"\u003e\n      \u003cAppPageHeader\n        className=\"mt-0\"\n        title=\"DrawBeacon\"\n        description=\"Create and Propagates Draws\"\n      /\u003e\n      \u003cContractMulticallAndRender\n        contractInterface={InterfaceDrawBeacon}\n        contractName=\"DrawBeacon\"\n        methods={methods}\n        args={inputs}\n        component={(props) =\u003e (\n          \u003c\u003e\n            \u003cContractReadValuesGenericRender\n              className=\"text-base block px-8 pb-8 pt-5 shadow-md border-t-2 rounded-xl mt-5 \"\n              classNameRender=\"flex justify-between border-b-2 py-2 \"\n              classNameValue=\"text-sm\"\n              classNameLabel=\"font-bold text-sm\"\n              values={props.values}\n            /\u003e\n          \u003c/\u003e\n        )}\n      /\u003e\n    \u003c/div\u003e\n  );\n};\n\nContractDrawBeacon.layout = Admin;\n\nexport default ContractDrawBeacon;\n\n```\n\n# Changelog\n\n**0.0.1:** Calculate PrizeDistributions and verify live parameters in the monitor view.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpooltogether%2Fv4-admin-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpooltogether%2Fv4-admin-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpooltogether%2Fv4-admin-dashboard/lists"}