# PRD — paymyfines-pdf-application

Evidence date: 2026-10-07.

Source: `git@bitbucket.org:overdrive/paymyfines-pdf-application.git`, `master` at `e55f1b6` (2021-12-13, "Initial commit"). `origin/HEAD` points at that commit. The only branch is `master`.

There is no prior PRD in the source repository or in Silicon Ark. Nothing in the tree is a requirements document. Provenance is labelled on each statement.

The scan-host checkout named on the onboarding issue was not available. Findings are from the git revision above, which is the commit the issue names (`e55f1b691188fc8ba9c33a38f66a84c223ffdafb`, 2021-12-13 08:58:28 +0000).

## Product purpose

**Unknown.** The committed tree does not say what this repository is for.

The name `paymyfines-pdf-application` is the only hint. **Inferred from the name only:** a PDF application associated with Pay My Fines. No file states that.

Silicon Ark documents `pmf-backend-ah` and `pmf-frontend-ah` as Pay My Fines systems. `pmf-backend-ah` calls `POST http://10.106.3.158:8080/htmltopdf` when building a receipt PDF. That document does not name `paymyfines-pdf-application`. This repository does not refer to that URL, to `pmf-backend-ah`, to `pmf-frontend-ah`, or to `paymyfines-worker`. A shared product is **Unknown / Requires Confirmation**.

## Users and interactions

No user, role, screen, API client, or operator is defined.

| Actor | Evidence | Status |
|---|---|---|
| Repository author | The only commit is Jaco Brits, `jaco@overdrive.co.za` | **Implemented** as git metadata. Not an application role |
| End user, staff, payer, or operator | No source, route, or copy | **Absent** |

## Product behaviour

There is no runnable system in this repository.

Verified absences at `e55f1b6`:

- No source file in any application language.
- No solution, project, or package file.
- No test.
- No HTTP route, CLI command, PDF library call, queue consumer, or scheduled job.
- No README describing behaviour.
- No HTML, template, or sample PDF.

`git ls-tree -r e55f1b6` returns one path: `.gitignore`.

## Requirements recovered from the tree

No functional requirement is written down, and none is implemented as application behaviour. The observations below are what a later reader can check. They are not proposed product rules.

### OBS-001 — Repository contains no application

**Implemented.** `git ls-tree -r e55f1b6` returns `.gitignore` only.

There is nothing to build, start, or call. There is no PDF input, no PDF output, and no document template.

Confidence: High.

### OBS-002 — Ignore list is an unmodified example template

**Implemented.** `.gitignore` begins "These are some examples of commonly ignored file patterns" and "You should customize this list as applicable to your project", and links to `https://www.atlassian.com/git/tutorials/saving-changes/gitignore`.

The patterns cover Node artefacts, Java class files, Python bytecode, logs, jars, Maven `target/`, JetBrains `.idea/`, JUnit-style `TEST*.xml`, `.DS_Store`, `Thumbs.db`, `*.app`, `*.exe`, `*.war`, and several video and TIFF extensions. `dist/` is listed twice.

**Inferred:** this is the ignore file Bitbucket added on repository creation. The commit subject is "Initial commit" and the file is the only file in `e55f1b6`. The header tells the reader to customize it. It was not customized.

These patterns are not evidence of a Node, Java, Python, or Maven application. No matching source exists.

Confidence: High.

### OBS-003 — No product workflow exists

**Implemented** as an absence. There is no controller, handler, job, script, or documented procedure that accepts an input and produces an output.

Confidence: High.

## Workflows

None.

A reader who needs Pay My Fines receipt PDFs will not find that behaviour here. `pmf-backend-ah` documents a receipt path that posts HTML to an internal HTML-to-PDF service and then reads a PDF from S3. That behaviour lives in `pmf-backend-ah`, not in this tree. Whether this repository was intended to be that service is **Unknown / Requires Confirmation**.

## Integrations

None in this repository.

No HTTP client, SDK, webhook, database driver, PDF engine, queue, mailer, or cloud template is committed.

## Data

The repository manages no product data.

No personal data and no credential were found in `.gitignore`.

## Constraints

No product constraint, validation rule, permission model, or environment rule is implemented.

The ignore list constrains what Git would skip if those files were created later. See OBS-002. It is repository hygiene from a template, not a business constraint.

## Error conditions

No application error handling exists, because there is no application.

## Discrepancy — files named at discovery, absent from git

The 2026-09-28 discovery listing names `sonar-project.properties` and `sonarqube_scan.bat` at the top of the scan-host tree. They are not in `e55f1b6`.

**Unknown / Requires Confirmation.** Their contents were not read. They must not be treated as implemented behaviour until someone opens the scan-host tree or commits the files.

## What would count as a requirement later

If a PDF application is added, this PRD does not yet say what it should do. A product owner needs to confirm purpose, trigger, inputs, output document, and the system it talks to before requirements can be written. Inventing those from the repository name, or from the HTML-to-PDF call in `pmf-backend-ah`, would be a product decision, and this document does not make one.
