Ticket → PR is a Next.js app that turns a structured Jira-style ticket into a GitHub branch or pull request in one connected repository.
- Authenticates users with Google via Auth.js.
- Connects one GitHub repository per user.
- Stores ticket details and creates a Codex run record.
- Dispatches a GitHub Actions worker to execute Codex against the target repo.
- Tracks run lifecycle (
queued,running,completed,failed) and stores branch/PR outputs.
- User creates a ticket from the app UI.
- App persists ticket + run metadata in Postgres via Prisma.
- App dispatches
.github/workflows/ticket-to-pr-worker.yml. - Worker checks out the target repo, writes
AGENTS.md/PLAN.md, runs Codex, and pushes changes. - Worker creates or reuses a PR and uploads run result metadata.
DATABASE_URLNEXTAUTH_URLNEXTAUTH_SECRETNEXT_PUBLIC_APP_URLWORKER_APP_BASE_URLGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGITHUB_CLIENT_IDGITHUB_CLIENT_SECRETGITHUB_TOKEN_ENCRYPTION_KEYOPENAI_API_KEYOPENAI_CODEX_MODELOPENAI_PROGRESS_MODEL(optional)WORKER_GITHUB_TOKENWORKER_REPO_OWNERWORKER_REPO_NAMEWORKER_SHARED_SECRET
In the worker repo (dominiksipowicz/jira-2-pr):
OPENAI_API_KEYWORKER_SHARED_SECRET
WORKER_SHARED_SECRET must exactly match the app environment variable.
pnpm install
cp .env.example .env.local # fill values
pnpm prisma:generate
pnpm db:push
pnpm devOpen http://localhost:3000.
pnpm lint
pnpm test
pnpm build- This is intentionally scoped to one connected repository per user.
PLAN.mdandAGENTS.mdare generated in the target repo during worker execution.
- Ralph loop style iteration for repeated fix-and-verify passes.
- Better Codex prompts and repo-specific prompt tuning.
- Ticket attachments and file uploads passed into the run context.
- Native Jira and Linear integrations instead of paste-only ticket input.
- Support for multiple connected repositories per user.