mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
285 lines
8.9 KiB
Markdown
285 lines
8.9 KiB
Markdown
# Getting Started as a Contributor
|
|
|
|
Welcome to BetterSEQTA+! 🎉 This guide will walk you through making your first contribution, even if you're completely new to the project.
|
|
|
|
## Table of Contents
|
|
|
|
- [Before You Start](#before-you-start)
|
|
- [Your First 30 Minutes](#your-first-30-minutes)
|
|
- [Making Your First Contribution](#making-your-first-contribution)
|
|
- [Types of Contributions](#types-of-contributions)
|
|
- [Finding Something to Work On](#finding-something-to-work-on)
|
|
- [Development Workflow](#development-workflow)
|
|
- [Getting Help](#getting-help)
|
|
|
|
## Before You Start
|
|
|
|
### What You'll Need
|
|
- **Node.js** (v16 or higher) - [Download here](https://nodejs.org/)
|
|
- **Git** - [Download here](https://git-scm.com/)
|
|
- **A code editor** - We recommend [VS Code](https://code.visualstudio.com/)
|
|
- **A Chromium browser** (Chrome, Edge, Brave) for testing (recommended, however you can use firefox although it requires being built every time you make a change)
|
|
|
|
### Helpful Background (but not required!)
|
|
- Basic JavaScript/TypeScript knowledge
|
|
- Some familiarity with HTML/CSS
|
|
- Understanding of browser extensions (we'll teach you!)
|
|
|
|
**Don't worry if you're missing some of these!** We're happy to help you learn. 🤗
|
|
|
|
## Your First 30 Minutes
|
|
|
|
Let's get you up and running quickly:
|
|
|
|
### 1. Get the Code (3 minutes)
|
|
```bash
|
|
# Fork the repository on GitHub first, then:
|
|
git clone https://github.com/YOUR_USERNAME/BetterSEQTA-plus.git
|
|
cd BetterSEQTA-plus
|
|
```
|
|
|
|
### 2. Install Dependencies (3 minutes)
|
|
```bash
|
|
npm install --legacy-peer-deps
|
|
```
|
|
|
|
### 3. Start Development Server (2 minutes)
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### 4. Load Extension in Browser (4 minutes)
|
|
1. Open Chrome and go to `chrome://extensions`
|
|
2. Enable "Developer mode" (toggle in top right)
|
|
3. Click "Load unpacked"
|
|
4. Select the `dist` folder in your project
|
|
5. Visit a SEQTA Learn page to see BetterSEQTA+ in action!
|
|
|
|
### 5. Make a Tiny Change (5 minutes)
|
|
Let's prove everything works:
|
|
1. Open `src/SEQTA.ts`
|
|
2. Find the line that says `"[BetterSEQTA+] Successfully initialised"`
|
|
3. Change it to `"[BetterSEQTA+] Successfully initialised - Hello [YOUR_NAME]!"`
|
|
4. Save the file
|
|
5. Go to `chrome://extensions`, click the refresh icon on BetterSEQTA+
|
|
6. Refresh a SEQTA page and check the browser console (F12) - you should see your message!
|
|
|
|
### 6. Reset Your Change (3 minutes)
|
|
```bash
|
|
git checkout -- src/SEQTA.ts
|
|
```
|
|
|
|
**Congratulations! 🎉 You've successfully set up BetterSEQTA+ for development!**
|
|
|
|
## Making Your First Contribution
|
|
|
|
### Easy First Contributions
|
|
|
|
Here are some great starter contributions:
|
|
|
|
1. **Fix a typo in documentation** - Super easy and always appreciated!
|
|
2. **Improve error messages** - Make them more helpful
|
|
3. **Add comments to code** - Help other contributors understand
|
|
4. **Create a simple plugin** - Follow our plugin guide
|
|
5. **Fix a bug you found** - If you found a bug, fix it!
|
|
|
|
### Step-by-Step: Your First Pull Request
|
|
|
|
#### Step 1: Pick an Issue
|
|
- Go to our [Issues page](https://github.com/BetterSEQTA/BetterSEQTA-plus/issues)
|
|
- Look for labels like:
|
|
- `good first issue` - Perfect for beginners
|
|
- `help wanted` - We'd love help with these
|
|
- `documentation` - Improve our docs
|
|
- `bug` - Fix something broken
|
|
|
|
#### Step 2: Claim the Issue
|
|
Comment on the issue saying "I'd like to work on this!" We'll assign it to you.
|
|
|
|
#### Step 3: Create a Branch
|
|
```bash
|
|
git checkout -b fix-issue-123 # Replace 123 with the issue number
|
|
```
|
|
|
|
#### Step 4: Make Your Changes
|
|
- Follow the patterns you see in existing code
|
|
- Test your changes thoroughly
|
|
- Keep changes focused and small
|
|
|
|
#### Step 5: Test Everything
|
|
```bash
|
|
# Test the extension still loads
|
|
npm run dev
|
|
|
|
# Test in browser
|
|
# 1. Reload extension at chrome://extensions
|
|
# 2. Visit SEQTA page
|
|
# 3. Verify everything still works
|
|
```
|
|
|
|
#### Step 6: Commit Your Changes
|
|
```bash
|
|
git add .
|
|
git commit -m "Fix issue #123: Brief description of what you fixed"
|
|
```
|
|
|
|
#### Step 7: Push and Create Pull Request
|
|
```bash
|
|
git push origin fix-issue-123
|
|
```
|
|
|
|
Then go to GitHub and create a pull request with:
|
|
- **Clear title**: "Fix issue #123: Brief description"
|
|
- **Description**: Explain what you changed and why
|
|
- **Testing**: Describe how you tested it
|
|
|
|
## Types of Contributions
|
|
|
|
### 🐛 Bug Fixes
|
|
- Fix broken features
|
|
- Improve error handling
|
|
- Resolve compatibility issues
|
|
|
|
**Example**: "The theme selector doesn't work on Firefox"
|
|
|
|
### ✨ New Features
|
|
- Add new plugins
|
|
- Enhance existing functionality
|
|
- Improve user experience
|
|
|
|
**Example**: "Add keyboard shortcuts for common actions"
|
|
|
|
### 📚 Documentation
|
|
- Fix typos and unclear explanations
|
|
- Add examples and tutorials
|
|
- Improve code comments
|
|
|
|
**Example**: "Add more examples to the plugin guide"
|
|
|
|
### 🎨 Design & UI
|
|
- Improve the settings interface
|
|
- Make things more user-friendly
|
|
- Add animations and polish
|
|
|
|
**Example**: "Make the theme creator more intuitive"
|
|
|
|
### 🔧 Technical Improvements
|
|
- Refactor code for clarity
|
|
- Add tests
|
|
- Improve performance
|
|
|
|
**Example**: "Simplify the plugin loading logic"
|
|
|
|
## Finding Something to Work On
|
|
|
|
### Browse Issues by Label
|
|
- [`good first issue`](https://github.com/BetterSEQTA/BetterSEQTA-plus/labels/good%20first%20issue) - Perfect for beginners
|
|
- [`help wanted`](https://github.com/BetterSEQTA/BetterSEQTA-plus/labels/help%20wanted) - We need help with these
|
|
- [`documentation`](https://github.com/BetterSEQTA/BetterSEQTA-plus/labels/documentation) - Improve our docs
|
|
- [`bug`](https://github.com/BetterSEQTA/BetterSEQTA-plus/labels/bug) - Fix something broken
|
|
- [`enhancement`](https://github.com/BetterSEQTA/BetterSEQTA-plus/labels/enhancement) - Add new features
|
|
|
|
### Create Your Own Issue
|
|
Found a bug or have an idea? Create an issue first to discuss it!
|
|
|
|
### Plugin Ideas
|
|
Want to create a plugin? Here are some ideas:
|
|
- **Study Timer**: Track study time across SEQTA pages
|
|
- **Grade Tracker**: Better visualization of grades over time
|
|
- **Quick Notes**: Add notes to any SEQTA page
|
|
- **Homework Reminder**: Smart notifications for upcoming due dates
|
|
- **Custom Shortcuts**: User-defined keyboard shortcuts
|
|
|
|
## Development Workflow
|
|
|
|
### Daily Development
|
|
```bash
|
|
# Start working
|
|
git pull origin main
|
|
npm run dev
|
|
|
|
# Make changes, test, commit
|
|
git add .
|
|
git commit -m "Descriptive commit message"
|
|
|
|
# Push when ready
|
|
git push origin your-branch-name
|
|
```
|
|
|
|
### Before Submitting PR
|
|
1. **Test thoroughly** - Make sure nothing breaks
|
|
2. **Check console** - No new errors
|
|
3. **Test in different browsers** - Chrome and Firefox
|
|
4. **Update documentation** - If you changed how something works
|
|
|
|
### Code Style
|
|
- Use TypeScript where possible
|
|
- Follow existing naming conventions
|
|
- Add comments for complex logic
|
|
- Keep functions small and focused
|
|
|
|
## Getting Help
|
|
|
|
### Stuck? Here's How to Get Unstuck
|
|
|
|
1. **Check the docs** - [Architecture guide](./ARCHITECTURE.md) explains everything
|
|
2. **Search existing issues** - Someone might have had the same problem
|
|
3. **Ask in Discord** - Our community is super helpful
|
|
4. **Create an issue** - If you found a bug or need help
|
|
|
|
### Discord Community
|
|
Join our [Discord server](https://discord.gg/YzmbnCDkat) for:
|
|
- Real-time help and discussion
|
|
- Collaboration on features
|
|
- Sharing ideas and feedback
|
|
- Getting to know the community
|
|
|
|
### Code Review Process
|
|
- All contributions need code review
|
|
- We'll provide helpful feedback
|
|
- Don't worry about making mistakes - we're here to help!
|
|
- Reviews usually happen within 24-48 hours
|
|
|
|
## Common Questions
|
|
|
|
**Q: I'm new to browser extensions. Is this too advanced for me?**
|
|
A: Not at all! We have lots of beginner-friendly issues, and our plugin system makes it easy to add features without understanding all the browser extension complexities.
|
|
|
|
**Q: How long does it take to get my first PR merged?**
|
|
A: For simple fixes, usually 1-3 days. For larger features, it might take a week or two as we discuss the best approach.
|
|
|
|
**Q: I made a mistake in my PR. What do I do?**
|
|
A: No worries! Just push more commits to the same branch and they'll be added to your PR automatically.
|
|
|
|
**Q: Can I work on multiple issues at once?**
|
|
A: It's better to focus on one issue at a time, especially when starting out. This makes code review easier and reduces conflicts.
|
|
|
|
**Q: What if I start working on something and get stuck?**
|
|
A: Ask for help! Create a draft PR with what you have so far, and we'll help you figure out the next steps.
|
|
|
|
## Recognition
|
|
|
|
All contributors get:
|
|
- Recognition in our README
|
|
- Contributor badge in Discord
|
|
- Our eternal gratitude! 🙏
|
|
|
|
Significant contributors may also get:
|
|
- Special Discord roles
|
|
- Input on project direction
|
|
- Maintainer status
|
|
|
|
## Next Steps
|
|
|
|
Ready to contribute? Here's what to do:
|
|
|
|
1. ✅ **Set up your development environment** (follow the 30-minute guide above)
|
|
2. 🔍 **Find an issue to work on** (check the "good first issue" label)
|
|
3. 💬 **Join our Discord** and introduce yourself
|
|
4. 🚀 **Make your first contribution** and submit a PR
|
|
|
|
Remember: **Every expert was once a beginner!** We're excited to help you learn and grow as a contributor. Welcome to the team! 🎉
|
|
|
|
---
|
|
|
|
*Questions? Suggestions for improving this guide? Open an issue or message us on Discord!* |