Thank you for your interest in contributing to GitHub Stats! 🎉
If you find a bug, please create an issue with:
- A clear title and description
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Screenshots (if applicable)
We welcome feature suggestions! Please create an issue with:
- A clear title and description
- Use case and benefits
- Example implementation (if you have ideas)
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature) - Make your changes
- Ensure code follows the existing style
- Test your changes
- Commit with clear messages (
git commit -m 'Add: feature description') - Push to your branch (
git push origin feature/your-feature) - Open a Pull Request
To add a new theme:
- Edit the appropriate file in
src/utils/themes/:base.ts- General-purpose themes (stats, languages)graph.ts- Graph/heatmap optimized themesbadge.ts- Badge-specific themes
- Test the theme with
?theme=yourtheme - Submit a PR with a screenshot
To add a new icon or update an existing one in public/assets/icons/:
-
Format Requirements:
- SVG format only
- Width and height:
48x48 - Use consistent margins via viewBox (typically 8-12px)
- Example:
viewBox="-10 -10 44 44"for 10px margin
-
Animation: Add the popup animation style:
<style> @keyframes popup { 0% { opacity: 0; transform: scale(0); } 100% { opacity: 1; transform: scale(1); } } #iconname-logo { animation: popup 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards; } </style>
-
Structure:
- Wrap paths in a
<g>element with unique id:<g id="iconname-logo"> - Use
fill="currentColor"for main paths to support theming - Include optional
<title>tag for accessibility
- Wrap paths in a
-
File Naming:
- Use lowercase with hyphens:
icon-name.svg - Match the technology/framework name
- Use lowercase with hyphens:
-
Testing:
- Verify the icon displays correctly in the icons gallery
- Test with different themes to ensure colors work properly
# Install dependencies
npm install
# Setup database
npm run db:push
# Run in development mode
npm run dev
# Build
npm run build
# Run production build
npm start
# Run in cluster mode (production)
npm run start:cluster- Use TypeScript
- Follow existing naming conventions
- Add comments for complex logic
- Keep functions focused and small
Feel free to open an issue for any questions!
Thank you for contributing! 🙌