We welcome contributions to ZK-eSIM! Whether you want to improve the ZK circuits, backend server logic, client simulator, or Web3 integration, your contributions help make this project better and more
1. Fork the Repository
Start by creating your own copy of the repository:
# Go to GitHub and fork the repo# Then clone your fork locallygitclonehttps://github.com/YOUR_USERNAME/zk-esim.gitcdzk-esim
Tip: Always work on your fork to avoid conflicts with the main repository.
2. Create a New Branch
For each feature or bug fix, create a new branch:
gitcheckout-bfeature-name
Example:
gitcheckout-bimprove-zk-verifier
This keeps your work isolated and makes Pull Requests cleaner.
3. Write Code and Tests
Implement your feature or fix
Write unit tests for server, client, or ZK circuits
Test locally to ensure everything works
Client Example (TypeScript):
Server Example (Node.js):
ZK Circuit Example (Noir):
4. Commit Your Changes
Follow best practices for commit messages:
Use feat for new features
Use fix for bug fixes
Keep messages clear and concise
5. Push Branch to Your Fork
6. Open a Pull Request
Go to the main repository on GitHub
Click Compare & Pull Request
Provide a clear description of what your feature/fix does
Mention any related issues or discussions
Areas Where Contributions Are Welcome
ZK Circuits: Improve efficiency, add new proof flows, optimize performance
Server Verification Logic: Enhance backend proof verification, add caching, or logging
eSIM Simulator: Add new UI flows, dashboard improvements, or better user feedback
Web3 Integration: Connect proofs to NFT/tokens, test on-chain verification, or DePIN networks
Documentation: Improve GitBook pages, add examples, or clarify workflows
Tips for Contributors
Test all changes locally before submitting
Keep commits atomic and descriptive
Follow the existing TypeScript/Noir style conventions
Document new endpoints, proof structures, and workflows