This is the repo for the ethereum.org website, a resource for the Ethereum community. The purpose of the site is to βBe the best portal to Ethereum for our growing global community" - read more about what this means here.
ethereum.org is improved and changed over time through the contributions of community members who submit content, give feedback, or volunteer their time to managing its evolution. If youβre interested in helping to improve ethereum.org, find out how to contribute.
If you're looking for the Ethereum blockchain itself, there is no single repo. Instead, Ethereum has multiple implementations of the protocol written in different programming languages for security and diversity. Check out the different implementations
- How to contribute
- Translation Program
- The ethereum.org website stack
- Website conventions / best practices
This project follows the all-contributors specification. Contributions of any kind are welcome!
- Create a new issue.
- Comment on the issue (if you'd like to be assigned to it) - that way our team can assign the issue to you.
- If you're not sure, here's how to fork the repo.
If you're ready to contribute and create your PR, it will help to set up a local environment so you can see your changes.
-
Clone your fork
If this is your first time forking our repo, this is all you need to do for this step:
$ git clone git@github.com:[your_github_handle]/ethereum-org-website.git && cd ethereum-org-website
If you've already forked the repo, you'll want to ensure your fork is configured and that it's up to date. This will save you the headache of potential merge conflicts.
$ git remote add upstream https://github.com/ethereum/ethereum-org-website.git
To sync your fork with the latest changes:
$ git checkout dev
$ git fetch upstream
$ git merge upstream/dev
- Install dependencies
We recommend using a node manager to use multiple node versions in your system. We use Volta. In case you don't use a manager or you use nvm
, you can check the currently supported versions under the "volta"
section on our package.json
file.
$ yarn
- Create new branch for your changes
$ git checkout -b new_branch_name
- Start developing!
$ yarn start
- Open this directory in your favorite text editor / IDE, and see your changes live by visiting
localhost:8000
from your browser - Pro Tip:
- Explore scripts within
package.json
for more build options - Get faster local builds by building only one language. E.g. in your
.env
file, setGATSBY_BUILD_LANGS=en
to build the content only in English
- Explore scripts within
By default the script will build all the languages (complete list in data/translations.json
) and will ignore the /docs
and /tutorials
folders. To control this behavior you can play with the GATSBY_BUILD_LANGS
and IGNORE_CONTENT
env variables. Check out .env.example
to read more about them.
- Commit and prepare for pull request (PR). In your PR commit message, reference the issue it resolves (see how to link a commit message to an issue using a keyword).
$ git commit -m "brief description of changes [Fixes #1234]"
- Push to your GitHub account
$ git push
There may be times where you develop features that make external API requests to other services. For these we write lambda functions to obfuscate API keys.
To use an existing function locally you don't need to do anything. Just check that you have set the necessary ENV variables in the .env
file.
To create a new function, you will need to create two files:
- One in
src/lambdas
where the logic will live. These are the ones that will be deployed to Netlify. These functions follow this format. - One in
src/api
that will be just a wrapper around the previous one in order to be compatible with Gatsby functions. More on the Gatbsy docs for the format they follow.
Typically, you will develop and test functions in the Gatsby context, by running yarn start
.
In case you want to test them as if you were in a Netlify env, you can install the Netlify CLI and run netlify dev --framework=gatsby
.
- After your changes are committed to your GitHub fork, submit a pull request (PR) to the
dev
branch of theethereum/ethereum-org-website
repo - In your PR description, reference the issue it resolves (see linking a pull request to an issue using a keyword)
- ex.
Updates out of date content [Fixes #1234]
- ex.
- Gatsby Cloud (our hosting service for build previews) deploys all PRs to a publicly accessible preview URL, e.g.:
- Confirm your GC preview deploy looks & functions as expected
- Why not say hi and draw attention to your PR in our discord server?
- The website team reviews every PR
- See how decisions are made on content changes
- Acceptable PRs will be approved & merged into the
dev
branch
master
is continually synced to Netlify and will automatically deploy new commits to ethereum.org- The website team will periodically merge
dev
intomaster
(typically multiple times per week) - You can view the history of releases, which include PR highlights
The Proof of Attendance Protocol is a dapp that distributes badges in the form of ERC-721 tokens to prove you participated in an event. More on POAPs.
-
If you have committed any changes in 2021 so far that were merged into our repo, you have a POAP waiting!
-
This includes our dedicated translators on Crowdin
-
π To claim your Contributor POAP, join our Discord server and paste a link to your contribution in the #poaps-π channel
-
A member of our team will verify the request and DM you with a personalized link to claim your own freshly minted POAP collectible!
-
To help with verification we request GitHub contributors connect their GitHub account with their Discord account (Discord > Settings > Connections > GitHub). Crowdin contributors will be verified directly through Crowdin by our team.
-
If you haven't contributed yet and would like to earn a POAP to show your loyalty to the Ethereum space, head over to the issues tab to get started!
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
We have a space to discuss all things ethereum.org β share your ideas or just say hi over on Discord.