- Web app: static hosting on Vercel (
web/dist) - CLI package: PyPI publish workflow (
.github/workflows/publish.yml, OIDC trusted publishing) - Container image: GHCR multi-arch publish (
linux/amd64,linux/arm64)
- Connect the repository in Vercel.
- Build command:
npm run build - Output directory:
web/dist - Add environment variables:
VITE_SENTRY_DSN(optional; only used after user opt-in)VITE_APP_RELEASE(recommended, e.g. commit SHA)
- Verify custom headers from
vercel.jsonare applied after deploy.
- Configure
VITE_SENTRY_DSNin each environment if you want opt-in diagnostics. - Set
VITE_APP_RELEASEduring builds to correlate errors with deploys. - Sentry captures:
- unhandled runtime errors and rejections
- page/module errors from guarded operations
- selected performance telemetry (
web-vitals+ custom performance measures)
- Create alerts for:
- spike in
Unhandled errorevents - spike in worker parse failures (
moduleextra fields) - regression in web-vitals (
web-vital:*metric messages)
- spike in
- CI actions are SHA-pinned.
- Dependency review runs on pull requests.
- Scheduled dependency audits run weekly for npm and pip.
- Weekly override staleness check flags npm overrides that can be removed (
npm run check:overrides; see ADR-001). - Docker image publish includes Trivy scan for HIGH/CRITICAL vulnerabilities.
| Variable | Default | Description |
|---|---|---|
LINKEDIN_ANALYZER_DATA_DIR |
data |
Base directory for input/output file paths |
LOG_LEVEL |
INFO |
Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
LOG_FORMAT |
text |
Log output format — text for human-readable, json for structured JSON |
Set LOG_FORMAT=json (or pass --log-format json) to emit one JSON object per log line:
{
"timestamp": "2026-03-05 12:00:00,000",
"level": "INFO",
"logger": "linkedin_analyzer",
"message": "Processing Shares..."
}This is recommended for production/container deployments where logs are ingested by a log aggregator.
- Configure PyPI trusted publishing for this repository (OIDC) so
publish.ymlcan publish withoutPYPI_API_TOKEN.
- Confirm scope and blast radius from Sentry events.
- Correlate to release via
releasetag (VITE_APP_RELEASE). - Reproduce locally with same fixture/data shape when possible.
- Add regression tests before shipping fix.
- Backfill docs if behavior/runbook changed.