Thank you for your interest in REOT (Reverse Engineering Online Toolkit)! We welcome all forms of contributions, including but not limited to:
- Submitting bug reports
- Proposing new features
- Improving documentation
- Submitting code fixes or new features
- Adding new language support
- Official Website: https://reot.dev
- GitHub Pages: https://evil0ctal.github.io/Reverse-Engineering-Online-Toolkit
- Modern browser (Chrome, Firefox, Safari, Edge)
- Git
- Docker (recommended) or Node.js
Since this project is a SPA (Single Page Application), it requires server support for route redirection.
# Clone the repository
git clone https://github.com/Evil0ctal/Reverse-Engineering-Online-Toolkit.git
cd Reverse-Engineering-Online-Toolkit
# Method 1: Use Docker Compose (recommended, supports hot reload)
docker-compose up -d
# Method 2: Use Node.js serve (with SPA support)
npx serve -s -l 8080
# Method 3: Use npm scripts
npm run serve
# Visit http://localhost:8080Note: Simple HTTP servers (like
python -m http.server) don't support SPA routing. Directly accessing tool page URLs will result in 404 errors.
- Make sure the bug hasn't been reported yet by searching Issues
- If no related Issue exists, create a new one
- Provide detailed reproduction steps, expected behavior, and actual behavior
- If possible, provide screenshots or screen recordings
- First create an Issue to discuss your idea
- Get approval from maintainers before starting development
- Follow the code standards and submission process below
git clone https://github.com/YOUR_USERNAME/Reverse-Engineering-Online-Toolkit.git
cd Reverse-Engineering-Online-Toolkitgit checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fixFollow the project's code standards:
- JavaScript: Use ESLint standard configuration
- CSS: Follow BEM naming convention
- HTML: Use semantic tags
Follow the Conventional Commits specification:
git commit -m "feat(encoding): add Base64 URL-safe encoding support"
git commit -m "fix(hashing): fix MD5 calculation for Chinese characters"
git commit -m "docs: update README installation instructions"Commit types:
feat: New featurefix: Bug fixdocs: Documentation updatestyle: Code format adjustment (no functional changes)refactor: Code refactoringtest: Testing relatedchore: Build/tooling related
git push origin feature/your-feature-nameThen create a Pull Request on GitHub.
tools/<category>/<tool-name>/
├── <tool-name>.html # Tool page (named by tool ID)
├── <tool-name>.js # Core logic
├── <tool-name>.css # Tool styles (optional)
├── README.md # Tool documentation
└── locales/ # Tool-specific i18n (recommended)
├── zh-CN.json
└── en-US.json
Important: Tool files must be named by tool ID (e.g.,
base64.html,base64.js), notindex.html. This prevents returning HTML fragments when directly accessing URLs.
- Create tool directory
- Implement HTML page (use data-i18n attributes for internationalization)
- Implement JavaScript logic (use IIFE pattern)
- Add internationalization support (see detailed instructions below)
- Register tool in
assets/js/tools-registry.js - Write tool documentation
For detailed templates, refer to the "How to Contribute New Features/Tools" section in README_EN.md.
REOT uses a modular internationalization architecture where tool translations are divided into two parts:
1. Root locales (required) - For sidebar and search
Add tool title and description to the tools object in locales/zh-CN.json and locales/en-US.json:
{
"tools": {
"my-tool": {
"title": "My Tool",
"description": "Tool description"
}
}
}2. Tool directory locales (recommended) - Detailed tool translations
Create a locales/ folder under the tool directory for tool-specific translations:
tools/<category>/<tool-name>/locales/
├── zh-CN.json
└── en-US.json
Tool locales file format (no tools.my-tool prefix needed):
{
"title": "My Tool",
"description": "Tool description",
"placeholder": "Enter content",
"customOption": "Custom option"
}The system will automatically merge tool locales into the tools.<tool-id> namespace.
Advantages:
- Tools are fully self-contained, easy to add/remove
- On-demand loading, improves performance
- Avoids Git merge conflicts
- Copy
locales/en-US.jsonto a new file (e.g.,locales/ja-JP.json) - Translate all text
- Add the new language code to the
supportedLocalesarray inassets/js/i18n.js - Submit PR
- Find the
locales/folder under the tool directory (e.g.,tools/formatting/json/locales/) - Copy
en-US.jsonand rename to the new language code - Translate all text
- Submit PR
Note: Tool translations are optional. If a tool doesn't have a translation file for a language, the system will fall back to
zh-CN.
/**
* Function description
* @param {string} input - Input parameter description
* @returns {string} - Return value description
*/
function myFunction(input) {
'use strict';
// Implementation
}/* Block */
.tool-container {}
/* Element */
.tool-container__header {}
.tool-container__input {}
/* Modifier */
.tool-container--dark {}
.tool-container__input--error {}<!-- Use semantic tags -->
<section class="tool-section">
<header class="tool-header">
<h1 data-i18n="tools.my-tool.title">Title</h1>
</header>
<main class="tool-main">
<!-- Content -->
</main>
</section>Before submitting a PR, please ensure:
- All existing features work correctly
- New features are tested in major browsers
- Responsive design displays correctly at different screen sizes
- Internationalized text displays correctly
- Respect all contributors
- Maintain friendly and professional communication
- Accept constructive criticism
- Focus on the best interests of the project
By contributing code to this project, you agree that your contributions will be licensed under the Apache License 2.0.
If you have any questions, please contact us through:
- GitHub Issues: Submit an issue
- GitHub: @Evil0ctal
Thank you for your contribution!