├── .gitattributes ├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── README.md ├── babel.config.ts ├── docs ├── Instructional gifs and minting process instructions ├── about.mdx ├── api.mdx ├── community.mdx ├── faq.mdx ├── github-bot.mdx └── index.mdx ├── docusaurus.config.js ├── package.json ├── sidebars.ts ├── src ├── components │ ├── HowSvg.tsx │ ├── ImageContainer.tsx │ └── ImageSwitcher.tsx └── css │ └── custom.css ├── static ├── .nojekyll └── img │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── favicon.png │ ├── favicon.svg │ ├── gitpoap_bot │ ├── choose-org.png │ ├── configure-app.png │ ├── example-comment.png │ ├── repo-select.png │ └── sample-tagging-comment.png │ ├── gitpoap_visuals │ ├── gitpoaps.png │ ├── how.svg │ └── how_dark_lg.png │ ├── logo.svg │ ├── logo_full.svg │ ├── logo_full_light.svg │ ├── mstile-150x150.png │ ├── og-image-256x256.png │ ├── og-image-512x512.png │ ├── safari-pinned-tab.svg │ ├── site.webmanifest │ ├── undraw_docusaurus_mountain.svg │ ├── undraw_docusaurus_react.svg │ └── undraw_docusaurus_tree.svg ├── tsconfig.json └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=TypeScript 2 | *.jsx linguist-language=TypeScript -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSpacing": true, 3 | "jsxBracketSameLine": false, 4 | "printWidth": 100, 5 | "semi": true, 6 | "singleQuote": true, 7 | "tabWidth": 2, 8 | "trailingComma": "all", 9 | "useTabs": false 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitPOAP Docs 2 | 3 | [![gitpoap badge](https://public-api.gitpoap.io/v1/repo/gitpoap/gitpoap-docs/badge)](https://www.gitpoap.io/gh/gitpoap/gitpoap-docs) 4 | 5 | This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. 6 | 7 | ### Installation 8 | 9 | ``` 10 | $ yarn 11 | ``` 12 | 13 | ### Local Development 14 | 15 | ``` 16 | $ yarn start 17 | ``` 18 | 19 | This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. 20 | 21 | ### Build 22 | 23 | ``` 24 | $ yarn build 25 | ``` 26 | 27 | This command generates static content into the `build` directory and can be served using any static contents hosting service. 28 | 29 | ### Deployment 30 | 31 | Using SSH: 32 | 33 | ``` 34 | $ USE_SSH=true yarn deploy 35 | ``` 36 | 37 | Not using SSH: 38 | 39 | ``` 40 | $ GIT_USER= yarn deploy 41 | ``` 42 | 43 | If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. 44 | -------------------------------------------------------------------------------- /babel.config.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')], 3 | }; 4 | -------------------------------------------------------------------------------- /docs/Instructional gifs and minting process instructions: -------------------------------------------------------------------------------- 1 | ## Minting a GitPOAP 2 | 3 | - Head over to [gitpoap.io](https://gitpoap.io/) and connect your Ethereum & GitHub accounts in the top right. 4 | - Once you’re connected, if you’re eligible for any GitPOAPs, you’ll be able to mint them by clicking “View & Mint”. 5 | - A quick tip: if ‘Mint’ is greyed out for claiming a GitPOAP, ensure your Ethereum account is connected. 6 | 7 | ![1_kcsQFMfbxRyWK_9MXwDqcA](https://user-images.githubusercontent.com/96504224/185755499-0fd1a29f-bb01-4c2d-aa40-9b0160a32d6a.gif) 8 | 9 | ## Creating a Profile 10 | 11 | - Once your Ethereum account is connected, you’ll see a ‘Profile’ button appear in the top right of the screen. 12 | - On your profile, you can add some information about yourself and feature your favorite POAPs (including GitPOAPs) by clicking the heart icon next to each one. 13 | - A quick tip: your profile is associated with your Ethereum address, not your GitHub profile, so if you connect a different address, you’ll be editing a different profile. 14 | 15 | ![1_wkZQDNW8oPnVhuJ-hvxm3g](https://user-images.githubusercontent.com/96504224/185755709-4fdcf03f-e8e1-405e-b1cb-5b3e7e27499c.gif) 16 | 17 | ## How to Remove yourself from the Leaderboards 18 | 19 | - Head over to your Profile with the button that appears in the top right of the screen. 20 | 21 | ![step1profile](https://user-images.githubusercontent.com/96504224/185758004-032ca9ea-3a00-42fd-a31b-e33958b4497e.jpg) 22 | - Once on your profile, you can see the information about yourself, and below, you can see the Edit Profile. 23 | 24 | ![step2editp](https://user-images.githubusercontent.com/96504224/185758031-d826267d-6ba4-4b22-99a1-b86636ec5212.jpg) 25 | 26 | - By clicking the 'Edit Profile' button, you'll be prompted with a small window to change any information on your account. And below your information, you'll see a checked box that says 'Is visible on the leaderboard?' 27 | 28 | ![Untitled6 copy](https://user-images.githubusercontent.com/96504224/185758060-a8dcc889-76ec-49b6-9b1e-3f200e5d183a.jpg) 29 | 30 | - Click on it to turn it off. (Optional) 31 | - Click on Save and sign the transaction with your wallet to confirm changes. 32 | ![saveee](https://user-images.githubusercontent.com/96504224/185758099-b72f622a-973d-45c7-a051-7dd3487c9eed.jpg) 33 | ![metasign](https://user-images.githubusercontent.com/96504224/185758123-5ab3ecec-59e9-45e5-811c-deee95a619d4.jpg) 34 | 35 | ## Featuring POAPs on your Profile 36 | 37 | - Head over to your Profile with the button that appears in the top right of the screen. 38 | 39 | ![step1profile](https://user-images.githubusercontent.com/96504224/185758172-087ee5c3-66bc-4713-83b0-d6894f9daa27.jpg) 40 | 41 | - Once on your profile, scroll down to see your POAPs. 42 | 43 | ![poapsm](https://user-images.githubusercontent.com/96504224/185758219-0b42433b-3b2f-41be-be8d-420fb91812fb.jpg) 44 | 45 | - To feature your favorite POAPs, first click the heart icon on the POAP that you would like to add as a favorite. 46 | ![wefrensheart](https://user-images.githubusercontent.com/96504224/185758382-9c2629d0-df87-48ca-94a4-443223b8cbcb.jpg) 47 | 48 | - Sign the transaction with your wallet to confirm changes. 49 | 50 | ![signfavpoap](https://user-images.githubusercontent.com/96504224/185758454-53039a78-e206-4fc1-ad51-4d353e9241aa.jpg) 51 | 52 | - All done! Your POAP is now featured as a favorite on your GitPOAP profile! 53 | 54 | ![alldone](https://user-images.githubusercontent.com/96504224/185758524-f897ba1c-3728-4336-bdb6-6fcbb7f2eac1.jpg) 55 | -------------------------------------------------------------------------------- /docs/about.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: about 3 | title: About 4 | sidebar_position: 3 5 | --- 6 | 7 | # About 8 | 9 | GitPOAP was built by MetaRep Labs Inc with the support of many investors and supporters. It is now open source and maintained in partnership with the [POAP team](https://poap.xyz/). 10 | -------------------------------------------------------------------------------- /docs/api.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: api 3 | title: Public API 4 | --- 5 | 6 | # Public API 7 | 8 | ## API Endpoint: `https://public-api.gitpoap.io/` 9 | 10 |
11 | 12 | If you have any questions, comments, or suggestions, please reach out in the #gitpoap channel of the POAP [Discord](https://discord.com/invite/fcxW4yR), or send us a message at team at gitpoap.io 13 | 14 |
15 | 16 | ## Version 1 17 | 18 | **Note that the public API limits individual IPs to a 19 | maximum of 100 requests within a 5 minute window.** 20 | 21 | ### `GET /v1/poap/:poapTokenId/is-gitpoap` 22 | 23 | This endpoint allows users to query whether some `poapTokenId` is a GitPOAP or not. 24 | In the case that the `poapTokenId` corresponds to some claimed GitPOAP, the API will return 25 | something like: 26 | 27 | ```json 28 | { 29 | "isGitPOAP": true, 30 | "gitPOAPId": 4003 31 | } 32 | ``` 33 | 34 | And in the case that it is not a GitPOAP: 35 | 36 | ```json 37 | { 38 | "isGitPOAP": false 39 | } 40 | ``` 41 | 42 |
43 | 44 | ### `GET /v1/poap/gitpoap-ids` 45 | 46 | This endpoint returns all of the POAP Token IDs that are GitPOAPs. It will return data like: 47 | ```json 48 | { 49 | "poapTokenIds": [ 50 | "4637848", 51 | "4638134", 52 | "4641290", 53 | "4641645" 54 | ] 55 | } 56 | ``` 57 | 58 |
59 | 60 | ### `GET /v1/poap-event/:poapEventId/is-gitpoap` 61 | 62 | This endpoint allows users to query whether some `poapEventId` is for GitPOAP project 63 | contribution level. In the case that the `poapEventId` is for a GitPOAP project contribution 64 | level, it will return something like: 65 | 66 | ```json 67 | { 68 | "isGitPOAP": true, 69 | "gitPOAPId": 3001 70 | } 71 | ``` 72 | 73 | And in the case that it is not a GitPOAP project contribution level: 74 | 75 | ```json 76 | { 77 | "isGitPOAP": false 78 | } 79 | ``` 80 | 81 |
82 | 83 | ### `GET /v1/poap-event/gitpoap-event-ids` 84 | 85 | This endpoint returns all of the POAP Event IDs that are GitPOAP Events. It will return data like: 86 | ```json 87 | { 88 | "poapEventIds": [ 89 | 37428, 90 | 37430, 91 | 37556, 92 | 37557 93 | ] 94 | } 95 | ``` 96 | 97 |
98 | 99 | ### `GET /v1/poap-event/gitpoap-event-fancy-ids` 100 | 101 | This endpoint returns all of the POAP Event Fancy IDs that are GitPOAP Events. It will return data like: 102 | ```json 103 | { 104 | "poapEventFancyIds": [ 105 | "2022-wagyu-installer-contributor-2022", 106 | "2022-wagyu-key-gen-contributor-2022", 107 | "gitpoap-2015-truffle-contributor-2015", 108 | "gitpoap-2016-truffle-contributor-2016" 109 | ] 110 | } 111 | ``` 112 | 113 |
114 | 115 | ### `GET /v1/gitpoaps/events` 116 | 117 | This endpoint allows user to query for information on all the GitPOAPs that have been released so far. It will return data in the form: 118 | ```json 119 | { 120 | "gitPoapEvents": [{ 121 | "gitPoapEventId": 32423, 122 | "poapEventId": 343, 123 | "poapEventFancyId": "gitpoap-gitpoap-docs-level-2-contributor-2022", 124 | "name": "GitPOAP: gitpoap-docs Level 2 Contributor 2022", 125 | "year": 2022, 126 | "description": "You've made at least 5 contributions to the gitpoap-docs project in 2022!", 127 | "imageUrl": "https://assets.poap.xyz/gitpoap-2022-devconnect-hackathon-gitpoap-team-contributor-2022-logo-1650466033470.png", 128 | "repositories": ["gitpoap/gitpoap-docs"], 129 | "mintedCount": 5, 130 | }] 131 | } 132 | ``` 133 | 134 |
135 | 136 | ### `GET /v1/gitpoaps/:gitPoapEventId/addresses` 137 | 138 | This endpoint allows users to query for a list of addresses that hold a GitPOAP specified by GitPOAP Event ID. It returns something like: 139 | 140 | ```json 141 | { 142 | "addresses": [ 143 | "0x4b412F5eF87A2F85Fc8C6f90728d2D03941aFd80", 144 | "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045" 145 | ] 146 | } 147 | ``` 148 | 149 | If there are no holders, it returns something like: 150 | 151 | ```json 152 | { 153 | "addresses": [] 154 | } 155 | ``` 156 | 157 | And in the case that no GitPOAP with that ID is found, it returns the following with a 404: 158 | 159 | ```json 160 | { 161 | "message": "GitPOAP not found" 162 | } 163 | ``` 164 | 165 |
166 | 167 | ### `GET /v1/gitpoaps/addresses` 168 | 169 | This endpoint allows users to query for a list of all addresses that hold any GitPOAP. It returns something like: 170 | 171 | ```json 172 | { 173 | "addresses": [ 174 | "0x4b412F5eF87A2F85Fc8C6f90728d2D03941aFd80", 175 | "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 176 | "0x02738d122e0970aAf8DEADf0c6A217a1923E1e99", 177 | "0xae95f7e7fb2fcf86148ef832faed2752ae5a358a" 178 | ] 179 | } 180 | ``` 181 | 182 |
183 | 184 | ### `GET /v1/address/:address/gitpoaps` 185 | 186 | This endpoint allows users to query for some address's (either an ETH or ENS address) GitPOAPs. This returns data like: 187 | 188 | ```json 189 | [ 190 | { 191 | "gitPoapId": 2, 192 | "gitPoapEventId": 1, 193 | "poapTokenId": "4638134", 194 | "poapEventId": 37428, 195 | "poapEventFancyId": "2022-wagyu-installer-contributor", 196 | "name": "2022 Wagyu Installer Contributor", 197 | "year": 2022, 198 | "description": "You contributed at least one merged pull request to the Wagyu Installer project in 2022. Your contributions are greatly valued.", 199 | "imageUrl": "https://assets.poap.xyz/2022-wagyu-installer-contributor-2022-logo-1649213116205.png", 200 | "repositories": ["stake-house/wagyu-installer"], 201 | "earnedAt": "2022-01-20", 202 | "mintedAt": "2022-04-06" 203 | } 204 | ] 205 | ``` 206 | 207 |
208 | 209 | ### `GET /v1/github/user/:githubHandle/gitpoaps?status=` 210 | 211 | This endpoint allows users to query for minted GitPOAPs associated with a specified GitHub handle. The `status` query parameter is one of 212 | the following: `claimed`, `unclaimed`, `pending`, `minting`, and can be omitted completely. This returns data like: 213 | 214 | ```json 215 | [ 216 | { 217 | "gitPoapId": 34, 218 | "gitPoapEventId": 32423, 219 | "poapTokenId": "2432", 220 | "poapEventId": 343, 221 | "poapEventFancyId": "gitpoap-gitpoap-docs-level-2-contributor-2022", 222 | "name": "GitPOAP: gitpoap-docs Level 2 Contributor 2022", 223 | "year": 2022, 224 | "description": "You've made at least 5 contributions to the gitpoap-docs project in 2022!", 225 | "imageUrl": "https://assets.poap.xyz/gitpoap-2022-devconnect-hackathon-gitpoap-team-contributor-2022-logo-1650466033470.png", 226 | "repositories": ["gitpoap/gitpoap-docs"], 227 | "earnedAt": "2022-04-25", 228 | "mintedAt": "2022-05-22" 229 | } 230 | ] 231 | ``` 232 | 233 |
234 | 235 | ### `GET /v1/repo/:owner/:name/badge` 236 | 237 | This endpoint generates a GitHub badge containing the count of minted GitPOAPs for a specified repo. The repo is specified with a GitHub owner and repo name & the endpoint will return a SVG for use in any `.md` file such as a `README.md`. 238 | 239 | Using `ethereum/ethereum-org-website` as an example via [https://public-api.gitpoap.io/v1/repo/ethereum/ethereum-org-website/badge](https://public-api.gitpoap.io/v1/repo/ethereum/ethereum-org-website/badge), embed the badge in a `.md` file the following way: 240 | 241 | ```markdown 242 | [![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/gitpoap/gitpoap-docs/badge)](https://www.gitpoap.io/gh/gitpoap/gitpoap-docs) 243 | ``` 244 | 245 | Resulting in the following: 246 | 247 | [![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/gitpoap/gitpoap-docs/badge)](https://www.gitpoap.io/gh/gitpoap/gitpoap-docs) 248 | -------------------------------------------------------------------------------- /docs/community.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: community 3 | title: Community Projects 4 | --- 5 | 6 | # Community Projects 7 | 8 | The GitPOAP community is decentralized and growing. Here are some of the projects built on top of GitPOAP, by the fantastic GitPOAP community. 9 | 10 | ## GitPOAP Badge Generator For Github Profiles 11 | 12 | This project facilitates the process of adding your GitPOAPs to your Github profile README or in any HTML/Markdown file in a simple GET request. 13 | 14 | - [Project Github repository - try it out!](https://github.com/charmful0x/gitpoap-gh-badge) 15 | 16 | ## Disclaimer 17 | 18 | All of the listed projects are developed and maintained by developers and teams from the community. The GitPOAP team is not responsible for any misbehavior from the use of these projects. Do your own research and use at your own risk! 19 | -------------------------------------------------------------------------------- /docs/faq.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: faq 3 | title: FAQ 4 | sidebar_position: 2 5 | --- 6 | 7 | # FAQ 8 | 9 | ## What is a POAP? 10 | 11 | A [POAP](https://poap.xyz) is a digital collectible created as an NFT (non-fungible token) that represents an action taken by the owner, like a participation trophy or achievement badge. POAPs exist with cryptographic provability on the blockchain and are displayable as badges viewable by anyone. 12 | 13 | ## What’s the difference between a GitPOAP and a POAP? 14 | 15 | GitPOAP is a platform built on top of the POAP protocol. GitPOAPs are regular POAPs, they are just minted through GitPOAP. They are viewable in any POAP viewing tool and have a distinctive border around them to signify that they are GitPOAPs and represent a contribution you’ve made to a project. 16 | 17 | ## Are GitPOAPs soulbound? 18 | 19 | No. Although (in real life) your contributions are soulbound to you, we do not currently see the need to have GitPOAPs be soulbound to a particular address. In the future we believe people’s decentralized identities will be made up of many addresses, alongside the fact that there are justified reasons for moving tokens around. The blockchain provides transparency on how tokens are transferred so we can always find out if a GitPOAP is held by its original owner if necessary. 20 | 21 | This, however, is an area of research and focus for us and we strive to do what’s best for the ecosystem. 22 | 23 | ## Will GitPOAP be open source? 24 | 25 | Our goal is to build a trusted record of software contributions on chain. We are concerned that if we are open source from the start, it may dilute the quality of information coming on chain. We aim to open source as much of our platform as possible, but since there are many unknown unknowns we’ll be mostly closed source at the start. 26 | 27 | ## Wen GitLab, Bitbucket, radicle, etc? 28 | 29 | We’re focused on GitHub for now, but we’ll be integrating into other code repositories as well as non-software contribution tools in the future. If you have a particular request, drop us a message at team@gitpoap.io. 30 | -------------------------------------------------------------------------------- /docs/github-bot.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: github-bot 3 | title: GitHub Bot 4 | sidebar_position: 1 5 | --- 6 | 7 | import ImageContainer from '@site/src/components/ImageContainer.tsx'; 8 | 9 | # GitHub Bot 10 | 11 | GitPOAP has built an opt-in GitHub bot that has two functions: 12 | 13 | - Real-time awarding & notifications: for each PR that earns the contributor a GitPOAP, the bot will automatically detect & immediately reward a GitPOAP. It'll post a nice [note](https://github.com/ethereum/ethereum-org-website/pull/8135#issuecomment-1265580429) and it will only post once per contributor per year. Without this, it takes a couple hours for your GitPOAPs to be awarded. 14 | - Ad-hoc awarding: a maintainer can tag the bot to award your GitPOAP to anyone deserving (eg submitted a valuable Issue), so you are no longer limited to merged PRs. For example: `Nice job @wackerow! Here's a GitPOAP to show our appreciation @gitpoap-bot` 15 | 16 | 17 | An example bot notification: 18 | 19 | 20 | 28 | 29 | 30 | 31 | ## Installing on your Project 32 | 33 | If you'd like gitpoap-bot to start notifying your contributors when they've received a 34 | GitPOAP for their contribution, first navigate to the 35 | [GitHub App page for the gitpoap-bot](https://github.com/apps/gitpoap-bot). 36 | On the top right you should see a configure button: 37 | 38 | 39 | 47 | 48 | 49 | Click on this link and then click on the organization you'd like to add the bot to: 50 | 51 | 52 | 60 | 61 | 62 | You will be taken to an installation configuration page for your GitHub Organization. 63 | From here, you should scroll down to the "Repository Access" section, click on the 64 | "Only select repositories" option, select any repos that have GitPOAPs associated 65 | with them, and then hit "Save" underneath. As an example, we at GitPOAP have created 66 | a GitPOAP for [the repository for this documentation](https://github.com/gitpoap/gitpoap-docs): 67 | 68 | 69 | 77 | 78 | 79 | And that's it! Now gitpoap-bot will start notifying users when their merged PRs have 80 | earned them new GitPOAPs. 81 | 82 | ## Enabling GitPOAP notifications 83 | 84 | GitPOAP notifications are enabled by default once the bot is installed, so there is nothing additional you need to do. If you'd like them to be disabled you can either uninstall the bot or reach out to our team on our [discord](https://gitpoap.io/discord) and we can disable it so you can still use the tagging functionality. 85 | 86 | ## Tagging contributors 87 | 88 | Gitpoap-bot also has the capability to issue GitPOAPs to contributors by tagging them in a 89 | comment. When both `@gitpoap-bot` and one or more contributors' handles are tagged within a comment 90 | on a PR or Issue, a new GitPOAP claim will be issued to these users if they don't have one already. 91 | 92 | For example, to issue a new GitPOAP to a GitHub user via a PR or Issue, add a comment with `@gitpoap-bot` tagged like so: 93 | 94 | 95 | 103 | 104 | 105 |
106 | 107 | **Note:** `@gitpoap-bot` can appear _**anywhere**_ in the comment, & the names of contributors do _**NOT**_ have 108 | to directly follow `@gitpoap-bot`. 109 | 110 | ## FAQ 111 | 112 | ### What permissions does the bot have? 113 | 114 | The bot has permissions to read and write comments on Issues and PRs. The bot does not have the ability to merge PRs. 115 | -------------------------------------------------------------------------------- /docs/index.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | id: overview 3 | title: Overview 4 | sidebar_position: 1 5 | --- 6 | 7 | import HowSvg from '@site/src/components/HowSvg.tsx'; 8 | import ImageContainer from '@site/src/components/ImageContainer.tsx'; 9 | 10 | # GitPOAP: Overview 11 | 12 | A new way to reward your contributors. 13 | 14 | Please join the discussion in the #gitpoap channel of the POAP [Discord](https://discord.com/invite/fcxW4yR) to learn more - the community is looking forward to meeting you! 15 | 16 | For answers to frequently asked questions, check the [FAQ](./faq.mdx). 17 | 18 | 19 | 27 | 28 | 29 | --- 30 | 31 | ## What is GitPOAP? 32 | 33 | GitPOAP is a contributor recognition platform that integrates POAP issuance into GitHub. 34 | 35 | It bridges the space between existing off-chain contribution platforms such as GitHub and the on-chain world of DAOs & decentralized identity through the representation of meaningful contributions as POAPs. 36 | 37 | This provides software projects - and eventually many more types of organizations - with a novel way of recognizing & nurturing their communities. At the same time, contributors can showcase this socially-sourced, immutable record of their work, build networks, & develop a web3 representation of their identity. GitPOAP will use this foundation to power an ecosystem of reputation-based applications. 38 | 39 | ### How does it work? 40 | 41 | In its current state, GitPOAP can be used by two sets of users, contributors and repo owners. Contributors can create public, immutable, & unbiased records of their work. While repo owners or project leaders can recognize, nurture, and grow their communities of contributors in a novel way. 42 | 43 | First, a contribution is made - GitPOAP is configured to identify meaningful contributions that either match a configured pattern, such as merging a PR, or get tagged by a maintainer. 44 | 45 | Second, a GitPOAP is awarded - Contributors are awarded GitPOAPs (POAPs with an extra spin) that are claimable by signing into GitPOAP with their GitHub account. 46 | 47 | 48 | 49 | ### Building on GitPOAP 50 | 51 | On-chain identities are only useful if there are other people to interact with and applications built to leverage them. That’s why we've decided to build on top of POAP. 52 | 53 | GitPOAP is a platform that will enable a new era of web3 applications, and we’re excited to see what people build on top of it. Our public API is now live! Start building and feel free to reach out if there’s anything we can do to better support you. 54 | 55 | ### Why is this important? 56 | 57 | We’re building GitPOAP to solve real-world challenges we’ve faced while bootstrapping and growing open source projects. web3 provides new modes of interaction and GitPOAP enables a novel way to reward contributors based on the value they add. We believe this model can be generalized beyond open source and also enable new paradigms of collaboration. 58 | 59 | The future of web3 requires deeper and more nuanced personas & reputation. The on-chain representation of *you* is currently very limited, which puts a ceiling on how we can interact with one another & what applications we can build. 60 | 61 | For example, many DAOs are relying on token holdings for their governance. Imagine if you could easily poll the people who are actually contributing to your project? Project funding is also inherently difficult - wouldn’t it be nice to have a unified & verified record of who's contributed, so you can channel the funds effectively? 62 | 63 | Finding collaborators is another major challenge. People are multidimensional, and understanding whether someone will be a good collaborator requires going much deeper than a resume. We’re laying the foundation for a trusted, queryable record of contribution that can enable new and novel ways to find others to work with. 64 | 65 | ### Inspiration 66 | 67 | Our inspiration for building GitPOAP comes from wanting to solve the challenges of recognition and reputation building that we’ve experienced first-hand as open source developers and maintainers. 68 | 69 | Recognizing contributions to communities and organizations is difficult - it's hard to make contributors feel valued for their work and build a public, lasting track record of their impact. 70 | 71 | A few key tenets of a recognition mechanism that are often absent: 72 | 73 | - **_Verifiability_** - It's hard to trace claims of accomplishment back to actual contributions. 74 | - **_Immutability_** - The farther back in history a contribution was made, the more difficult it is to articulate the impact it had, and the possibility of details being misrepresented increases. 75 | - **_Openness_** - Many forms of recognition - for example internal designations & swag - are not useful for contributors to build a public reputation. 76 | - **_Composability_** - Existing forms of recognition are stratified and do not interoperate seamlessly. 77 | - **_Comparability_** - It is very difficult to compare the level of meaningfulness of different contributions. 78 | 79 | ### The Solution & Vision 80 | 81 | GitPOAP solves this by issuing POAPs to represent meaningful contributions. This verifiable, public, on-chain contribution record then becomes the base layer of an ecosystem of composable applications. 82 | 83 | Using POAPs to represent contributions offers many benefits: 84 | 85 | - **_Verifiability_** - POAPs exist with cryptographic provability & are issued by trusted authorities - there is no way for people to falsify records. 86 | - **_Immutability_** - Data on the blockchain will not change and will persist forever, unlike people's memories and other forms of record. 87 | - **_Openness_** - Issuance and ownership of POAPs are inherently public and queryable by anyone. 88 | - **_Composability_** - POAPs can easily represent any type of contribution and the information they represent can be used, built upon, and adapted by other applications. 89 | - **_Comparability_** - Using POAPs to represent standardized levels of impact that contributors have made enables better comparisons of abilities across projects. 90 | 91 | #### Issuance Layer 92 | 93 | The issuance layer is about awarding POAPs for contributions and accomplishments. We're currently issuing POAPs based on Pull Requests being merged. Soon we'll offer more configurable tools to recognize many types of contributions. If you're interested in building on top of GitPOAP, our public API is [now live](https://docs.gitpoap.io/api). 94 | 95 | #### Application Layer 96 | 97 | The on-chain record of contributions can become the foundation for reputation-based applications. The GitPOAP team will bootstrap the ecosystem, while enabling external builders through the development of SDKs and other tooling. These features along with the nurturing of our own community of users will result in a flywheel effect of increasing value. 98 | 99 | --- 100 | 101 | # Contact 102 | 103 | Have any questions about GitPOAP's development efforts & product roadmap? Reach out via the #gitpoap channel of the POAP [Discord](https://discord.com/invite/fcxW4yR) or send us a message at team at gitpoap.io 104 | -------------------------------------------------------------------------------- /docusaurus.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Note: type annotations allow type checking and IDEs autocompletion 3 | 4 | const lightCodeTheme = require('prism-react-renderer/themes/github'); 5 | const darkCodeTheme = require('prism-react-renderer/themes/dracula'); 6 | 7 | /** @type {import('@docusaurus/types').Config} */ 8 | const config = { 9 | title: 'GitPOAP Docs', 10 | tagline: 'Mint POAPs for open source contributions', 11 | url: 'https://gitpoap.io', 12 | baseUrl: '/', 13 | onBrokenLinks: 'throw', 14 | onBrokenMarkdownLinks: 'warn', 15 | favicon: 'img/favicon.ico', 16 | organizationName: 'gitpoap', // Usually your GitHub org/user name. 17 | projectName: 'gitpoap-docs', // Usually your repo name. 18 | 19 | presets: [ 20 | [ 21 | 'classic', 22 | /** @type {import('@docusaurus/preset-classic').Options} */ 23 | ({ 24 | docs: { 25 | routeBasePath: '/', 26 | sidebarPath: require.resolve('./sidebars.ts'), 27 | // Please change this to your repo. 28 | editUrl: 'https://github.com/gitpoap/gitpoap-docs/blob/main/', 29 | breadcrumbs: false, 30 | }, 31 | blog: false, 32 | theme: { 33 | customCss: require.resolve('./src/css/custom.css'), 34 | }, 35 | }), 36 | ], 37 | ], 38 | 39 | themeConfig: 40 | /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ 41 | ({ 42 | colorMode: { 43 | defaultMode: 'dark', 44 | disableSwitch: false, 45 | respectPrefersColorScheme: true, 46 | }, 47 | 48 | navbar: { 49 | logo: { 50 | alt: 'GitPOAP Logo', 51 | src: 'img/logo_full_light.svg', 52 | srcDark: 'img/logo_full.svg', 53 | }, 54 | }, 55 | prism: { 56 | theme: lightCodeTheme, 57 | darkTheme: darkCodeTheme, 58 | }, 59 | }), 60 | }; 61 | 62 | module.exports = config; 63 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitpoap-docs", 3 | "version": "1.0.1", 4 | "private": true, 5 | "scripts": { 6 | "docusaurus": "docusaurus", 7 | "start": "docusaurus start", 8 | "build": "docusaurus build", 9 | "swizzle": "docusaurus swizzle", 10 | "deploy": "docusaurus deploy", 11 | "clear": "docusaurus clear", 12 | "serve": "docusaurus serve", 13 | "write-translations": "docusaurus write-translations", 14 | "write-heading-ids": "docusaurus write-heading-ids", 15 | "typecheck": "tsc" 16 | }, 17 | "dependencies": { 18 | "@docusaurus/core": "3.2.1", 19 | "@docusaurus/preset-classic": "3.2.1", 20 | "@mdx-js/react": "^1.6.22", 21 | "clsx": "^1.1.1", 22 | "prism-react-renderer": "^1.3.3", 23 | "react": "^18.0.0", 24 | "react-dom": "^18.0.0" 25 | }, 26 | "devDependencies": { 27 | "@docusaurus/module-type-aliases": "2.0.0-beta.21", 28 | "@tsconfig/docusaurus": "^1.0.6", 29 | "prettier": "^2.7.1", 30 | "typescript": "^4.7.4" 31 | }, 32 | "browserslist": { 33 | "production": [ 34 | ">0.5%", 35 | "not dead", 36 | "not op_mini all" 37 | ], 38 | "development": [ 39 | "last 1 chrome version", 40 | "last 1 firefox version", 41 | "last 1 safari version" 42 | ] 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /sidebars.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Creating a sidebar enables you to: 3 | - create an ordered group of docs 4 | - render a sidebar for each doc of that group 5 | - provide next/previous navigation 6 | 7 | The sidebars can be generated from the filesystem, or explicitly defined here. 8 | 9 | Create as many sidebars as you want. 10 | */ 11 | 12 | // @ts-check 13 | 14 | /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ 15 | const sidebars = { 16 | sidebar: [ 17 | { 18 | type: 'category', 19 | label: '+ Getting Started', 20 | collapsible: true, 21 | items: [ 22 | { 23 | type: 'doc', 24 | id: 'overview', 25 | label: 'Overview', 26 | }, 27 | { 28 | type: 'doc', 29 | id: 'faq', 30 | label: 'FAQ', 31 | }, 32 | { 33 | type: 'doc', 34 | id: 'about', 35 | label: 'About', 36 | }, 37 | ], 38 | }, 39 | { 40 | type: 'category', 41 | label: '+ Advanced', 42 | collapsible: true, 43 | items: [ 44 | { 45 | type: 'doc', 46 | id: 'api', 47 | label: 'Public API', 48 | }, 49 | { 50 | type: 'doc', 51 | id: 'github-bot', 52 | label: 'GitHub Bot', 53 | }, 54 | ], 55 | }, 56 | ], 57 | }; 58 | 59 | module.exports = sidebars; 60 | -------------------------------------------------------------------------------- /src/components/HowSvg.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useColorMode } from '@docusaurus/theme-common'; 3 | import HowSvgLight from '@site/static/img/gitpoap_visuals/how.svg'; 4 | import ImageContainer from './ImageContainer'; 5 | 6 | const HowSvg = () => { 7 | const { colorMode } = useColorMode(); 8 | const isDarkTheme = colorMode === 'dark'; 9 | 10 | return ( 11 | 12 | {isDarkTheme ? ( 13 | 20 | ) : ( 21 | 27 | )} 28 | 29 | ); 30 | }; 31 | 32 | export default HowSvg; 33 | -------------------------------------------------------------------------------- /src/components/ImageContainer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const ImageContainer = ({ children }) => ( 4 | <> 5 |
6 | 14 | {children} 15 | 16 |
17 | 18 | ); 19 | 20 | export default ImageContainer; 21 | -------------------------------------------------------------------------------- /src/components/ImageSwitcher.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useColorMode } from '@docusaurus/theme-common'; 3 | 4 | const ImageSwitcher = ({ lightImageSrc, darkImageSrc }) => { 5 | const { colorMode } = useColorMode(); 6 | const isDarkTheme = colorMode === 'dark'; 7 | 8 | return Example banner; 9 | }; 10 | 11 | export default ImageSwitcher; 12 | -------------------------------------------------------------------------------- /src/css/custom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Any CSS included here will be global. The classic template 3 | * bundles Infima by default. Infima is a CSS framework designed to 4 | * work well for content-centric websites. 5 | */ 6 | 7 | /* You can override the default Infima variables here. */ 8 | :root { 9 | --ifm-color-primary: #307AE8; 10 | --ifm-color-primary-dark: #307AE8; 11 | --ifm-color-primary-darker: #2B6DD0; 12 | --ifm-color-primary-darkest: #2661B9; 13 | --ifm-color-primary-light: #66A0F6; 14 | --ifm-color-primary-lighter: #77ABF7; 15 | --ifm-color-primary-lightest: #88B5F8; 16 | --ifm-code-font-size: 95%; 17 | } 18 | 19 | /* For readability concerns, you should choose a lighter palette in dark mode. */ 20 | [data-theme='dark'] { 21 | --ifm-color-primary: #5596F6; 22 | --ifm-color-primary-dark: #307AE8; 23 | --ifm-color-primary-darker: #2B6DD0; 24 | --ifm-color-primary-darkest: #2661B9; 25 | --ifm-color-primary-light: #66A0F6; 26 | --ifm-color-primary-lighter: #77ABF7; 27 | --ifm-color-primary-lightest: #88B5F8; 28 | } 29 | 30 | .docusaurus-highlight-code-line { 31 | background-color: rgba(0, 0, 0, 0.1); 32 | display: block; 33 | margin: 0 calc(-1 * var(--ifm-pre-padding)); 34 | padding: 0 var(--ifm-pre-padding); 35 | } 36 | 37 | [data-theme='dark'] .docusaurus-highlight-code-line { 38 | background-color: rgba(0, 0, 0, 0.3); 39 | } 40 | -------------------------------------------------------------------------------- /static/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/.nojekyll -------------------------------------------------------------------------------- /static/img/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/android-chrome-192x192.png -------------------------------------------------------------------------------- /static/img/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/android-chrome-512x512.png -------------------------------------------------------------------------------- /static/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/apple-touch-icon.png -------------------------------------------------------------------------------- /static/img/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #2d89ef 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /static/img/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/favicon-16x16.png -------------------------------------------------------------------------------- /static/img/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/favicon-32x32.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/favicon.png -------------------------------------------------------------------------------- /static/img/favicon.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 11 | 14 | 17 | 20 | 23 | 26 | 27 | -------------------------------------------------------------------------------- /static/img/gitpoap_bot/choose-org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_bot/choose-org.png -------------------------------------------------------------------------------- /static/img/gitpoap_bot/configure-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_bot/configure-app.png -------------------------------------------------------------------------------- /static/img/gitpoap_bot/example-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_bot/example-comment.png -------------------------------------------------------------------------------- /static/img/gitpoap_bot/repo-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_bot/repo-select.png -------------------------------------------------------------------------------- /static/img/gitpoap_bot/sample-tagging-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_bot/sample-tagging-comment.png -------------------------------------------------------------------------------- /static/img/gitpoap_visuals/gitpoaps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_visuals/gitpoaps.png -------------------------------------------------------------------------------- /static/img/gitpoap_visuals/how_dark_lg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/gitpoap_visuals/how_dark_lg.png -------------------------------------------------------------------------------- /static/img/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 11 | 14 | 17 | 20 | -------------------------------------------------------------------------------- /static/img/logo_full.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | -------------------------------------------------------------------------------- /static/img/logo_full_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 11 | 14 | 17 | 20 | 23 | 26 | 29 | 32 | 35 | 38 | 41 | -------------------------------------------------------------------------------- /static/img/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/mstile-150x150.png -------------------------------------------------------------------------------- /static/img/og-image-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/og-image-256x256.png -------------------------------------------------------------------------------- /static/img/og-image-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpoap/gitpoap-docs/2cc081b98c580da6580e338cf4ec1500466611fd/static/img/og-image-512x512.png -------------------------------------------------------------------------------- /static/img/safari-pinned-tab.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | Created by potrace 1.14, written by Peter Selinger 2001-2017 9 | 10 | 12 | 128 | 143 | 153 | 158 | 194 | 221 | 222 | 223 | -------------------------------------------------------------------------------- /static/img/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "GitPOAP Docs", 3 | "short_name": "GitPOAP Docs", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": ".", 17 | "theme_color": "#ffffff", 18 | "background_color": "#ffffff" 19 | } 20 | -------------------------------------------------------------------------------- /static/img/undraw_docusaurus_mountain.svg: -------------------------------------------------------------------------------- 1 | 2 | Easy to Use 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /static/img/undraw_docusaurus_react.svg: -------------------------------------------------------------------------------- 1 | 2 | Powered by React 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /static/img/undraw_docusaurus_tree.svg: -------------------------------------------------------------------------------- 1 | 2 | Focus on What Matters 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // This file is not used in compilation. It is here just for a nice editor experience. 3 | "extends": "@tsconfig/docusaurus/tsconfig.json", 4 | "compilerOptions": { 5 | "baseUrl": "." 6 | } 7 | } 8 | --------------------------------------------------------------------------------