Thank you for your interest in contributing to SightEdit! We welcome contributions from the community and are grateful for any help you can provide.
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful and welcoming to all contributors.
- Check if the issue already exists in our issue tracker
- If not, create a new issue with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, browser, SightEdit version)
- Screenshots or code examples if applicable
- Check existing feature requests
- Open a new issue with the "enhancement" label
- Describe the feature and its use case
- Explain why it would benefit SightEdit users
- Fork the repository
- Clone your fork:
git clone https://github.com/sightedit/sightedit.git cd sightedit - Install dependencies:
npm install npm run bootstrap
- Create a branch:
git checkout -b feature/your-feature-name
- Make your changes
- Write/update tests
- Update documentation if needed
- Run tests:
npm test - Run linter:
npm run lint
- Build packages:
npm run build
We use Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, semicolons, etc)refactor:Code refactoringtest:Test additions or correctionschore:Maintenance tasks
Examples:
feat: add markdown editor support
fix: resolve image upload issue in Safari
docs: update API reference for batch operations
- Push your branch to your fork
- Open a Pull Request against
main - Fill out the PR template
- Ensure all checks pass
- Wait for review
- TypeScript for all new code
- Follow existing code style
- Use meaningful variable names
- Add comments for complex logic
- Keep functions small and focused
- Write unit tests for new features
- Update tests when changing existing code
- Aim for high test coverage
- Test in multiple browsers
- Update README if needed
- Add JSDoc comments to public APIs
- Update docs/ for user-facing changes
- Include examples for new features
sightedit/
├── packages/
│ ├── core/ # Core library + theme + hooks + transforms
│ ├── react/ # React integration + component overrides
│ ├── vue/ # Vue 3 integration
│ ├── admin/ # Visual Builder / Admin Panel (NEW in v2.0)
│ ├── cms-adapters/ # CMS integrations (NEW in v2.0)
│ ├── graphql-server/ # GraphQL API (NEW in v2.0)
│ ├── server-sdk/ # Custom backend SDK (NEW in v2.0)
│ ├── server/node/ # Node.js server (legacy)
│ ├── server/php/ # PHP server (legacy)
│ └── plugin-*/ # Plugins
├── examples/ # Example implementations
├── docs/ # Documentation
├── e2e/ # End-to-end tests
└── website/ # Documentation website
cd packages/core
npm run devFeatures to work on:
- Inline editing (12 element types)
- Theme system (CSS-in-JS)
- Hook system (40+ events)
- Transform pipeline
- Component overrides
- Developer tools
cd packages/admin
npm install
npm run dev
# Opens at http://localhost:5173Features to work on:
- Schema Configuration Builder
- Theme Builder
- Attribute Generator
- Live Preview
cd packages/graphql-server
npm install
npm start
# HTTP: http://localhost:4000/graphql
# WS: ws://localhost:4000/graphqlFeatures to work on:
- GraphQL schema
- Resolvers
- Subscriptions
- Storage adapters
cd packages/cms-adapters
npm run buildAdapters:
- Contentful
- Strapi
- Sanity
- WordPress
# Run all packages in parallel
npm run dev:allnpm test # All tests
npm run test:unit # Unit tests only
npm run test:e2e # E2E tests only
npm run typecheck # TypeScript checks
npm run lint # Linting
npm run build:all # Build all packages- Join our Discord server
- Check the documentation
- Ask questions in GitHub Discussions
Contributors will be:
- Listed in our README
- Mentioned in release notes
- Given credit in commit messages
Thank you for helping make SightEdit better!