Contributing
Meridian is open source under the Apache 2.0 license and welcomes contributions from the community. Whether you're fixing a bug, adding a feature, or improving documentation, this guide covers everything you need to get started.
Code of Conduct
All contributors are expected to follow the Contributor Covenant Code of Conduct. Please read it before participating.
Development setup
Prerequisites
- Node.js 18 or later
- pnpm (install with
npm install -g pnpm) - Git
- A Neon account (free tier) for the database
- An OpenAI API key for testing proxy endpoints (optional but recommended)
Setup steps
# 1. Fork the repo on GitHub, then clone your fork
git clone https://github.com/YOUR_USERNAME/meridian
cd meridian
# 2. Install dependencies
pnpm install
# 3. Set up environment variables
cp .env.example .env
# Edit .env with your Neon DATABASE_URL and other values
# 4. Run database migrations
pnpm prisma migrate dev
# 5. Start the development server
pnpm dev
# 6. (Optional) Open Prisma Studio to inspect the database
pnpm prisma studioThe app will be running at http://localhost:3000.
Branch naming
Use a descriptive branch name with one of these prefixes:
| Prefix | Use for | Example |
|---|---|---|
feat/ | New features | feat/mistral-provider |
fix/ | Bug fixes | fix/streaming-token-count |
docs/ | Documentation changes | docs/python-examples |
test/ | Test additions or fixes | test/provider-routing |
Commit conventions
We follow Conventional Commits. Each commit message should have the format:
<type>: <description>
# Examples:
feat: add Anthropic Claude provider support
fix: correct token count for streaming responses
docs: update quickstart with Python examples
test: add integration tests for proxy key rotation
refactor: extract provider detection into shared utilityValid types: feat, fix, docs, test, refactor, chore, ci.
Pull request process
- Fork the repository and create a new branch from
main. - Make your changes. Follow the coding standards below.
- Write tests. All new features and bug fixes should include tests.Run tests
pnpm test # Unit + integration tests (Vitest) pnpm test:e2e # End-to-end tests (Playwright) - Commit using Conventional Commits format.
- Push your branch to your fork.
- Open a pull request against
main. Fill out the PR template checklist. - CI checks must pass (lint, typecheck, tests).
- A maintainer will review your PR. Address any feedback and push updates.
- Once approved, the PR will be squash-merged into
main.
Coding standards
- TypeScript strict mode — no
anytypes. - ESLint + Prettier formatting. Run
pnpm lintbefore committing. - JSDoc comments on all exported functions.
- API routes return consistent error format:
{ error: string, code: string }. - Business logic in
/lib— route handlers should be thin wrappers. - UI components receive data as props — no database calls inside components.
- Use shadcn/ui for all UI elements (buttons, cards, tables, dialogs, etc.).
Good first issues
Looking for a place to start? These issues are tagged as beginner-friendly:
Add Mistral AI provider support
Implement provider detection and API forwarding for Mistral models.
Add request rate limiting per proxy key
Implement configurable requests/minute limits per proxy key.
Add CSV export for usage logs
Add a download button to the dashboard that exports usage data as CSV.
Add dark mode toggle to dashboard
Implement a theme toggle using next-themes and Tailwind dark mode.
Add webhook notifications on usage threshold
Notify users via webhook when their usage exceeds a configurable cost threshold.
Reporting bugs
Found a bug? Open an issue using the bug report template. Include steps to reproduce, expected vs actual behavior, and your environment details.
Suggesting features
Have an idea? Open an issue using the feature request template. Describe the problem, your proposed solution, and any alternatives you've considered.
We need your help
Meridian is actively looking for contributors. We especially need:
- TypeScript developers familiar with Next.js and Prisma
- Documentation writers to expand guides and examples
- Developers with Anthropic or Google API access for testing provider integrations