This document provides setup instructions for repository maintainers.
To protect the main branch, go to Settings > Rules > Rulesets > New ruleset > New branch ruleset.
| Field | Value |
|---|---|
| Ruleset name | Protect main |
| Enforcement status | Active |
Add yourself (@maziggy) to bypass if you want to push directly in emergencies.
Set "Always" or "Pull requests only" based on preference.
Click Add target > Include by pattern and enter: main
Enable these rules:
Restrict deletions - Prevents branch deletion
Require a pull request before merging
1Require status checks to pass
Backend LintBackend TestsFrontend LintFrontend Type CheckFrontend TestsFrontend BuildDocker BuildBlock force pushes - Prevents history rewriting
The CI workflow (.github/workflows/ci.yml) runs on:
mainmain| Job | Purpose | Required for PR |
|---|---|---|
backend-lint |
Ruff linting + format check | Yes |
backend-tests |
Unit tests | Yes |
frontend-lint |
ESLint | Yes |
frontend-typecheck |
TypeScript compilation | Yes |
frontend-tests |
Vitest unit tests | Yes |
frontend-build |
Vite production build | Yes |
docker-build |
Docker image builds | Yes |
Backend lint failures:
ruff check --fix backend/
ruff format backend/
Frontend lint failures:
cd frontend
npm run lint -- --fix
Frontend type errors:
cd frontend
npx tsc --noEmit
# Fix the errors shown
Frontend test failures:
cd frontend
npm run test:run
# Fix failing tests
The CODEOWNERS file automatically requests reviews from @maziggy for all changes.
To add more code owners:
.github/CODEOWNERS@ prefixExample:
/backend/ @maziggy @backend-contributor
/frontend/ @maziggy @frontend-contributor
pyproject.tomlCHANGELOG.mdAfter merge, tag the release:
git tag v0.1.x
git push origin v0.1.x
Run docker-publish.sh to publish Docker image
To enable automated dependency updates, create .github/dependabot.yml:
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
groups:
python-dependencies:
patterns:
- "*"
- package-ecosystem: "npm"
directory: "/frontend"
schedule:
interval: "weekly"
groups:
npm-dependencies:
patterns:
- "*"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"