Thanks for your interest in contributing! AudioGuideKit is an open-source project built for developers, museums, and cultural institutions — and contributions from the community are what make it better for everyone.
- Bug reports — found something broken? Open an issue
- Feature requests — have an idea? We'd love to hear it
- Code contributions — fix a bug, build a feature, improve performance
- Documentation — improve guides, fix typos, add examples
- New themes — create and share your own themes for the player
- Spread the word — star the repo, write about it, share with institutions that could benefit
- Node.js 18+
- Bun (recommended) or npm
# Fork and clone the repo
git clone https://github.com/audioguidekit/player-react.git
cd player-react
# Install dependencies
bun install
# Start the development server
bun run devVisit http://localhost:3000 to see the app running locally.
- Fork the repository on GitHub
- Create a branch for your change:
git checkout -b feat/your-feature-name - Make your changes and test them locally
- Run tests to make sure nothing is broken (see Testing)
- Commit using clear, descriptive messages (see below)
- Push your branch and open a Pull Request
We follow a simple convention:
feat: add multilingual audio track support
fix: GPS trigger not firing on iOS 17
docs: update quickstart guide
refactor: simplify AudioPlayer component
Prefixes: feat, fix, docs, refactor, test, chore
- Keep PRs focused — one feature or fix per PR
- Include a clear description of what changed and why
- If your PR fixes an issue, reference it:
Closes #42 - Add or update tests if relevant
- Ensure the project builds without errors:
bun run build
This project uses Playwright for end-to-end testing. See the full Testing Guide for details.
bun run test # Run all tests (headless)
bun run test:headed # Run with browser visible
bun run test:ui # Interactive Playwright UI
bun run test:debug # Debug with Playwright InspectorTests auto-discover available tours and languages — they don't hardcode tour names, so they work with any content.
When opening a bug report, please include:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Your environment (browser, OS, device if mobile)
- Any relevant console errors or screenshots
Open an issue with the enhancement label. Describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you considered
We're especially interested in features that help real-world cultural institutions, museum technologists, and tour operators.
player-react/
├── components/
│ ├── feed/ # Stop cards (Audio, Video, Text, etc.)
│ ├── sheets/ # Bottom sheets (Rating, Language)
│ └── player/ # Audio player components
├── screens/ # Page-level components
├── hooks/ # Custom hooks
├── context/ # React context providers
├── src/
│ ├── services/ # Data loading, IndexedDB, storage
│ ├── theme/ # Theme system
│ ├── translations/ # UI translations
│ └── data/tour/ # Tour JSON files (metadata.json, en.json, etc.)
├── tests/ # Playwright tests
├── docs/ # Documentation
└── types.ts # Shared TypeScript types
- TypeScript is required — avoid
anywhere possible - Components use functional style with hooks
- Keep components small and focused
- CSS-in-JS via Twin.macro / Tailwind + Styled Components
Open a GitHub Discussion or check the documentation at audioguidekit.org.
We're a small team and review PRs as quickly as we can. Thank you for helping make audio guides more accessible to the world.