metadata: {"signature": "0x1040de9c789717504e200e1f3fbbee0bf4b00388ff05307f3e98e86652855d8b473c65fc6f1c401dff80f5039e7bb8ba3059aeeb2ca65048c6cf3d8eb2c9ff1e1b", "application": {"round": "0x7492a8c4ed29b1f1559888bd832fae5d33e10370", "answers": [{"type": "email", "hidden": true, "question": "Email Address", "questionId": 0, "encryptedAnswer": {"ciphertext": "Tv170lPD3ThlK3PDZqFAprFddRz5JxAXHuAMzOnGqDTIyAfO1FgEoLzkj+oo1txK", "encryptedSymmetricKey": "7c341d2f860b56775ae3ab8d30fd902e9dc9271202b614f8cfc7b483b6ff40ff9744d4651da06a56252977abcc74c906b555e24f7f358b16901633785bdde0e154f8ffac6fd73a6fcf5f35c0787442594e4ad406c5379330cdc75d8ab7983b97acc47dea89ce2aedd6678d5d4028744c36b1abca9a421bbbe902889f68f958b70000000000000020a57593a4369ee59c3bac0142195ff4ba416b38c0168c966a27a4d80fa28f3ac139a2cfb06b0690f90941b4f227424d8e"}}, {"type": "paragraph", "answer": "The goal of the Data Portal is to improve grants data access ultimately empowering data inclined folks to conduct research and guide community driven analysis and decisions. \n\nThe project is structured similar to Dune, so impact could be measured in multiple ways:\n- Number of contributions (metrics, models, datasets)\n- Number of users relying on the final artifacts (datasets, dashboards, reports, ...)", "hidden": false, "question": "What impact do you hope to have (or have had) on the Gitcoin Community with this project? How do you measure your impact? (e.g. viewers, forks, branches, likes)", "questionId": 1}, {"type": "multiple-choice", "answer": "Both (mixed)", "hidden": false, "question": "Are you applying for funding for work done, proposed, or both?", "questionId": 2}, {"type": "paragraph", "answer": "The [Gitcoin Grants Data Portal](https://github.com/davidgasquez/gitcoin-grants-data-portal) repository already contains a fully working PoC showcasing how to ingest arbitrary data, process it, and publish it in multiple places (IPFS in this case).\n\nAll open and with open source tools. It works in your laptop and, some parts, even in your browser!", "hidden": false, "question": "If you have work completed, please describe it below and include links where possible:", "questionId": 3}, {"type": "paragraph", "answer": "I think the remaining work is mostly adding metrics and sharing this resource with the community. \n\nThe ideal would be lots of folks collaborating on compounding data models over time.\n\nSince I'm not super familiar with all the metrics, I think around 8 hours or so could be a great estimato to model and surface the main KPIs of the grants.", "hidden": false, "question": "If you have work you are planning to do, please describe it below and include estimates of how much time (in hours) you expect it will take: ", "questionId": 4}, {"type": "paragraph", "answer": "No. That said, I got some funding (75USD) via GitCoin Grants for the bigger project, [Datadex](https://davidgasquez.github.io/datadex/) which aims to be the \"template\" for arbitrary data portals like this one or the [Filecoin](https://github.com/davidgasquez/filecoin-data-portal/) one I've been maintaining too.", "hidden": false, "question": "Has this work been previously funded? If so, by who and for how much? ", "questionId": 5}, {"type": "multiple-choice", "answer": "Yes", "hidden": false, "question": "Are you working on this as an individual?", "questionId": 6}], "project": {"id": "424:0xDF9BF58Aa1A1B73F0e214d79C652a7dd37a6074e:130", "title": "Gitcoin Grants Data Portal", "logoImg": "bafkreic26oesr3ssvzdsm5elluyx57244r64gbkkylsdof47grbm2lbwp4", "metaPtr": {"pointer": "bafkreic3lrmyzln2qxcrucfbrtvgc6bz3z6dcm7e2hhitd2ssnyqu4iekm", "protocol": "1"}, "website": "https://github.com/davidgasquez/gitcoin-grants-data-portal", "bannerImg": "bafkreie5xoawugzwttopfrn25jxdtcyoa2o55mvkbk4ixsluvbwlqeezdq", "createdAt": 1696239037350, "userGithub": "davidgasquez", "credentials": {"twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9vDqkqq4KvTUoXVsWdhlu6ErCbGAL8O0_25Cs3dQofraXski75Z2ab0ZH6xpjmWcc-VI7eTfsIixYemXEcfkBw", "type": "Ed25519Signature2018", "created": "2023-10-02T09:28:31.002Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2023-10-02T09:28:31.002Z", "expirationDate": "2023-12-31T09:28:31.002Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xb9ecee9a0e273d8A1857F3B8EeA30e5dD3cb6335", "hash": "v0.0.0:HlYB0WejK8Jr5W/vLoUSxeVzomfZ019AjM3ZoKe65iA=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#davidgasquez"}}}, "description": "Open source, serverless, and local-first data hub for Gitcoin Grants data to improve data access and empower data scientists to conduct research and guide community driven analysis and decisions.\n\nThe Gitcoin Data Portal proof of concept repository contains code and artifacts to help process Gitcoin Grants data from the [Allo Indexer Data API](https://indexer-grants-stack.gitcoin.co/data/). It is an instance of [Datadex](https://github.com/davidgasquez/datadex) allowing you and everyone else to:\n\n- Add new data sources to the portal, collaborate on better models (ala Dune) or submit an interesting analysis.\n- All in a permissionless way. Don't ask, fork it and improve the models, add a new source or update any script.\n- Declarative stateless transformations tracked in git, executed in GitHub Actions and published to IPFS. Data, artifacts (like the entire DuckDB database), and models all version controlled.\n- Share and explore dashboards and report with the world!\n\n### \ud83d\udce6 Key Features\n\n- **Open**.\n  - Both code and data are fully open source.\n  - Also relies on open standards/formats (Arrow ecosystem).\n- **Permissionless**.\n  - Clone and edit things away! You're not blocked by any API rate limits, or closed data like in Dune.\n  - All other git features like branching, merging, pull requests, ... are available because all the data is transformed declaratively as code.\n- **Decentralized**.\n  - The project runs on a laptop, a server, a CI runner (that's the way is working right now) or a even decentralized compute network like [Bacalhau](https://www.bacalhau.org/). Oh, it even works in GitHub Codespaces so you don't even need to setup anything locally!\n  - Data is stored in IPFS. You can run it locally, and it'll generate the same IPFS files if nothing has changed. The more people runst it, the more distributed the IPFS files will be!\n  - Data comes from multiple sources and can be exposed in multiple ways.\n- **Data as Code**.\n  - Every commit generates all the table files and pushes them to IPFS. This means that we can always go back in time and see the data as it was at that point in time. For every commit, we'll have the data as it was at that point in time.\n- **Modular**.\n  - Each component can be replaced, extended, or removed. Works well in many environments (your laptop, in a cluster, or from the browser), and with multiple tools (tables are files at the end of the day).\n- **Low Friction**.\n  - Data (raw and processed) is already there! No need to write your own scripts. You can always reproduce it but getting started is as easy as pasting [a SQL query in your browser](https://shell.duckdb.org/) or doing `pd.read_parquet(url)` in a Notebook.\n  - Every commit will also publish a set of Quarto Notebooks with the data. Could be used to generate reports/dahsboards, or as documentation.\n- **Modern**\n  - It supports all the cool things data engineers want; typing, tests, materialized views, dev branches, ...\n  - Uses best practices (declarative transformations) and state of the art tooling (DuckDB).\n\nThat's it! As an example, you can go to [the generated website with some query examples](https://bafybeieaztvldk23xghlpmzjz5ppry5jrd6bi2kag6q73huckhfrlrabby.ipfs.dweb.link/) or run the following query (rounds by most votes) in [shell.duckdb.org](https://shell.duckdb.org/).\n\n```sql\nselect\n    round_id,\n    count(id)\nfrom read_parquet('https://bafybeieaztvldk23xghlpmzjz5ppry5jrd6bi2kag6q73huckhfrlrabby.ipfs.w3s.link/round_votes.parquet')\ngroup by 1 order by 2 desc limit 10;\n```\n\n![DuckDB Example](https://user-images.githubusercontent.com/1682202/267361009-a416610e-3905-4399-adac-5d395975c2e5.png)\n", "lastUpdated": 0, "projectTwitter": "davidgasquez"}, "recipient": "0xb9ecee9a0e273d8A1857F3B8EeA30e5dD3cb6335"}}