Skip to content

Commit e22778b

Browse files
committed
Merge branch 'dev' into replit-tutorials
2 parents 1ea7b0e + 5c9184b commit e22778b

File tree

294 files changed

+4560
-4437
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

294 files changed

+4560
-4437
lines changed

.all-contributorsrc

Lines changed: 156 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,8 @@
13081308
"avatar_url": "https://avatars2.githubusercontent.com/u/25974464?v=4",
13091309
"profile": "https://twitter.com/wslyvh",
13101310
"contributions": [
1311-
"content"
1311+
"content",
1312+
"infra"
13121313
]
13131314
},
13141315
{
@@ -11296,6 +11297,160 @@
1129611297
"contributions": [
1129711298
"content"
1129811299
]
11300+
},
11301+
{
11302+
"login": "sixhobbits",
11303+
"name": "Gareth Dwyer",
11304+
"avatar_url": "https://avatars.githubusercontent.com/u/2641205?v=4",
11305+
"profile": "https://dwyer.co.za",
11306+
"contributions": [
11307+
"ideas"
11308+
]
11309+
},
11310+
{
11311+
"login": "UNOFFICIALbgd",
11312+
"name": "UNOFFICIALbgd",
11313+
"avatar_url": "https://avatars.githubusercontent.com/u/71248977?v=4",
11314+
"profile": "https://github.com/UNOFFICIALbgd",
11315+
"contributions": [
11316+
"bug"
11317+
]
11318+
},
11319+
{
11320+
"login": "Codex-Bugmenot",
11321+
"name": "Codex-Bugmenot",
11322+
"avatar_url": "https://avatars.githubusercontent.com/u/59927099?v=4",
11323+
"profile": "https://github.com/Codex-Bugmenot",
11324+
"contributions": [
11325+
"bug"
11326+
]
11327+
},
11328+
{
11329+
"login": "doutv",
11330+
"name": "Jason Huang",
11331+
"avatar_url": "https://avatars.githubusercontent.com/u/20609724?v=4",
11332+
"profile": "http://huangyongjin.com",
11333+
"contributions": [
11334+
"bug"
11335+
]
11336+
},
11337+
{
11338+
"login": "adeolu98",
11339+
"name": "dCRYPT",
11340+
"avatar_url": "https://avatars.githubusercontent.com/u/39372980?v=4",
11341+
"profile": "https://github.com/adeolu98",
11342+
"contributions": [
11343+
"bug"
11344+
]
11345+
},
11346+
{
11347+
"login": "sourabupadhya123",
11348+
"name": "Sourab",
11349+
"avatar_url": "https://avatars.githubusercontent.com/u/64914231?v=4",
11350+
"profile": "https://github.com/sourabupadhya123",
11351+
"contributions": [
11352+
"security"
11353+
]
11354+
},
11355+
{
11356+
"login": "ykaravas",
11357+
"name": "ykaravas",
11358+
"avatar_url": "https://avatars.githubusercontent.com/u/6537956?v=4",
11359+
"profile": "https://github.com/ykaravas",
11360+
"contributions": [
11361+
"bug"
11362+
]
11363+
},
11364+
{
11365+
"login": "allwin199",
11366+
"name": "Prince Allwin",
11367+
"avatar_url": "https://avatars.githubusercontent.com/u/127643894?v=4",
11368+
"profile": "https://allwin-portfolio.vercel.app/",
11369+
"contributions": [
11370+
"content"
11371+
]
11372+
},
11373+
{
11374+
"login": "ryanpwaldon",
11375+
"name": "Ryan Waldon",
11376+
"avatar_url": "https://avatars.githubusercontent.com/u/12480362?v=4",
11377+
"profile": "https://github.com/ryanpwaldon",
11378+
"contributions": [
11379+
"content",
11380+
"code"
11381+
]
11382+
},
11383+
{
11384+
"login": "4everlandorg",
11385+
"name": "4EVERLAND",
11386+
"avatar_url": "https://avatars.githubusercontent.com/u/89854839?v=4",
11387+
"profile": "https://www.4everland.org",
11388+
"contributions": [
11389+
"tool"
11390+
]
11391+
},
11392+
{
11393+
"login": "iepn",
11394+
"name": "iepn",
11395+
"avatar_url": "https://avatars.githubusercontent.com/u/57232813?v=4",
11396+
"profile": "https://member.acm.org/~rhymeq",
11397+
"contributions": [
11398+
"code"
11399+
]
11400+
},
11401+
{
11402+
"login": "veridelisi",
11403+
"name": "veridelisi",
11404+
"avatar_url": "https://avatars.githubusercontent.com/u/72710290?v=4",
11405+
"profile": "https://www.ispanyol.com",
11406+
"contributions": [
11407+
"tutorial"
11408+
]
11409+
},
11410+
{
11411+
"login": "reetbatra",
11412+
"name": "Reet Batra",
11413+
"avatar_url": "https://avatars.githubusercontent.com/u/51335174?v=4",
11414+
"profile": "https://github.com/reetbatra",
11415+
"contributions": [
11416+
"bug"
11417+
]
11418+
},
11419+
{
11420+
"login": "gndelia",
11421+
"name": "Gonzalo D'Elia",
11422+
"avatar_url": "https://avatars.githubusercontent.com/u/352474?v=4",
11423+
"profile": "https://github.com/gndelia",
11424+
"contributions": [
11425+
"bug"
11426+
]
11427+
},
11428+
{
11429+
"login": "rileyannon",
11430+
"name": "Riley Annon",
11431+
"avatar_url": "https://avatars.githubusercontent.com/u/31807653?v=4",
11432+
"profile": "http://www.rileyannon.com",
11433+
"contributions": [
11434+
"bug"
11435+
]
11436+
},
11437+
{
11438+
"login": "ayofimihan",
11439+
"name": "Ogunsina Champion",
11440+
"avatar_url": "https://avatars.githubusercontent.com/u/31336254?v=4",
11441+
"profile": "http://0x13.dev",
11442+
"contributions": [
11443+
"bug"
11444+
]
11445+
},
11446+
{
11447+
"login": "ardislu",
11448+
"name": "Ardis Lu",
11449+
"avatar_url": "https://avatars.githubusercontent.com/u/29699850?v=4",
11450+
"profile": "http://ardislu.dev",
11451+
"contributions": [
11452+
"doc"
11453+
]
1129911454
}
1130011455
],
1130111456
"contributorsPerLine": 7,

.github/workflows/get-crowdin-contributors.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,5 @@ jobs:
5959
6060
- name: Create Pull Request
6161
run: |
62-
gh auth login --with-token <<< ${{ secrets.GITHUB_TOKEN }}
62+
gh auth login --with-token ${{ secrets.GITHUB_TOKEN }}
6363
gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update translation contributors from Crowdin - ${{ env.READABLE_DATE }}" --body-file pr_body.txt

.github/workflows/get-translation-progress.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,5 @@ jobs:
6060
6161
- name: Create Pull Request
6262
run: |
63-
gh auth login --with-token <<< ${{ secrets.GITHUB_TOKEN }}
63+
gh auth login --with-token ${{ secrets.GITHUB_TOKEN }}
6464
gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update translation progress from Crowdin - ${{ env.READABLE_DATE }}" --body-file pr_body.txt
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Import community events
2+
3+
on:
4+
schedule:
5+
- cron: "0 0 * * SUN" # Runs every Sunday at midnight
6+
workflow_dispatch:
7+
8+
jobs:
9+
create_pr:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@master
13+
- uses: actions/setup-node@v3
14+
with:
15+
node-version: 18
16+
- run: yarn install
17+
- run: yarn events-import
18+
env:
19+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
20+
- uses: EndBug/add-and-commit@v9
21+
with:
22+
default_author: github_actions
23+
message: "Update community events"

README.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
371371
<td align="center" valign="top" width="14.28%"><a href="https://www.yazkhoury.com"><img src="https://avatars2.githubusercontent.com/u/9094204?v=4?s=100" width="100px;" alt="Yaz Khoury"/><br /><sub><b>Yaz Khoury</b></sub></a><br /><a href="#content-YazzyYaz" title="Content">🖋</a></td>
372372
<td align="center" valign="top" width="14.28%"><a href="http://yos.io"><img src="https://avatars3.githubusercontent.com/u/1084226?v=4?s=100" width="100px;" alt="Yos Riady"/><br /><sub><b>Yos Riady</b></sub></a><br /><a href="#content-yosriady" title="Content">🖋</a></td>
373373
<td align="center" valign="top" width="14.28%"><a href="http://infura.io"><img src="https://avatars2.githubusercontent.com/u/1210802?v=4?s=100" width="100px;" alt="Andrew Cohen"/><br /><sub><b>Andrew Cohen</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Aandrewjcohen" title="Bug reports">🐛</a></td>
374-
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/wslyvh"><img src="https://avatars2.githubusercontent.com/u/25974464?v=4?s=100" width="100px;" alt="Wesley van Heije"/><br /><sub><b>Wesley van Heije</b></sub></a><br /><a href="#content-wslyvh" title="Content">🖋</a></td>
374+
<td align="center" valign="top" width="14.28%"><a href="https://twitter.com/wslyvh"><img src="https://avatars2.githubusercontent.com/u/25974464?v=4?s=100" width="100px;" alt="Wesley van Heije"/><br /><sub><b>Wesley van Heije</b></sub></a><br /><a href="#content-wslyvh" title="Content">🖋</a> <a href="#infra-wslyvh" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
375375
</tr>
376376
<tr>
377377
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gr0uch0dev"><img src="https://avatars1.githubusercontent.com/u/17497722?v=4?s=100" width="100px;" alt="gr0uch0dev"/><br /><sub><b>gr0uch0dev</b></sub></a><br /><a href="#content-gr0uch0dev" title="Content">🖋</a></td>
@@ -1757,6 +1757,29 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
17571757
<td align="center" valign="top" width="14.28%"><a href="https://github.com/acceptacross"><img src="https://avatars.githubusercontent.com/u/150119116?v=4?s=100" width="100px;" alt="acceptacross"/><br /><sub><b>acceptacross</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=acceptacross" title="Documentation">📖</a></td>
17581758
<td align="center" valign="top" width="14.28%"><a href="https://github.com/pdelagrave"><img src="https://avatars.githubusercontent.com/u/17990895?v=4?s=100" width="100px;" alt="Pierre Delagrave"/><br /><sub><b>Pierre Delagrave</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Apdelagrave" title="Bug reports">🐛</a></td>
17591759
<td align="center" valign="top" width="14.28%"><a href="https://medium.com/@blainemalone01"><img src="https://avatars.githubusercontent.com/u/15608778?v=4?s=100" width="100px;" alt="Blaine Malone"/><br /><sub><b>Blaine Malone</b></sub></a><br /><a href="#content-blmalone" title="Content">🖋</a></td>
1760+
<td align="center" valign="top" width="14.28%"><a href="https://dwyer.co.za"><img src="https://avatars.githubusercontent.com/u/2641205?v=4?s=100" width="100px;" alt="Gareth Dwyer"/><br /><sub><b>Gareth Dwyer</b></sub></a><br /><a href="#ideas-sixhobbits" title="Ideas, Planning, & Feedback">🤔</a></td>
1761+
</tr>
1762+
<tr>
1763+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/UNOFFICIALbgd"><img src="https://avatars.githubusercontent.com/u/71248977?v=4?s=100" width="100px;" alt="UNOFFICIALbgd"/><br /><sub><b>UNOFFICIALbgd</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3AUNOFFICIALbgd" title="Bug reports">🐛</a></td>
1764+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Codex-Bugmenot"><img src="https://avatars.githubusercontent.com/u/59927099?v=4?s=100" width="100px;" alt="Codex-Bugmenot"/><br /><sub><b>Codex-Bugmenot</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3ACodex-Bugmenot" title="Bug reports">🐛</a></td>
1765+
<td align="center" valign="top" width="14.28%"><a href="http://huangyongjin.com"><img src="https://avatars.githubusercontent.com/u/20609724?v=4?s=100" width="100px;" alt="Jason Huang"/><br /><sub><b>Jason Huang</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Adoutv" title="Bug reports">🐛</a></td>
1766+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/adeolu98"><img src="https://avatars.githubusercontent.com/u/39372980?v=4?s=100" width="100px;" alt="dCRYPT"/><br /><sub><b>dCRYPT</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Aadeolu98" title="Bug reports">🐛</a></td>
1767+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sourabupadhya123"><img src="https://avatars.githubusercontent.com/u/64914231?v=4?s=100" width="100px;" alt="Sourab"/><br /><sub><b>Sourab</b></sub></a><br /><a href="#security-sourabupadhya123" title="Security">🛡️</a></td>
1768+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ykaravas"><img src="https://avatars.githubusercontent.com/u/6537956?v=4?s=100" width="100px;" alt="ykaravas"/><br /><sub><b>ykaravas</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Aykaravas" title="Bug reports">🐛</a></td>
1769+
<td align="center" valign="top" width="14.28%"><a href="https://allwin-portfolio.vercel.app/"><img src="https://avatars.githubusercontent.com/u/127643894?v=4?s=100" width="100px;" alt="Prince Allwin"/><br /><sub><b>Prince Allwin</b></sub></a><br /><a href="#content-allwin199" title="Content">🖋</a></td>
1770+
</tr>
1771+
<tr>
1772+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ryanpwaldon"><img src="https://avatars.githubusercontent.com/u/12480362?v=4?s=100" width="100px;" alt="Ryan Waldon"/><br /><sub><b>Ryan Waldon</b></sub></a><br /><a href="#content-ryanpwaldon" title="Content">🖋</a> <a href="https://github.com/ethereum/ethereum-org-website/commits?author=ryanpwaldon" title="Code">💻</a></td>
1773+
<td align="center" valign="top" width="14.28%"><a href="https://www.4everland.org"><img src="https://avatars.githubusercontent.com/u/89854839?v=4?s=100" width="100px;" alt="4EVERLAND"/><br /><sub><b>4EVERLAND</b></sub></a><br /><a href="#tool-4everlandorg" title="Tools">🔧</a></td>
1774+
<td align="center" valign="top" width="14.28%"><a href="https://member.acm.org/~rhymeq"><img src="https://avatars.githubusercontent.com/u/57232813?v=4?s=100" width="100px;" alt="iepn"/><br /><sub><b>iepn</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=iepn" title="Code">💻</a></td>
1775+
<td align="center" valign="top" width="14.28%"><a href="https://www.ispanyol.com"><img src="https://avatars.githubusercontent.com/u/72710290?v=4?s=100" width="100px;" alt="veridelisi"/><br /><sub><b>veridelisi</b></sub></a><br /><a href="#tutorial-veridelisi" title="Tutorials">✅</a></td>
1776+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/reetbatra"><img src="https://avatars.githubusercontent.com/u/51335174?v=4?s=100" width="100px;" alt="Reet Batra"/><br /><sub><b>Reet Batra</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Areetbatra" title="Bug reports">🐛</a></td>
1777+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gndelia"><img src="https://avatars.githubusercontent.com/u/352474?v=4?s=100" width="100px;" alt="Gonzalo D'Elia"/><br /><sub><b>Gonzalo D'Elia</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Agndelia" title="Bug reports">🐛</a></td>
1778+
<td align="center" valign="top" width="14.28%"><a href="http://www.rileyannon.com"><img src="https://avatars.githubusercontent.com/u/31807653?v=4?s=100" width="100px;" alt="Riley Annon"/><br /><sub><b>Riley Annon</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Arileyannon" title="Bug reports">🐛</a></td>
1779+
</tr>
1780+
<tr>
1781+
<td align="center" valign="top" width="14.28%"><a href="http://0x13.dev"><img src="https://avatars.githubusercontent.com/u/31336254?v=4?s=100" width="100px;" alt="Ogunsina Champion"/><br /><sub><b>Ogunsina Champion</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Aayofimihan" title="Bug reports">🐛</a></td>
1782+
<td align="center" valign="top" width="14.28%"><a href="http://ardislu.dev"><img src="https://avatars.githubusercontent.com/u/29699850?v=4?s=100" width="100px;" alt="Ardis Lu"/><br /><sub><b>Ardis Lu</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=ardislu" title="Documentation">📖</a></td>
17601783
</tr>
17611784
</tbody>
17621785
</table>

docs/header-ids.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Custom header IDs for markdown documents
2+
3+
Html ID attributes are used to create links to specific sections of a document. In markdown, **custom header IDs** should be assigned to all header lines (lines that begin with one-or-more hash marks, `#`).
4+
5+
## Markdown syntax
6+
7+
A custom heading ID should follow these rules:
8+
9+
- Placed at the end of a heading line, preceded by a space, followed by a line break
10+
- Wrapped in curly braces
11+
- Starts with a hash-mark
12+
- Uses kebab-case string
13+
- Unique for the current page
14+
15+
For example:
16+
17+
```markdown
18+
## My heading {#my-heading}
19+
20+
### A subheading {#a-subheading}
21+
22+
#### Or a longer title that can be shortened {#long-heading}
23+
```
24+
25+
Note that for short headers, simply lowercasing and using hyphens instead of spaces is sufficient. For longer headers, a shortened concise version of the header is encouraged. Must not repeat the same ID on the same page.
26+
27+
## How are these used?
28+
29+
When these headers are rendered, they come with a link icon attached to it that can be used to quickly link to that section of the document.
30+
31+
Extending the above example, if we wanted to link to the `A subheading` section of the above document (for example living at path `/docs`), you could use the link`/docs#a-subheading` to link directly to that section.
32+
33+
See a live example on ethereum.org: [https://ethereum.org/en/developers/docs/blocks/#block-anatomy](https://ethereum.org/en/developers/docs/blocks/#block-anatomy)
34+
35+
## When to use custom header IDs
36+
37+
### English content
38+
39+
These should be created for header on every new English markdown document.
40+
41+
### Translated content
42+
43+
English files are uploaded to Crowdin for translation. Header ID's should be _inherited_ from the English version, and remain unchanged during translation.
44+
45+
This is to ensure that the translated content can be linked to from other documents and external links, without breaking the path. This is similar to why path and filenames are not translated, but remain in English to simplify linking and referencing.
46+
47+
See a live example on ethereum.org: [https://ethereum.org/es/developers/docs/blocks/#block-anatomy](https://ethereum.org/en/developers/docs/blocks/#block-anatomy)
48+
49+
Notice the header ID is still in English (`#block-anatomy`), but links to the Spanish (`/es/`) version of the site, at the correct section.
50+
51+
## When are these not needed?
52+
53+
Markdown files in the repo `/docs` (such as this one) do not require custom header IDs, as they are not yet displayed on the website, and do not have translated versions.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"chromatic": "chromatic --project-token fee8e66c9916",
1818
"crowdin-clean": "rm -rf .crowdin && mkdir .crowdin",
1919
"crowdin-import": "ts-node src/scripts/crowdin-import.ts",
20+
"events-import": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/events-import.ts",
2021
"markdown-checker": "ts-node -O '{ \"module\": \"commonjs\" }' src/scripts/markdownChecker.ts"
2122
},
2223
"dependencies": {
@@ -27,7 +28,6 @@
2728
"@emotion/styled": "^11.11.0",
2829
"@radix-ui/react-navigation-menu": "^1.1.4",
2930
"@socialgouv/matomo-next": "^1.8.0",
30-
"clipboard": "^2.0.11",
3131
"embla-carousel-react": "^7.0.0",
3232
"ethereum-blockies-base64": "^1.0.2",
3333
"focus-trap-react": "^10.2.3",
@@ -37,7 +37,7 @@
3737
"i18next": "^23.6.0",
3838
"lodash.merge": "^4.6.2",
3939
"lodash.shuffle": "^4.2.0",
40-
"luxon": "^3.4.3",
40+
"lodash.union": "^4.6.0",
4141
"next": "13.4.8",
4242
"next-i18next": "^14.0.3",
4343
"next-mdx-remote": "^3.0.8",
@@ -67,7 +67,6 @@
6767
"@storybook/testing-library": "0.2.2",
6868
"@svgr/webpack": "^8.1.0",
6969
"@types/hast": "^3.0.0",
70-
"@types/luxon": "^3.3.2",
7170
"@types/node": "^20.4.2",
7271
"@types/react": "^18.2.15",
7372
"@types/react-dom": "^18.2.7",

public/content/community/get-involved/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Start by reading about the ethereum.org mission and values in our [code of condu
1616
- [Find a bounty on Gitcoin](https://gitcoin.co/), work on a small or large technical issue, earn crypto!
1717
- Attend an [ETHGlobal](http://ethglobal.co/) hackathon near you!
1818
- Check out [projects related to your area of expertise or programming language of choice](/developers/docs/programming-languages/)
19-
- Watch or participate in the [Core Dev calls](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w)
19+
- Watch or participate in the [Core Dev calls](https://www.youtube.com/@EthereumProtocol)
2020
- [Ecosystem Support Program's wishlist](https://esp.ethereum.foundation/wishlist/) - tooling, documentation, and infrastructure areas where the Ethereum Ecosystem Support Program is actively seeking grant applications
2121
- [Web3Bridge](https://www.web3bridge.com/) - join the aspiring web3 community in their initiative to identify, train, and support hundreds of developers and community members throughout Africa
2222
- Join the [Ethereum Cat Herders Discord](https://discord.com/invite/Nz6rtfJ8Cu)

0 commit comments

Comments
 (0)