# EasyRetroPGF
Website | Telegram Group
[](https://easyretropgf.xyz/sustainable-urban-development) [](https://easyretropgf.xyz/sustainable-urban-development/projects)
## Documentation - [Setup & Deployment](./docs/01_setup.md) - [Adding Projects & Approving](./docs/02_adding_projects.md) - [Creating Badgeholders/Voters](./docs/03_creating_badgeholders.md) - [Voting](./docs/04_voting.md) - [Results](./docs/06_results.md) - [Distribute](./docs/07_distribute.md) ## Supported Networks All networks EAS is deployed to are supported - https://docs.attest.sh/docs/quick--start/contracts #### Mainnets - Ethereum - Optimism - Base - Arbitrum One - Linea - Celo - Filecoin #### Testnets - Sepolia - Optimism Goerli - Base Goerli - Arbitrum Goerli - Polygon Mumbai - Linea Goerli ## Development To run locally follow these instructions: ```sh git clone https://github.com/gitcoinco/easy-retro-pgf bun install # (or pnpm / yarn / npm) cp .env.example .env # and update .env variables docker-compose up # starts a local postgres instance bun run dev bun run db:push # create database tables open localhost:3000 ``` ### Technical details - **EAS** - Projects, profiles, etc are all stored on-chain in Ethereum Attestation Service - **Batched requests with tRPC** - Multiple requests are batched into one (for example when the frontend requests the metadata for 24 projects they are batched into 1 request) - **Server-side caching of requests to EAS and IPFS** - Immediately returns the data without calling EAS and locally serving ipfs cids. - **SQL database for ballots** - Votes are stored privately in a Postgres database - **Allo2 for token distribution** - Payouts are calculated based on amount of configured tokens in the pool and the vote calculation