First off, thank you for considering contributing to Linkfy! 🎉 It's people like you that make the open source community such an amazing place to learn, inspire, and create.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Workflow
- Style Guidelines
- Commit Messages
- Pull Request Process
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
- Node.js 20+
- Yarn (recommended) or npm
- Git
- A code editor (VS Code recommended)
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/linkfy.git - Install dependencies:
yarn install - Set up environment variables (see main README.md)
- Start development servers:
yarn dev:client&yarn dev:server
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and what you expected
- Include screenshots if applicable
- Include your environment details (OS, browser, Node version)
Enhancement suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- Include mockups or examples if applicable
We welcome code contributions! Here are areas where we especially need help:
- 🎵 New Music Platforms - Adding support for Apple Music, Amazon Music, etc.
- 🌍 Internationalization - Translating the app to new languages
- 🎨 UI/UX Improvements - Enhancing the user interface
- 📱 Mobile Responsiveness - Improving mobile experience
- 🧪 Testing - Adding unit and integration tests
- 📚 Documentation - Improving guides and API docs
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation updatesrefactor/description- Code refactoringtest/description- Adding tests
- Create a new branch:
git checkout -b feature/amazing-feature - Make your changes
- Add/update tests if applicable
- Ensure all tests pass:
yarn test - Run linting:
yarn lint - Commit your changes (see commit message guidelines)
- Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
- Use TypeScript for all new code
- Follow existing code patterns
- Use meaningful variable and function names
- Add JSDoc comments for public APIs
- Prefer functional programming patterns
- Use Zod for runtime validation
- Use functional components with hooks
- Keep components small and focused
- Use TypeScript interfaces for props
- Follow existing naming conventions
- Use shadcn/ui components when possible
- Use Tailwind CSS classes
- Follow mobile-first responsive design
- Maintain consistent spacing using Tailwind's system
- Use semantic color names from the theme
We follow the Conventional Commits specification:
type(scope): description
[optional body]
[optional footer]
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Formatting, missing semicolons, etc.refactor:- Code refactoringtest:- Adding missing testschore:- Updating build tasks, package manager configs, etc.
feat(conversion): add support for YouTube playlist URLs
fix(api): handle spotify rate limiting errors
docs(readme): update installation instructions
test(services): add unit tests for youtube service
- Fill out the PR template completely
- Update documentation if you've changed APIs
- Add or update tests for your changes
- Ensure all checks pass (tests, linting, type checking)
- Request reviews from maintainers
- Address feedback promptly and professionally
- Keep PRs focused - one feature or fix per PR
Use the same format as commit messages:
feat(scope): add amazing new feature
## What does this PR do?
Brief description of changes
## Type of change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
## Testing
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
## Screenshots (if applicable)
Add screenshots to help explain your changes
## Checklist
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings# Run all tests
yarn test
# Run client tests
yarn test:client
# Run server tests
yarn test:server
# Run tests in watch mode
yarn test:client --watch- Write tests for all new features and bug fixes
- Use descriptive test names that explain the behavior
- Follow the existing test patterns
- Mock external API calls
- Test both happy path and error cases
- Production deployments are triggered automatically when PRs are merged to
master - Only maintainers can deploy to production
- Production URLs:
- Client: Deployed via Vercel
- Server: Deployed via Railway
- React Documentation
- NestJS Documentation
- TypeScript Handbook
- Tailwind CSS Documentation
- YouTube Data API
- Spotify Web API
- 🐛 Report Issues: GitHub Issues
- 💡 Request Features: GitHub Issues
- ❓ Ask Questions: GitHub Issues
- 💬 Contact Maintainers: Create an issue and tag the maintainers
All contributors will be recognized in our README and release notes. Thank you for making Linkfy better!
Remember: The best contribution is one that helps users accomplish their goals more effectively. Whether it's a bug fix, new feature, or improved documentation, every contribution matters! 🌟