Thank you for your interest in contributing to CueCard! This document provides guidelines and instructions for contributing.
Please be respectful and constructive in all interactions. We want to maintain a welcoming environment for everyone.
- macOS 10.13+ (High Sierra or later)
- Node.js 18+
- Rust (latest stable)
- Xcode (for Safari extension and macOS builds)
-
Fork the repository
-
Clone your fork:
git clone https://github.com/your-username/cuecard.git cd cuecard -
Set up environment variables:
cp .env.example .env # Edit .env with your Google OAuth credentials -
Install dependencies and run:
# Desktop app cd cuecard-app npm install npm run tauri dev # Extension cd cuecard-extension npm run build
- Check existing issues to see if the bug has already been reported
- If not, open a new issue with:
- A clear, descriptive title
- Steps to reproduce the bug
- Expected vs actual behavior
- Your macOS version and app version
- Any relevant logs or screenshots
- Check existing issues for similar suggestions
- Open a new issue describing:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
-
Create a new branch from
main:git checkout -b feature/your-feature-name
-
Make your changes following our coding standards
-
Test your changes:
- Run the app and verify your changes work
- Test the extension if you modified it
- Check for any regressions
-
Commit your changes with clear messages:
git commit -m "Add: brief description of your changes" -
Push to your fork and submit a pull request
-
In your PR description:
- Explain what the PR does
- Reference any related issues
- Include screenshots for UI changes
- Follow standard Rust conventions
- Use
cargo fmtto format code - Use
cargo clippyto check for issues - Add comments for complex logic
- Keep functions focused and small
- Use consistent indentation (2 spaces)
- Use descriptive variable and function names
- Add comments for complex logic
- Avoid unnecessary console.log statements in production code
- Keep commits atomic and focused
- Write clear commit messages
- Update documentation when needed
- Remove any debugging code before submitting
cuecard/
├── cuecard-app/ # Tauri desktop application
│ ├── src/ # Frontend (HTML, CSS, JavaScript)
│ │ ├── index.html # Main HTML file
│ │ ├── main.js # Main JavaScript file
│ │ └── styles.css # Stylesheet
│ └── src-tauri/ # Rust backend
│ └── src/
│ └── lib.rs # Main Rust code
└── extension/ # Browser extension
├── src/ # Extension source
│ ├── content/ # Content script
│ ├── background/ # Service worker
│ └── popup/ # Extension popup
└── manifests/ # Browser manifests
Before submitting a PR, please test:
-
Desktop App
- App launches without errors
- Google OAuth flow works
- Speaker notes sync from Google Slides
- Manual notes work correctly
- Timer functionality works
- Settings (opacity, screen capture) work
-
Browser Extension
- Extension loads in Chrome
- Extension loads in Safari
- Slide changes are detected
- Data is sent to the app correctly
If you have questions about contributing, feel free to open an issue with the "question" label.
Thank you for contributing to CueCard!