Thanks for your interest in contributing! This guide covers everything you need to get started.
git clone https://github.com/moollaza/repo-remover.git
cd repo-remover
bun install
bun run devVisit http://localhost:5173 to see the app running.
- Fork the repo and create a feature branch from
main - Make your changes
- Run checks before committing:
bun run lint && bun run test:unit && bun run build
- Commit using Conventional Commits format:
fix: resolve token validation errorfeat: add org filter to dashboardfeat!: redesign authentication flow(breaking change)chore:,docs:,refactor:,test:for non-release changes
- Open a pull request and fill out the PR template
- Use Tailwind semantic color classes (
bg-background,text-foreground,bg-content1,border-divider) — not hardcoded colors likebg-gray-100 - Colors are defined as CSS custom properties in
src/globals.cssand adapt to light/dark themes
- Use type-only imports for
@octokit/*types:import { type Repository } from "@octokit/graphql-schema";
- Components over 200 LOC should extract logic into custom hooks
- Co-locate tests next to components (e.g.,
button.tsx+button.test.tsx)
- Use the custom render utility (wraps components with providers):
import { render, screen } from "@/utils/test-utils";
- Follow RTL query priority:
getByRole>getByLabelText>getByTestId - MSW mocks for GitHub API calls in unit tests
- Test user behavior, not implementation details
bun run test:unit # Unit tests (Vitest + RTL + MSW)
bun run test:e2e # E2E tests (Playwright)
bun run test:e2e:fast # E2E with fast-fail
bun run test:all # Unit + E2ECopy .env.example to see available variables. None are required for development — the app works without any env vars configured.
This repo includes .claude/ configuration files for contributors using Claude Code. These are optional — you don't need Claude Code to contribute.
This app follows a zero-knowledge architecture — all GitHub API calls happen client-side. Never add backend dependencies or server-side token handling. See SECURITY.md for details.
Open an issue — we're happy to help.