Thank you for your interest in contributing to GPU Profiler! This document provides guidelines and information for contributors.
- Getting Started
- Development Setup
- Making Changes
- Code Style
- Testing
- Submitting Changes
- Issue Guidelines
- Feature Requests
- Bug Reports
Before contributing, please:
- Read this contributing guide
- Check existing issues and pull requests
- Join our Discord community
- Familiarize yourself with the Code of Conduct
- Node.js 18+
- npm or yarn
- Git
# Clone the repository
git clone https://github.com/RightNow-AI/gpu-profiler.git
cd gpu-profiler
# Install dependencies
npm install
# Start development server
npm run dev
# Open http://localhost:3000npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run type-check- Run TypeScript type checking
Use descriptive branch names following this pattern:
feature/description- For new featuresfix/description- For bug fixesdocs/description- For documentation changesrefactor/description- For code refactoring
Follow conventional commit format:
type(scope): description
[optional body]
[optional footer]
Types:
feat- New featurefix- Bug fixdocs- Documentation changesstyle- Code style changes (formatting, etc.)refactor- Code refactoringtest- Adding or updating testschore- Maintenance tasks
Examples:
feat(visualizations): add new heatmap component
fix(parsers): handle malformed nvprof files
docs(readme): update installation instructions
- Use TypeScript for all new code
- Prefer interfaces over types for object shapes
- Use strict type checking
- Add JSDoc comments for complex functions
- Use functional components with hooks
- Follow the naming convention:
PascalCasefor components - Keep components focused and single-purpose
- Use proper prop types and interfaces
app/
├── components/ # React components
│ ├── ui/ # Reusable UI components
│ └── visualizations/ # D3.js visualization components
├── lib/ # Utility functions and parsers
├── store/ # State management
├── types/ # TypeScript type definitions
└── globals.css # Global styles
- Use Tailwind CSS for styling
- Follow utility-first approach
- Use CSS custom properties for theme values
- Maintain consistent spacing and typography
Before submitting changes, test:
- File Upload: Test with various .nvprof, .nsys-rep, and .json files
- Visualizations: Verify timeline, flame graph, and heatmap work correctly
- Responsive Design: Test on different screen sizes
- Browser Compatibility: Test in Chrome, Firefox, Safari, Edge
You can use the demo data in app/lib/demo-data.ts for testing visualizations.
- Fork the repository
- Create a feature branch from
main - Make your changes following the guidelines above
- Test your changes thoroughly
- Commit with descriptive messages
- Push to your fork
- Create a pull request
Your PR should include:
- Clear description of changes
- Screenshots for UI changes
- Test instructions
- Any breaking changes
- Related issues
- All PRs require review from maintainers
- Address feedback promptly
- Keep PRs focused and reasonably sized
- Update documentation as needed
- Search existing issues
- Check the documentation
- Try the latest version
- Reproduce the issue
Use the appropriate issue template:
- Bug Report - For bugs and errors
- Feature Request - For new features
- Documentation - For documentation improvements
When requesting features:
- Describe the problem you're solving
- Explain why this feature is needed
- Provide examples of similar features
- Consider implementation complexity
- Be specific about requirements
When reporting bugs:
- Use the bug report template
- Describe the expected vs actual behavior
- Provide steps to reproduce
- Include error messages and logs
- Specify your environment (OS, browser, etc.)
- Attach sample files if relevant
Include:
- Operating System
- Browser and version
- Node.js version
- GPU Profiler version
- Sample profiling file (if applicable)
- Discord: Join our community
- Issues: GitHub Issues
- Documentation: docs.rightnowai.co
Contributors will be recognized in:
- Repository contributors list
- Release notes
- Project documentation
Thank you for contributing to GPU Profiler! 🚀