← Back to README | ← Back to Technical Documentation
Thank you for your interest in contributing to the Omeka S to Wikidata tool! We welcome contributions from developers, documentarians, and users of all experience levels.
New to this project? Start here:
👉 Making Your First Edit with Claude Code
This comprehensive guide walks you through:
- Setting up Claude Code (the AI assistant used to build this project)
- Understanding the repository structure
- Creating your first contribution
- Working with branches and pull requests
- Best practices and troubleshooting
Before contributing, familiarize yourself with:
- FIRST_EDIT_GUIDE.md - Step-by-step guide for new contributors
- CLAUDE.md - Project conventions and coding standards
- JS_MODULE_MAP.md - Complete JavaScript module reference
- DOCUMENTATION.md - Technical architecture overview
- Search existing issues first
- Provide clear steps to reproduce
- Include screenshots or error messages
- Specify your browser and operating system
- Open a GitHub issue with the "enhancement" label
- Explain the use case and benefits
- Discuss implementation approaches
- Fix typos, clarify instructions, or add examples
- Update documentation when code changes
- Help make the tool more accessible
- Follow the project's coding conventions in CLAUDE.md
- Write tests for new functionality
- Keep commits focused and descriptive
- Update documentation alongside code changes
- Increase test coverage for existing features
- Add edge case tests
- See our Playwright E2E testing guide
- Help make the tool available in more languages
- Contact the project team to coordinate translation efforts
# Clone the repository
git clone https://github.com/MaastrichtU-Library/omekas-to-wikidata.git
cd omekas-to-wikidata
# Checkout dev branch
git checkout dev
git pull origin dev
# Create your feature branch
git checkout -b my-feature-nameWork only in the src/ directory for code changes. Follow conventions in CLAUDE.md:
- Use ES6+ JavaScript
- Follow the component factory system
- Use state management convenience methods
- Consult JS_MODULE_MAP.md to find the right files
# Start a local server
python -m http.server 8080
# Open in browser
# Navigate to http://localhost:8080/src/Run E2E tests:
# Quick smoke tests
npm run test:e2e:smoke
# Full test suite
npm run test:e2e
# Interactive test runner
npm run test:e2e:uigit add <files>
git commit -m "Clear, descriptive commit message"Follow the commit message format described in CLAUDE.md.
git push origin my-feature-nameThen open a pull request on GitHub:
- Target the
devbranch (notmain) - Write a clear description of your changes
- Reference any related issues
- Request review from maintainers
- Use
constby default,letwhen necessary - Use arrow functions for callbacks
- Use async/await for asynchronous operations
- Wrap async operations in try/catch blocks
- Always use component factory functions from
src/js/ui/components.js - Use state management convenience methods from
src/js/state.js
- Maximum 1000 lines per file
- Feature-based structure (see CLAUDE.md)
- Keep related code together
- Separate concerns: business logic, UI, utilities
- Update JS_MODULE_MAP.md when adding/modifying JavaScript modules
- Add JSDoc comments to functions
- Keep README and user manual up to date
- Document complex logic with clear comments
- All new functionality requires E2E test coverage
- Test error cases and edge conditions
- Use
@smokeand@criticaltags appropriately
| Branch | Purpose | Deployment |
|---|---|---|
main |
Production code | Live demo at root URL |
test |
Staged testing | /test subdirectory |
dev |
Active development | /dev subdirectory |
feature/* |
Individual features | Not deployed |
Always create feature branches from dev, never from main.
Before submitting a pull request:
- Code follows project conventions in CLAUDE.md
- Tests pass (
npm run test:e2e) - New functionality includes tests
- Documentation is updated
- JS_MODULE_MAP.md is updated if modules changed
- Changes tested locally
- Commits are clear and focused
- Branch targets
dev(notmain)
When reporting bugs, include:
Description Clear description of the issue
Steps to Reproduce
- Go to...
- Click on...
- See error
Expected Behavior What should happen
Actual Behavior What actually happens
Environment
- Browser: [e.g., Chrome 120]
- OS: [e.g., macOS 14.0]
- Version: [e.g., dev/test/production]
Screenshots If applicable, add screenshots
- Questions about contributing: Open a GitHub discussion
- Technical questions: Consult DOCUMENTATION.md and JS_MODULE_MAP.md
- Setup issues: See FIRST_EDIT_GUIDE.md
- Project team: Contact via GitHub issues
We are committed to providing a welcoming and inclusive environment. Please:
- Be respectful and considerate
- Provide constructive feedback
- Focus on what's best for the project and community
- Show empathy towards others
All contributors will be recognized in project documentation. Thank you for helping make this tool better!