First off, thank you for considering contributing to zk.ninja! It's people like you that make zk.ninja such a great tool for learning cryptography.
We're all here to learn, create, and help each other. So let's keep it simple: be respectful, be patient, and be helpful. Treat others as you'd like to be treated. If you see behavior that doesn't align with these principles, please reach out to the project maintainers. Let's work together to keep zk.ninja a positive and inclusive space for everyone.
- Make sure you have a GitHub account
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment (instructions in README.md)
- Ensure the bug was not already reported by searching on GitHub under Issues
- If you're unable to find an open issue addressing the problem, open a new one
- Open a new issue with a clear title and detailed description
- Create a new branch from
main
for your feature or bugfix - Make your changes
- Add or update relevant tests
- Ensure the test suite passes
- Make sure your code lints
- Issue a pull request
Since our platform renders content from markdown files:
- Navigate to the appropriate content directory
- Create or modify the relevant markdown file
- Follow the content style guide
- Submit a pull request with your changes
We follow the Conventional Commits specification. This leads to more readable messages that are easy to follow when looking through the project history.
- Use the format:
<type>(<scope>): <subject>
<type>
must be one of the following:feat
: A new featurefix
: A bug fixdocs
: Documentation only changesstyle
: Changes that do not affect the meaning of the code (white-space, formatting, etc)refactor
: A code change that neither fixes a bug nor adds a featureperf
: A code change that improves performancetest
: Adding missing tests or correcting existing testschore
: Changes to the build process or auxiliary tools and libraries such as documentation generation
<scope>
is optional and represents the section of the codebase<subject>
is a succinct description of the change:- Use the imperative, present tense: "change" not "changed" nor "changes"
- Don't capitalize the first letter
- No dot (.) at the end
Examples:
feat(quiz): add AI-generated question feature
fix(grading): correct scoring algorithm for open-ended questions
docs(readme): update installation instructions
For detailed guidelines on creating and formatting content for zk.ninja, please refer to our Content Guidelines. This comprehensive guide covers:
- Directory structure and file naming conventions
- Content formatting and Markdown usage
- Quiz creation and different quiz types
- Writing style and best practices
- Cryptography-specific guidelines
Please review these guidelines before contributing any educational content or quizzes to ensure consistency and quality across the platform.