Thank you for your interest in contributing! Here's how to get started.
- Fork and clone the repository
- Install dependencies:
cd app && pnpm install - Copy
app/.env.exampletoapp/.envand configure - Start PostgreSQL and run migrations:
pnpm exec drizzle-kit migrate - Start the dev server:
pnpm run dev
- Create a feature branch from
main - Make your changes with clear, descriptive commits
- Ensure the build passes:
pnpm run build - Update documentation if adding new features or pages
- Open a pull request with a description of what changed and why
- TypeScript for all source files
- Tailwind CSS for styling (no custom CSS unless necessary)
- Server Components by default; use
"use client"only when needed - Follow existing patterns for API routes (zod validation, error handling)
- Use
console.errorfor error logging in API routes
- Use Drizzle ORM schema definitions in
app/src/lib/db/schema.ts - Generate migrations:
pnpm run db:generate - Never edit migration files directly after they've been committed
- Create a page under
app/src/app/<route>/page.tsx - Create an API route under
app/src/app/api/metrics/<name>/route.ts - Add the page to the sidebar in
app/src/components/layout/sidebar.tsx - Add the page to the landing page sections in
app/src/app/page.tsx - Add metric definitions to the reference page at
app/src/app/reference/page.tsx
Open an issue with:
- Clear description of the problem or feature request
- Steps to reproduce (for bugs)
- Expected vs actual behavior