Code of Conduct
This project follows a standard code of conduct. By participating, you agree to:- Be respectful and constructive in all interactions
- Welcome newcomers and help them get oriented
- Focus on the work, not the person
- Accept feedback gracefully and give it kindly
- Report unacceptable behavior to the project maintainers
How to Contribute
1. Fork and Clone
2. Create a Branch
feature/module-15-privacy-nft— new module or major featurefix/module-07-typo-in-exercise— bug fix or correctiondocs/update-gas-guide— documentation improvementchore/update-dependencies— maintenance task
3. Make Your Changes
Follow the Style Guidelines below.4. Test Your Changes
5. Submit a Pull Request
Push your branch and open a pull request against themain branch.
Types of Contributions
Content Improvements
| Type | Description | Example |
|---|---|---|
| Corrections | Fix factual errors, typos, broken links | Fixing an incorrect gas cost |
| Clarifications | Improve unclear explanations | Rewriting a confusing paragraph about ACL |
| Updates | Reflect API or tooling changes | Updating code for a new fhEVM version |
New Content
| Type | Description | Requirements |
|---|---|---|
| Exercises | New hands-on coding exercises | Must include problem statement, starter code, solution, and tests |
| Examples | New code examples | Must compile, follow style guide, include comments |
| Quiz Questions | New assessment questions | Must include answer key and explanation |
| Modules | Entirely new modules | Discuss in an issue first; follow module template |
Infrastructure
| Type | Description |
|---|---|
| Tooling | Improvements to build scripts, test utilities, CI/CD |
| Templates | New or improved module/exercise templates |
| Translations | Translating content to other languages |
Development Setup
Prerequisites
- Node.js 20+
- npm 10+ or pnpm 9+
- Git 2.40+
Installation
Project Structure
When adding or modifying content, follow the established directory structure:Submitting Changes
Pull Request Template
When opening a PR, include:Commit Messages
Write clear, descriptive commit messages:feat:— new feature or contentfix:— correction or bug fixdocs:— documentation onlychore:— maintenance, dependenciesrefactor:— restructuring without changing behaviortest:— adding or fixing tests
Style Guidelines
Solidity Code
Use the new FHEVM API throughout all examples:
- Library:
FHE(notTFHE) - Import:
@fhevm/solidity/lib/FHE.sol - Config:
ZamaEthereumConfigfrom@fhevm/solidity/config/ZamaConfig.sol - External inputs:
externalEuint32(noteinput) - Conversion:
FHE.fromExternal(value, proof)
pragma solidity ^0.8.24; unless there is a specific reason for a different version.
Formatting: Use consistent 4-space indentation. Follow standard Solidity style conventions.
Comments: Add NatSpec comments to all public/external functions.
Markdown
- Use ATX-style headers (
#,##,###) - Use fenced code blocks with language identifiers
- Use tables for structured data
- Use relative links for internal references
- One sentence per line in source (for cleaner diffs)
- Avoid emojis in instructional content
Exercises
- Every exercise must have a clear problem statement
- Provide starter code that compiles but is incomplete
- Include a working solution
- Include at least one test case for the solution
- Difficulty should be clearly stated (Beginner / Intermediate / Advanced)
- Estimated completion time should be realistic
Review Process
- Automated Checks: PRs must pass CI (compilation, linting, link checks)
- Maintainer Review: At least one maintainer will review within 5 business days
- Feedback: Reviewers may request changes. Address all comments before merging
- Merge: Maintainers merge approved PRs using squash-and-merge
What Reviewers Look For
- Accuracy: Is the technical content correct?
- Clarity: Will students understand this?
- Completeness: Are all required files present?
- Consistency: Does it follow the style guide and use the correct API?
- Tested: Does the code compile and work?
Reporting Issues
Found a bug, inaccuracy, or have a suggestion? Open a GitHub issue with:- Title: Clear, concise description
- Description: What is wrong or what you suggest
- Location: Which file/module is affected
- Expected vs Actual: What should be there vs what is there
- Screenshots: If applicable
bug— something is wrongenhancement— improvement to existing contentnew-content— request for new materialquestion— need clarificationgood-first-issue— suitable for new contributors