Thank you for your interest in BetterDev. This project is open source and we welcome contributions from the community.
| Maintainer | GitHub |
|---|---|
| Frankeze | @FrankezeCode |
| Ruth | @BetterRuth |
The repository is hosted under the BetterDevOrg organization.
This project follows our Code of Conduct. By participating, you agree to uphold it.
- Report bugs or suggest features via GitHub Issues
- Improve documentation
- Fix bugs or add tests
- Work on issues labeled
good first issue(first-time contributors to this repo — see below) - Explore internship project tracks
We want contributions to stay transparent, fair, and welcoming — especially for newcomers.
Issues labeled good first issue are reserved for first-time contributors to this repository (no merged PRs yet). If you've already contributed here, please choose issues without that label, or help with reviews and docs.
- Find an open issue you'd like to work on.
- Comment on the issue: "I'd like to work on this."
- A maintainer will assign you for a 48-hour window.
- Within 48 hours, open a PR or draft PR and link it in the issue.
- If no PR is linked in time, the issue may be unassigned and opened to others.
Please work on one active issue at a time. Finish or release your claim before starting another.
Opening a PR without claiming the issue first is discouraged — it can lead to duplicate work.
- If multiple PRs exist for the same issue, maintainers will typically review the first valid PR that meets the acceptance criteria.
- To avoid wasted effort, always comment to claim before you start coding.
If someone else is already assigned or has an open PR for an issue, please do not open a competing PR for the same scope. Check the issue comments and linked PRs first.
-
Fork the repository and clone your fork:
git clone https://github.com/BetterDevOrg/protocol.git cd protocol -
Install dependencies:
npm install
-
Copy the environment template and fill in values locally:
cp .env.example .env.local
Never commit
.env.localor any secrets. -
Start the development server:
npm run dev
| Command | Purpose |
|---|---|
npm run dev |
Next.js dev server |
npm run build |
Production build |
npm run lint |
ESLint |
npm run test:unit |
Run TypeScript unit tests |
npm run contracts:compile |
Compile Solidity contracts |
npm run contracts:test |
Run Hardhat tests |
- Comment on the issue to claim it (see Issue assignment & fairness), then open your PR within 48 hours. For small drive-by fixes (typos), a linked issue is still appreciated but not always required.
- Create a branch from
main:feat/short-descriptionorfix/short-description. - Keep pull requests focused — one feature or fix per PR.
- Run
npm run buildand, for contract changes,npm run contracts:test. - Fill out the PR description with what changed and how to test it.
- Match existing patterns in the codebase.
- Prefer minimal, focused diffs over large refactors.
- Do not add
NEXT_PUBLIC_prefixes to secrets or private keys.
Early contributors shown on the landing page carousel are defined in src/lib/early-contributors.ts.
-
Open
src/lib/early-contributors.ts. -
Add a new entry to the
EARLY_CONTRIBUTORSarray. Each entry has two fields:name— the display name shown on the carousel cardgithub— the contributor's GitHub username (without the@)
export const EARLY_CONTRIBUTORS: EarlyContributor[] = [ // ...existing entries... { name: "Jane Doe", github: "janedoe" }, ];
-
That's it — no image upload is needed. Avatars load automatically from GitHub's CDN via the
githubAvatarUrl()helper, which builds anhttps://avatars.githubusercontent.com/<username>URL from thegithubfield.
avatars.githubusercontent.commust stay allowed in the image configuration innext.config.mjs. Do not remove it, or carousel avatars will stop loading.- The new avatar appears on the carousel after the change is deployed.
If you discover a security vulnerability, do not open a public issue. Contact the maintainers directly for responsible disclosure.
Open a GitHub Issue with the question label, or reach out to a maintainer.
By contributing, you agree that your contributions will be licensed under the MIT License.