|
| 1 | +# Contributing to The Python Ledger 🐍 |
| 2 | + |
| 3 | +First off, thank you for considering contributing! Projects like this live and breathe through community involvement. Whether you are fixing a typo in a lesson or optimizing the Skulpt engine logic, your help is welcome. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## 🛠️ Choose Your Path |
| 8 | + |
| 9 | +### 1. Content Contributor (Education) |
| 10 | +Help us build the curriculum! We need writers who can explain complex Python concepts in a beginner-friendly way. |
| 11 | +* **Target:** [The Python Ledger](https://github.com/razorblade23/the-python-ledger). |
| 12 | +* **Format:** Markdown files using our custom `<InteractivePython>` component (You do not need to know React, its rendered automaticly for you if using `interactive` tag on a code block. |
| 13 | +* **Goal:** Create hands-on projects (like the Text Adventure) that reinforce the ledger theme or expand and fix lessons. |
| 14 | + |
| 15 | +### 2. Engine Contributor (Development) |
| 16 | +Help us polish the interactive experience. |
| 17 | +* **Target:** `/src/components/InteractivePython/`. |
| 18 | +* **Tech:** React, Skulpt.js, CodeMirror. |
| 19 | +* **Focus:** Improving terminal UI, handling edge cases in Python execution, or adding support for Python standard libraries. |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## 🚀 How to Get Started |
| 24 | + |
| 25 | +1. **Find an Issue:** Check the [GitHub Issues](link-to-your-issues) for tags like `good first issue` or `help wanted`. |
| 26 | +2. **Fork & Clone:** Fork the repo and clone it locally. |
| 27 | +3. **Install Dependencies:** |
| 28 | + ```bash |
| 29 | + npm install |
| 30 | + ``` |
| 31 | +4. **Create a Branch:** |
| 32 | + ```bash |
| 33 | + git checkout -b feature/your-feature-name |
| 34 | + ``` |
| 35 | +5. **Run Locally:** Use `npm start` to see your changes in real-time. |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## 📝 Contribution Guidelines |
| 40 | + |
| 41 | +### Branching Strategy |
| 42 | +* **main**: The stable production branch. Do not commit directly here. |
| 43 | +* **feature/**: For new lessons or engine features. |
| 44 | +* **fix/**: For bug fixes. |
| 45 | + |
| 46 | +### Lesson Standards |
| 47 | +If you are writing a new lesson: |
| 48 | +* Start with a clear learning objective. |
| 49 | +* Use the `<InteractivePython>` component at least once per page for hands-on practice. |
| 50 | +* Ensure the code examples are compatible with Python 3 (Skulpt's current implementation). |
| 51 | + |
| 52 | +### Code Style |
| 53 | +* We use **Prettier** for formatting. Please run `npm run format` before submitting a PR. |
| 54 | +* React components should follow functional patterns and use hooks. |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## 🤝 Pull Request Process |
| 59 | + |
| 60 | +1. Ensure your code builds locally without errors. |
| 61 | +2. Update the `README.md` or documentation if you’ve added a new feature. |
| 62 | +3. Submit your PR with a clear description of what changed and why. |
| 63 | +4. Link the PR to the relevant Issue (e.g., `Closes #123`). |
| 64 | +5. Wait for a maintainer to review your code. We try to respond within 48 hours! |
| 65 | + |
| 66 | +--- |
| 67 | + |
| 68 | +## ⚖️ Community Standards |
| 69 | +By contributing, you agree to follow our [Code of Conduct](link-to-discord-rules-or-coc-file). Be kind, be helpful, and let’s build the best Python learning tool on the web! |
| 70 | + |
| 71 | +**Questions?** Join our [Discord Community](https://discord.gg/d3AG5AbX7H)! |
0 commit comments