Thank you for your interest in contributing to OpenPlayground! This document provides guidelines and instructions for contributing to this project.
| ✅ DO | ❌ DON'T |
|---|---|
Create project.json in YOUR project folder |
Modify any centralized JSON file |
Add projects via projects/your-name/ |
Modify index.html directly |
UI/styling changes → components/ and css/ |
Touch unrelated files |
| Include screenshots in PRs | Submit without testing |
Each project now has its own project.json file inside its folder. This prevents merge conflicts!
projects/your-project-name/
├── index.html # Your main HTML file
├── project.json # YOUR PROJECT METADATA ⭐
├── style.css # Your CSS styles
├── script.js # Your JavaScript code
└── README.md # Documentation (optional)
We now support complex projects in various languages and frameworks! Full-stack projects are stored in the full-stack/ folder, organized by category. These do not appear in the main UI but are accessible directly in the repository.
Directory Structure:
full-stack/
├── [category]/ # e.g., mern, python, go, rust
│ └── your-project/
│ ├── client/ # Frontend code (if any)
│ ├── server/ # Backend code
│ └── README.md # README WITH SETUP INSTRUCTIONS ⭐
Requirements:
- Categorization: Place your project in the correct language/framework folder (create one if it doesn't exist).
- Structure: Use separate
clientandserverfolders where applicable. - Detailed README: Include:
- Project description & features.
- Full setup and run instructions.
- Author name and social links (for credits).
- Environment Variables: Provide
.env.example. DO NOT commit.envfiles.
Categories: mern | python (Flask, Django, FastAPI) | go | rust | java | php | experimental
index.html(root) - Auto-generated from componentsproject-manifest.json- Auto-generated from project folders- Any files outside your project folder
- ✅ ALWAYS include screenshots showing your changes in the PR
- ✅ Show before/after screenshots if fixing a bug
- ❌ PRs without screenshots may be rejected
- GitHub account
- Git installed locally
- Text editor (VS Code recommended)
- Basic HTML, CSS, JavaScript knowledge
-
Fork & Clone
git clone https://github.com/YOUR_USERNAME/OpenPlayground.git cd OpenPlayground -
Create a branch
git checkout -b feature/your-project-name
-
Start local server
npx live-server --port=8080
mkdir projects/your-project-name
cd projects/your-project-nameCreate these files in your project folder:
index.html - Your main HTML file
style.css - Your CSS styles
script.js - Your JavaScript code
Create projects/your-project-name/project.json:
{
"title": "Your Project Name",
"category": "utility",
"difficulty": "Beginner",
"description": "Brief description of your project (max 100 characters).",
"tech": ["HTML", "CSS", "JavaScript"],
"icon": "ri-code-s-slash-line",
"coverStyle": "background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;"
}Categories: utility | game | puzzle | productivity | fun | educational | communication
Difficulty: Beginner | Intermediate | Advanced
Icons: Browse RemixIcon for icon names
- Open http://localhost:8080 in your browser
- Navigate to the Projects section
- Your project should appear automatically
- Click to verify it opens correctly
- Check browser console for errors
git add projects/your-project-name/
git commit -m "Add: Your Project Name - Brief description"
git push origin feature/your-project-name- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill out the template with screenshots
- Submit!
- ✅ Use vanilla HTML, CSS, JavaScript (no frameworks)
- ✅ Make it responsive (mobile-friendly)
- ✅ Test in Chrome, Firefox, Safari, Edge
- ✅ Clean, commented code
- ✅ Works without errors
- ✅ Intuitive user experience
- ✅ Optimized images (< 200KB each)
- ✅ Accessible (proper alt tags, contrast)
- ✅ Original work (not copied from tutorials)
- ✅ Appropriate content only
- ✅ Educational or entertaining value
- ❌ No offensive or harmful content
## Project Description
Brief description of what your project does
## Type of Change
- [ ] New project
- [ ] Bug fix
- [ ] Enhancement
- [ ] Documentation update
## Screenshots
[Add screenshots here]
## Checklist
- [ ] My code follows the project guidelines
- [ ] I tested on desktop and mobile
- [ ] No console errors
- [ ] I created `project.json` in MY folder (not root)
- [ ] I included screenshots
- [ ] I only modified files in my project folderOpenPlayground/
├── index.html # Main page (DO NOT EDIT)
├── project-manifest.json # Auto-generated project list
├── about.html # About page
├── bookmarks.html # Bookmarks page
│
├── components/ # Reusable UI components
│ ├── header.html
│ ├── hero.html
│ ├── projects.html
│ ├── footer.html
│ └── ...
│
├── css/ # Stylesheets
│ ├── style.css
│ ├── footer.css
│ └── ...
│
├── js/ # JavaScript modules
│ ├── app.js
│ ├── components.js
│ └── core/
│
├── scripts/ # Build utilities
│ ├── generate-manifest.js
│ └── validate-links.js
│
└── projects/ # ALL PROJECTS GO HERE
├── calculator/
│ ├── index.html
│ ├── project.json ⭐
│ ├── style.css
│ └── script.js
├── snake-game/
│ ├── index.html
│ ├── project.json ⭐
│ └── ...
└── your-project/
├── index.html
├── project.json ⭐
└── ...
- Check this guide and README
- Search existing issues
- Create a new issue with details
- Ask in GitHub Discussions
- Calculator, Digital clock, Color picker, Quote generator, Unit converter
- Todo list, Weather app, Memory game, Expense tracker, Pomodoro timer
- Drawing canvas, Music player, Code editor, Data visualization
- RemixIcon - Icons
- MDN Web Docs - Documentation
- Can I Use - Browser compatibility
By contributing, you agree your code will be licensed under the MIT License.
Thank you for contributing to OpenPlayground! 🎉