First off, thank you for considering contributing to Free Crypto News API! 🎉
It's people like you that make this project such a great tool for the crypto community.
- Code of Conduct
- How Can I Contribute?
- Getting Started
- Development Process
- Pull Request Process
- Style Guidelines
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 you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples (curl commands, code snippets)
- Describe the behavior you observed and what you expected
- Include your environment (OS, Node.js version, etc.)
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the suggested feature
- Explain why this feature would be useful to most users
- List any alternatives you've considered
We love pull requests! Here are some ideas:
- New news sources - Add more crypto news outlets
- SDK improvements - Enhance existing SDKs or add new ones
- Documentation - Improve docs, add examples, fix typos
- Bug fixes - Fix reported issues
- New endpoints - Add useful API endpoints
- Performance - Optimize caching, reduce response times
- Translations - Help translate to new languages
- Node.js 18+ — Download
- pnpm —
npm install -g pnpm(package manager) - Bun —
curl -fsSL https://bun.sh/install | bash(script runner) - Git — Download
# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/free-crypto-news.git
cd free-crypto-news
# 3. Install dependencies
pnpm install
# 4. Create environment file (optional)
cp .env.example .env.local
# 5. Start development server
bun run dev
# 6. Open http://localhost:3000Note: The app runs with zero configuration. Redis, database, and AI keys are all optional — the app gracefully falls back.
├── src/
│ ├── app/ # Next.js pages and 150+ API routes
│ │ ├── [locale]/ # i18n-wrapped user-facing pages
│ │ └── api/ # Serverless API routes (Edge Runtime)
│ ├── components/ # 170+ React components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # 200+ utility modules
│ ├── types/ # TypeScript type definitions
│ └── __tests__/ # Unit tests
├── archive/ # Static JSON data store
├── sdk/ # 13 language SDKs
├── mcp/ # Claude MCP server
├── widget/ # Embeddable HTML widgets
├── scripts/ # Build and archive scripts
├── messages/ # i18n translations (42 locales)
├── drizzle/ # Database migrations
├── e2e/ # Playwright E2E tests
├── stories/ # Storybook component stories
└── docs/ # Documentation (MkDocs)
-
Create a branch from
main:git checkout -b feature/your-feature-name # or git checkout -b fix/bug-description -
Make your changes following our style guidelines
-
Test your changes locally:
bun run build # Verify build succeeds bun run lint # Check code style bun run typecheck # Check TypeScript types bun run test # Run unit tests
-
Commit your changes with a clear message:
git commit -m "feat: add new endpoint for market data" # or git commit -m "fix: resolve caching issue in /api/news"
We follow Conventional Commits:
feat:- New featurefix:- Bug fixdocs:- Documentationstyle:- Code style (formatting, etc.)refactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
-
Verify changelog coverage:
# Check if your changes are documented node scripts/analyze-commits.js --check --since=HEAD~5 -
Push to your fork and open a PR
- Update documentation if you're changing functionality
- Update CHANGELOG.md for significant changes:
# See what entries might be missing node scripts/analyze-commits.js # Auto-add missing entries (review before committing) node scripts/analyze-commits.js --update
- Add tests for new features if applicable
- Ensure CI passes - the build must succeed
- Request review from maintainers
- Address feedback promptly and constructively
feat: Add whale transaction tracking endpoint
fix: Resolve memory leak in RSS parser
docs: Add Python SDK examples
- Use TypeScript for new code when possible
- Use meaningful variable and function names
- Add JSDoc comments for public functions
- Keep functions small and focused
- Follow RESTful conventions
- Return consistent response formats
- Include proper error handling
- Add response caching where appropriate
- Use clear, concise language
- Include code examples
- Keep README sections up to date
Feel free to:
- Open an issue with the
questionlabel - Start a discussion in GitHub Discussions
- Reach out to maintainers
Contributors will be:
- Listed in our README
- Credited in release notes
- Forever appreciated by the community! 💜
Thank you for contributing! Every contribution, no matter how small, helps make this project better for everyone. 🚀
Please read and follow our Code of Conduct.