Thank you for taking the time to contribute! 🫶
Below is a lightweight guide for common contribution workflows. If something is unclear or missing, please open an issue so we can improve it.
There are two ways to set up your local development environment:
This is the easiest way to get started as it sets up all dependencies for you.
- Fork the repository and clone your fork.
- Build and run the Docker containers:
docker-compose up --build
- The application will be available at
http://localhost:3000.
- Fork the repository and clone your fork.
- Install dependencies with npm:
npm install
- Copy
env.exampleto.env.localand fill in any variables that require real values. - Initialize the database:
npm run db:push npm run db:seed
- Run the app in development mode:
npm run dev
- Navigate to http://localhost:3000.
Before opening a pull request, run the full test + lint pipeline locally:
npm run lint # ESLint + Prettier
npm run types # TypeScript
npm run test:unit # Unit tests (Jest)
npm run test:e2e # E2E tests (Playwright)- Create a new branch from
mainusing a descriptive name, e.g.feat/add-dark-mode. - Follow the Conventional Commits spec for commit messages (our CI enforces this).
- Keep pull requests small and focused (< ~300 LOC); large PRs are hard to review.
- Update documentation and tests alongside your code.
- Title uses Conventional Commits format.
- Linked to an existing issue (or explains the use-case clearly).
- All CI checks pass.
- Added/updated tests.
- Updated documentation.
Please do not open GitHub issues for security disclosures. Instead, email security@example.com.
By contributing, you agree that your contributions will be licensed under the MIT License unless stated otherwise.