Thank you for your interest in contributing to Alpha One Labs' Virtual Robotics Playground! This guide will help you get started.
- Code of Conduct
- How to Contribute
- Development Setup
- Making Changes
- Pull Request Process
- Coding Standards
- Commit Message Guidelines
- Be respectful and inclusive
- Provide constructive feedback
- Focus on the project goals
- Help others learn and grow
Harassment or discriminatory behavior will not be tolerated.
- Report Bugs — Found an issue? Open a bug report
- Suggest Features — Have an idea? Create a feature request
- Fix Issues — Browse open issues and submit PRs
- Improve Documentation — Fix typos, add examples, clarify instructions
- Add Components — Build new robot parts or sensors
Look for issues labeled good first issue — these are perfect for newcomers!
- Git
- A modern web browser (Chrome, Firefox, Safari, or Edge)
- Text editor (VS Code recommended)
- Python 3 (optional, for local server)
# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/alphaonelabs-virtual-robotics-playground.git
cd alphaonelabs-virtual-robotics-playground
# 3. Add upstream remote
git remote add upstream https://github.com/alphaonelabs/alphaonelabs-virtual-robotics-playground.git
# 4. (Optional) Start local server
python3 -m http.server 8000
# 5. Open in browser
# Direct: Open index.html in your browser
# Server: Visit http://localhost:8000# Get latest changes
git checkout main
git pull upstream main
# Create feature branch
git checkout -b feature/your-feature-name- Edit
index.htmlfor landing page changes - Edit
home.htmlfor simulator changes - Test thoroughly in multiple browsers
Manual Testing Checklist:
- Landing page loads without errors
- "Enter System" button navigates to
home.html - Chassis can be added
- Other components require chassis first
- WASD movement works smoothly
- Robot respects canvas boundaries
- Camera view renders correctly (if camera added)
- Arm picks and drops blocks (if arm added)
- Settings sliders update robot behavior
- No console errors (F12 → Console)
- Responsive design works (resize window)
Browser Testing:
Test in at least two of these browsers:
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Test your changes in at least 2 browsers
- Check for console errors (
F12→ Console) - Verify responsive design (resize window)
- Write clear commit messages (see below)
# Commit your changes
git add .
git commit -m "feat: add new robot sensor"
# Push to your fork
git push origin feature/your-feature-nameThen:
- Go to GitHub
- Click "Compare & pull request"
- Fill out the PR template:
- Title: Use conventional commit format (see below)
- Description: Explain what and why
- Screenshots: Add if UI changed
- Submit!
type: brief description
Examples:
feat: add gripper strength control
fix: correct camera FOV rendering
docs: update installation instructions
style: format home.html consistently
refactor: simplify physics calculations
<!-- Use semantic HTML5 elements -->
<section class="simulator">
<canvas id="sim-canvas"></canvas>
</section>
<!-- Add ARIA labels for accessibility -->
<canvas role="img" aria-label="Robot simulation canvas"></canvas>
<!-- Keep structure clean and indented --><!-- Prefer Tailwind utility classes -->
<button class="bg-teal-700 hover:bg-teal-600 p-2 rounded text-white">
Add Chassis
</button>
<!-- Custom styles in <style> tag if needed -->
<style>
.custom-animation {
animation: fadeIn 0.6s ease-out;
}
</style>// Use modern ES6+ syntax
const robot = {
x: 0,
y: 0,
speed: 0
};
// Add comments for complex logic
function updatePhysics() {
// Calculate velocity based on motor power
const velocity = motorPower / 400;
robot.speed += velocity;
}
// Use meaningful variable names
const isChassisAdded = robot.parts.chassis;
// Prefer const over let
const maxSpeed = 10;
let currentSpeed = 0;- Use 2 spaces for indentation
- Use single quotes for strings
- Add semicolons
- Keep functions small and focused
- Comment complex logic
Follow Conventional Commits:
type: description
[optional body]
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation changes |
style |
Code formatting (no logic change) |
refactor |
Code restructuring |
perf |
Performance improvement |
test |
Adding tests |
chore |
Build/tooling changes |
feat: add gripper strength slider
fix: correct camera FOV calculation at canvas edges
docs: update browser compatibility table
style: format home.html with consistent indentation
refactor: simplify collision detection logic
perf: reduce particle count for better mobile performanceUse this template:
**Describe the bug**
A clear description of what the bug is.
**To Reproduce**
1. Go to '...'
2. Click on '...'
3. See error
**Expected behavior**
What you expected to happen.
**Screenshots**
If applicable, add screenshots.
**Environment:**
- Browser: [e.g. Chrome 120]
- OS: [e.g. Windows 11, macOS 14]Use this template:
**Is your feature related to a problem?**
A clear description of the problem.
**Describe the solution**
How you'd like it to work.
**Additional context**
Any other information or mockups.- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and general ideas
- Email: contact@alphaonelabs.org
Thank you for contributing! 🚀
Every contribution, no matter how small, helps make this project better.
Alpha One Labs — Advancing open science through education and robotics.