Thank you for your interest in contributing to Qurious! We're excited to have you join our community of researchers, developers, and open-source enthusiasts working to make research more accessible.
- Code of Conduct
- Getting Started
- How Can I Contribute?
- Development Workflow
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Community
By participating in this project, you agree to abide by our community standards. We are committed to providing a welcoming and inclusive environment for everyone.
- Be respectful and considerate in your communication
- Welcome newcomers and help them get started
- Accept constructive criticism gracefully
- Focus on what is best for the community and project
- Show empathy towards other community members
Before you begin, ensure you have the following installed:
- Node.js (version 18 or higher)
- pnpm (installed via Corepack)
- Git
- A code editor (we recommend VS Code)
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/qurious.git cd qurious -
Add the upstream remote:
git remote add upstream https://github.com/QuriousAI/qurious.git
-
Install dependencies:
pnpm install
-
Set up Convex:
pnpm run convex:login
-
Configure environment variables:
- Copy
.env.exampleto.env.localinapps/web - Add your Convex URL and other required variables
- Copy
-
Start the development server:
pnpm dev
Before creating a bug report, please check existing issues to avoid duplicates. When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior vs. actual behavior
- Screenshots or GIFs if applicable
- Your environment (OS, Node version, browser, etc.)
- Any relevant error messages or logs
Use the bug report template when creating a new issue.
We love feature suggestions! When proposing a new feature:
- Check if the feature has already been suggested
- Provide a clear description of the problem it solves
- Explain how the feature would work
- Consider how it fits into the existing project architecture
- Include mockups or examples if applicable
Use the feature request template when creating a new issue.
We welcome code contributions of all sizes! Here are some ways to contribute:
- Fix bugs listed in the issues
- Implement features from the roadmap
- Improve documentation
- Add tests to improve coverage
- Refactor code for better performance or readability
- Fix typos or improve clarity in comments
Use descriptive branch names with the following prefixes:
feature/- New features (e.g.,feature/paper-annotations)fix/- Bug fixes (e.g.,fix/search-crash)docs/- Documentation changes (e.g.,docs/api-endpoints)refactor/- Code refactoring (e.g.,refactor/database-queries)test/- Adding or updating tests (e.g.,test/search-integration)chore/- Maintenance tasks (e.g.,chore/update-dependencies)
Regularly sync your fork with the upstream repository:
git fetch upstream
git checkout main
git merge upstream/main
git push origin main- Comment on the issue to let others know you're working on it
- Create a new branch from
main:git checkout -b feature/your-feature-name
- Make your changes following our coding standards
- Test your changes thoroughly
- Commit your changes following our commit guidelines
- Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request against the
mainbranch
- Use TypeScript for all new code
- Avoid using
anytype; prefer specific types orunknown - Use interfaces for object shapes, types for unions/intersections
- Export types alongside implementations
- Use functional components with hooks
- Keep components small and focused on a single responsibility
- Use descriptive prop names with TypeScript interfaces
- Implement proper error boundaries where appropriate
- Use Tailwind CSS utility classes
- Follow the existing design system (shadcn/ui)
- Maintain responsive design principles
- Ensure accessibility (ARIA labels, keyboard navigation, etc.)
- Write clean, self-documenting code
- Add comments for complex logic
- Keep functions small and focused
- Follow DRY (Don't Repeat Yourself) principles
- Use meaningful variable and function names
- Write tests for new features and bug fixes
- Maintain or improve test coverage
- Run tests before submitting a PR:
pnpm test
We follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoring without changing functionalityperf: Performance improvementstest: Adding or updating testschore: Maintenance tasks, dependency updates
feat(search): add semantic search filtering
fix(chat): resolve message streaming issue
docs(readme): update installation instructions
refactor(api): simplify paper fetching logic- Use the imperative mood ("add feature" not "added feature")
- Keep the subject line under 72 characters
- Reference issues and PRs in the footer (e.g., "Closes #123")
- Explain the "why" in the body, not just the "what"
- Ensure your code follows our coding standards
- Run tests and ensure they pass
- Update documentation if needed
- Add or update tests for your changes
- Rebase your branch on the latest
main - Check that your commits follow our commit guidelines
When opening a PR, include:
- What - A clear description of what changes you made
- Why - The reason for these changes (link to issue if applicable)
- How - A brief explanation of your approach
- Testing - How you tested your changes
- Screenshots - If applicable, add before/after screenshots
- At least one maintainer review is required
- Address all review comments and feedback
- Be open to suggestions and constructive criticism
- CI/CD checks must pass before merging
- Maintain a respectful and collaborative tone
Once approved, a maintainer will merge your PR. Thank you for your contribution!
If you need help or have questions:
- Discord: Join our Discord server
- Twitter/X: Follow us @QuriousAI_
- GitHub Discussions: Ask questions in our discussions forum
- Issues: Create an issue with the "question" label
- Watch the repository for updates
- Join our Discord for announcements
- Follow our blog and social media
All contributors will be:
- Added to our Contributors section
- Recognized in release notes for significant contributions
- Given credit in relevant documentation
By contributing to Qurious, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to Qurious! Your efforts help make research more accessible to everyone. 🚀
Questions? Reach out on Discord or open a discussion on GitHub.