Contributing to Noodles.gl
Welcome to Noodles.gl! We're excited to have you contribute.
๐ Quick Startโ
This guide covers development workflows, testing strategies, and contribution guidelines for the Noodles.gl system.
Prerequisitesโ
- Node.js (managed by Volta)
- Yarn with PnP mode
- Modern browser with WebGL support
Setupโ
# Clone the repository
git clone <repository-url>
# Install dependencies
yarn install
# Start development server
yarn start
Development URLsโ
- Local Development:
http://localhost:5173/?project=example
- Specific Project: Replace
example
with project name from/public/noodles/
- Safe Mode: Add
&safeMode=true
to disable code execution
๐ Project Structureโ
For detailed information about the codebase structure and architecture, see:
- Architecture Overview - Complete project structure and patterns
- Technology Stack - Full tech stack details
๐ ๏ธ Development Workflowโ
Available Commandsโ
For complete development commands and code style guidelines, see Development Guide.
Key commands:
yarn start # Development server
yarn build # Production build
yarn test # Run all tests
yarn lint # Check code quality
yarn fix-lint # Auto-fix linting issues
๐งช Testingโ
We use Vitest for testing with these patterns:
- Unit tests co-located with source files (
*.test.ts
) - Mock data and snapshot testing
- Browser testing with Playwright for integration tests
# Run specific test patterns
yarn test src/utils/color.test.ts
yarn test src/visualizations/noodles/
๐จ Architecture Overviewโ
For detailed architecture information, see Architecture Guide.
Key concepts:
- Node-based system for visual programming
- Theatre.js integration for timeline control
- Deck.gl + MapLibre for 3D visualizations
๐ Contributing Guidelinesโ
Before You Startโ
- Check existing issues for similar work or discussion
- Create an issue for significant changes or new features
- Fork the repository and create a feature branch
Making Changesโ
- Follow the code style guidelines
- Write tests for new functionality
- Migration Scripts: Add any necessary migrations
- Update documentation if needed
- Run linting before committing:
yarn fix-lint
- Ensure tests pass:
yarn test
Pull Request Processโ
- Create descriptive PR title and description
- Link related issues in the PR description
- Ensure CI passes (linting, tests, build)
- Request review from maintainers
- Address feedback promptly
Commit Message Formatโ
Use clear, descriptive commit messages:
feat: add new geospatial visualization node
fix: resolve Theatre.js timeline synchronization issue
docs: update API documentation for operators
refactor: improve performance of arc geometry calculations
๐ Reporting Issuesโ
When reporting bugs or requesting features:
- Search existing issues first
- Use issue templates
- Provide clear reproduction steps
- Include system information (OS, browser, Node version)
- Add relevant code samples or screenshots
๐ Additional Resourcesโ
- Product Overview - What Noodles.gl does and key features
- Development Guide - Additional development commands
๐ค Communityโ
We welcome contributions of all kinds:
- ๐ Bug fixes and issue reports
- โจ New features and enhancements
- ๐ Documentation improvements
- ๐งช Tests and quality improvements
- ๐ก Ideas and architectural discussions
๐ Licenseโ
By contributing to Noodles.gl, you agree that your contributions will be licensed under the same license as the project, Apache 2.0.
Thank you for contributing to Noodles.gl! Your efforts help make geospatial visualization and animation more accessible to everyone. ๐