Before You Start
Please read the following important documents:You will be required to sign all commits to the Openlane project. See GitHub’s documentation for setup instructions.
Getting Started
Fork the Repository
External contributors need to fork the repository since they don’t have write access to the main branch.See GitHub’s guide on creating a PR from a fork.
Set Up Your Environment
Follow the development setup guide to configure your local environment:
Development Workflow
Code Quality
The project uses several tools to maintain code quality:Pre-commit Hooks
The project uses pre-commit hooks to enforce code quality. They run automatically ongit commit:
Testing Your Changes
Commit Guidelines
Signing Commits
All commits must be signed. Configure GPG signing:Commit Message Format
Write clear, descriptive commit messages:Pull Request Process
Create Pull Request
Open a pull request from your fork to the main repository.Include in your PR description:
- What changes you made
- Why you made them
- Any related issues (use “Fixes #123” to auto-close issues)
- Screenshots (for UI changes)
Code Review
Maintainers will review your PR and may request changes.Address feedback by:
- Making additional commits to your branch
- Pushing updates to the same branch
- Responding to review comments
Coding Standards
TypeScript
- Use TypeScript for all new code
- Avoid
anytypes - use proper typing - Export types that may be reused
- Document complex types with comments
React
- Use functional components with hooks
- Follow React 19 best practices
- Keep components focused and single-purpose
- Use meaningful component and prop names
Styling
- Use Tailwind CSS utility classes
- Follow the shared Tailwind config from
@repo/tailwind-config - Keep styles consistent with existing components
- Use CSS variables for theming when appropriate
File Organization
- Group related files together
- Use index files for clean exports
- Keep components in their own directories
- Place tests alongside the code they test
Monorepo Structure
Understand where to make changes:Applications (apps/)
- console - Main user-facing application
- storybook - Component documentation and testing
Packages (packages/)
- codegen - GraphQL code generation
- ui - Shared UI components
- dally - Common DAL patterns
- eslint-config - Linting rules
- config-typescript - TypeScript configuration
- tailwind-config - Tailwind CSS configuration
Licensing
By contributing to Openlane UI, you agree that your contributions will be licensed under the Apache 2.0 License.Important Notes
- The repository is open source under Apache 2.0
- Openlane’s SaaS/Cloud Services are commercial products
- Logos and trademarks are not covered under Apache 2.0
- Others can distribute this software but cannot use Openlane trademarks
Security
We take security seriously. If you discover a security vulnerability:DO NOT report security vulnerabilities through public GitHub issues, discussions, or pull requests!
- Email
[email protected]with details - Include as much information as possible:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fixes (if any)
- Wait for a response before disclosing publicly
Getting Help
If you have questions or need assistance:Communication Channels
- Email:
[email protected] - GitHub Issues: Create an issue
- Direct Contact: Reach out to @matoszz
Before Asking
- Check existing issues
- Review the documentation
- Search discussions
Common Tasks
Updating Dependencies
Generating GraphQL Code
See the @repo/codegen README for details on regenerating GraphQL types and hooks.Updating Passkey AAGUIDs
Generating Route Lists
Review Checklist
Before submitting your PR, ensure:- Code follows project style guidelines
- All tests pass (
task test) - Type checking passes (
bun run type-check) - Linting passes (
task lint) - Code is formatted (
bun run format) - Commits are signed
- PR description is clear and complete
- Documentation is updated (if needed)
- No sensitive information in commits
Recognition
All contributors will be recognized in:- Project contributors list
- Release notes (for significant contributions)
- Community acknowledgments