Thank you for your interest in contributing to Research Nexus Score! This project aims to improve metadata coverage across the scholarly communication ecosystem, and we welcome contributions of all kinds.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Workflow
- Pull Request Process
- Coding Standards
- Reporting Bugs
- Suggesting Features
This project follows a simple code of conduct: be respectful, inclusive, and constructive. We're all here to improve scholarly communication infrastructure together.
- Node.js 18 or higher
- pnpm 10 or higher
- Git
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/nexus-score.git cd nexus-score -
Add the upstream remote:
git remote add upstream https://github.com/aadivar/nexus-score.git
-
Install dependencies:
pnpm install
-
Build all packages:
pnpm build
-
Create environment file:
cp apps/web/.env.example apps/web/.env.local # Edit .env.local with your email for Crossref API -
Start development server:
pnpm dev
We welcome many types of contributions:
- Bug fixes: Found something broken? Fix it!
- Features: Have an idea for improvement? Implement it!
- Documentation: Help others understand the project
- Tests: Improve code coverage and reliability
- Scoring methodology: Propose new metrics or dimensions
- UI/UX improvements: Make the web app more user-friendly
- MCP tools: Add new tools for AI assistant integration
Look for issues labeled good first issue - these are specifically chosen to be approachable for new contributors.
nexus-score/
├── apps/
│ └── web/ # Next.js web application
├── packages/
│ ├── core/ # Scoring library
│ └── mcp-server/ # MCP server for AI assistants
cd apps/web
pnpm devThe web app runs on http://localhost:3000.
cd packages/core
pnpm build
pnpm testChanges to the core library require rebuilding before they're reflected in the web app.
pnpm mcp# Run all tests
pnpm test
# Run tests for a specific package
pnpm --filter @nexus-score/core test# Lint all packages
pnpm lint
# Fix auto-fixable issues
pnpm lint --fix- Check existing issues and PRs to avoid duplicate work
- Create an issue for significant changes to discuss the approach
- Keep PRs focused - one feature or fix per PR
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following our coding standards
-
Test your changes:
pnpm build pnpm test pnpm lint -
Commit with a clear message:
git commit -m "Add: brief description of your change"Use prefixes like:
Add:for new featuresFix:for bug fixesUpdate:for improvementsDocs:for documentationRefactor:for code refactoring
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request on GitHub
- Code builds without errors (
pnpm build) - Tests pass (
pnpm test) - Linting passes (
pnpm lint) - PR has a clear description of changes
- Documentation updated if needed
- Use TypeScript for all new code
- Enable strict mode
- Prefer
interfaceovertypefor object shapes - Use explicit return types for functions
- Use functional components with hooks
- Prefer Server Components where possible
- Use Tailwind CSS for styling
- Follow Next.js App Router conventions
- Write self-documenting code with clear names
- Add comments for complex logic
- Keep functions small and focused
- Avoid premature optimization
- React components:
PascalCase.tsx - Utilities:
kebab-case.ts - Types:
types.tsor inline
- Check if the bug is already reported in Issues
- Try to reproduce with the latest version
**Description**
A clear description of the bug.
**Steps to Reproduce**
1. Go to '...'
2. Click on '...'
3. See error
**Expected Behavior**
What should happen.
**Actual Behavior**
What actually happens.
**Environment**
- OS: [e.g., macOS 14.0]
- Browser: [e.g., Chrome 120]
- Node.js: [e.g., 20.10.0]
**Screenshots**
If applicable, add screenshots.We love feature suggestions! Please create an issue with:
- Problem statement: What problem does this solve?
- Proposed solution: How would you like it to work?
- Alternatives considered: Other approaches you thought of
- Additional context: Mockups, examples, etc.
If you want to propose changes to the scoring methodology:
- Research: Understand the current methodology in
packages/core/src/scoring/ - Justify: Explain why the change improves metadata coverage measurement
- Document: Update the methodology documentation
- Implement: Make the code changes
- Analyze: Show impact on existing scores (sample publishers)
- Open a Discussion for questions
- Email: varma2friend@gmail.com
- LinkedIn: @aadi-narayana-varma-dantuluri
Thank you for contributing to Research Nexus Score and helping improve scholarly metadata coverage!