## ADDED Requirements

### Requirement: Service runs on .13:3020
The frontend SHALL run as a systemd user service (`where-woof.service`) on `.13`, listening on `:3020`, restarting on failure, with secrets from an EnvironmentFile (never in the repo).

#### Scenario: Service starts
- **WHEN** the service is enabled and started
- **THEN** the app listens on 192.168.20.13:3020 and responds 200 on `/`

#### Scenario: Crash recovery
- **WHEN** the process exits unexpectedly
- **THEN** systemd restarts it

### Requirement: Deployable artifact
A build + rsync step SHALL produce and transfer the binary, `templates/`, and `static/` to `/var/www/where-woof` on .13, with `static/uploads` writable by the service user.

#### Scenario: Fresh deploy
- **WHEN** the build+rsync runs against a clean target dir
- **THEN** the service runs the new binary with templates/static present and uploads writable

### Requirement: Caddy reachability
The saved Caddy block on .35 SHALL reverse-proxy `where-woof.com` and `where-woof.home.lab` to `.13:3020`.

#### Scenario: Proxied request
- **WHEN** `where-woof.home.lab` is resolved to .35 and requested
- **THEN** the response comes from the .13 service
