Thank you for taking the time to contribute! ❤️
All types of contributions are encouraged and valued. Please refer to the Table of Contents for various ways you can help and details on how the project handles them. Reading the relevant section before contributing will make it easier for the maintainers and smooth out the experience for everyone involved. The community looks forward to your contributions.
Tip
If you like the project but don't have time to contribute, that's totally fine! There are other ways to show your support:
- Star the project
- Tweet about it
- Mention this project in your project's readme
- Share it with your friends and colleagues
- Contributing to Mandelbrot.site
This project and everyone participating in it are governed by the Mandelbrot.site Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
Before asking a question, please search for existing issues that might help you. If you find a relevant issue but still need clarification, you can comment there. It's also advisable to search the internet first.
If you still have a question:
- Open a new issue.
- Provide as much context as possible.
- Include project and platform versions (Node.js, npm, etc.) as relevant.
We will address your issue as soon as possible.
A good bug report shouldn't leave others needing more information. Please investigate carefully, collect details, and describe the issue thoroughly. Before submitting, please:
- Ensure you're using the latest version.
- Determine if your issue is indeed a bug and not a misconfiguration or environment issue. If you need support, check this section.
- Check the bug tracker to see if the issue has already been reported.
- Search the internet (including Stack Overflow) to see if others have encountered the issue.
- Collect relevant information:
- Stack trace or error messages
- Operating system, platform, and version (e.g., Windows 10 x64)
- Versions of Node.js, npm, and other relevant software
- Steps to reproduce the issue reliably
- Any relevant input and output
We use GitHub issues to track bugs and errors. If you encounter an issue:
- Open a new issue.
- Describe the expected behavior and the actual behavior.
- Provide as much context as possible, including steps to reproduce the issue.
- Include the information you collected above.
Once filed:
- The team will label the issue accordingly.
- A team member will try to reproduce the issue. If reproduction steps are missing or unclear, we may ask for more details.
- If the issue is confirmed, it will be labeled appropriately and left to be implemented.
This section guides you through submitting an enhancement suggestion for Mandelbrot.site, including completely new features and minor improvements to existing functionality.
- Ensure you're using the latest version.
- Search the issues to see if the enhancement has already been suggested. If so, comment on the existing issue.
- Consider whether your idea fits within the scope of the project. Make a strong case for your suggestion.
Enhancement suggestions are tracked as GitHub issues.
- Use a clear and descriptive title.
- Provide a detailed description of the enhancement.
- Describe the current behavior and explain the desired behavior.
- Include screenshots or GIFs if helpful.
- Explain why this enhancement would be useful to most users.
Important
By contributing to this project, you agree that you have authored 100% of the content, have the necessary rights to the content, and that the content you contribute may be provided under the project license.
Before running the project, you'll need to fork and clone the repository:
-
Fork the repository on GitHub.
-
Clone your fork to your local machine:
git clone https://github.com/your-username/Mandelbrot.site.git
Now you can run the project and start making changes to the code! We recommend using a modern code editor like Visual Studio Code, IntelliJ IDEA, or Neovim.
Once you've cloned the repository, you can begin working on the project. This project requires Node.js to be installed on your system. Check the .nvmrc
file for the recommended Node.js version.
Run all commands from within the client
directory:
- Install dependencies:
npm install
- Build the project:
npm run build
- Start development server:
npm run dev
- Run code quality checks:
- Type errors:
npm run typecheck
- Linting:
npm run lint
- Formatting:
npm run format
- Rust tests:
npm run test
- Type errors:
- Preview production build:
npm run serve
- Clean caches and build artifacts:
npm run clean
Below is an overview of important files and directories to help you navigate and understand the codebase.
- Rust Mandelbrot set implementation
- Mandelbrot set image generator:
mandelbrot/src/lib.rs
- Unit tests:
mandelbrot/src/lib_test.rs
- Mandelbrot set image generator:
- Front-end logic and UI
- Tile mapping and input handling:
client/js
- UI structure:
client/html
- Styling:
client/css
- Blog content:
client/blog
- Tile mapping and input handling:
-
Make your changes and commit them with clear commit messages:
git add . git commit -m "Add feature XYZ"
-
Push your changes to your fork:
git push origin main
-
Open a pull request from your branch to the main repository's
main
branch. -
In the pull request, provide a clear description of your changes and any relevant context.
-
A maintainer will review your PR and may request changes or provide feedback.
-
Once you've addressed all of the feedback, kick back and wait for your PR to be merged! 🎉
For detailed guidance, see Creating a Pull Request.