First off, thank you for considering contributing to GitHub Wrapped! 🎉
This project and everyone participating in it is governed by our commitment to providing a welcoming and inclusive environment. Please be respectful and constructive in all interactions.
Before creating bug reports, please check existing issues to avoid duplicates. When creating a bug report, include:
- Clear title describing the issue
- Steps to reproduce the behavior
- Expected behavior vs what actually happened
- Screenshots if applicable
- Environment details (browser, OS, Node.js version)
Feature suggestions are welcome! Please include:
- Clear description of the feature
- Use case explaining why this would be useful
- Possible implementation ideas (optional)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Node.js 20+
- npm or yarn
- GitHub OAuth App credentials
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/gitwrapped.git cd gitwrapped -
Install dependencies:
npm install
-
Create a
.envfile with your credentials:GITHUB_ID=your_github_oauth_app_id GITHUB_SECRET=your_github_oauth_app_secret NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your_random_secret_key
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser
The project follows a standard Next.js App Router structure:
src/app: Application routes and pagesapi/: Backend API routes (Auth, GitHub stats)wrapped/: The main "Wrapped" result page
src/components: React componentswrapped/: Components specific to the Wrapped presentation (slides, charts)wrapped/story/: Individual slide components for the Story Mode
src/lib: Utility functionsgithub.ts: GitHub GraphQL API client and queriesauth.ts: NextAuth configuration
public: Static assets
- Use TypeScript for all new files
- Define proper types/interfaces for props and data
- Avoid
anytype when possible
- Use functional components with hooks
- Keep components small and focused
- Use meaningful component and variable names
- Use Tailwind CSS utility classes
- Follow mobile-first responsive design
- Keep consistent spacing and color schemes
This project uses ESLint and Prettier. Run before committing:
npm run lintFollow conventional commits format:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
Examples:
feat: add contribution streak animation
fix: resolve language chart color issue
docs: update README with setup instructions
Feel free to open an issue for any questions or concerns. We're happy to help!
Thank you for contributing! 🚀