How schliz/ippweb works
ippweb is a Flask web printing service. Users authenticate, select a CUPS printer, upload and configure a PDF, then track or cancel its job and review page-count reports. The graph follows the sampled route, synchronization, and model ownership; README-documented monitoring, printer options, and reporting are included. Some route and sync implementation is unsampled, so uncertain internal wiring is omitted.
Main entry points: models.py User and jobs · __init__.py Flask app · print.py Print routes · job_sync.py Job sync service
Components 15
Web workflows
- Flask app
app/__init__.py - Print routes
app/routes/print.py - Job routes
app/routes/jobs.py - Job pages
app/templates/jobs.html - Print pages
app/templates/print.html
Print operations
- PDF uploads
app/routes/print.py - CUPS client
app/cups_client.py
Identity
- Auth routes
app/routes/auth.py - OIDC auth
app/auth.py
Job state
- User and jobs
app/models.py - Application database
- Job sync service
app/services/job_sync.py
Other components
- User
- CUPS print service
- Keycloak OIDC
Connections 24
- User → Flask app: uses
- Flask app → Print routes: registers
- Flask app → Job routes: registers
- Flask app → Auth routes: registers
- Flask app → OIDC auth: initializes
- Flask app → Job sync service: starts
- Auth routes → OIDC auth: uses
- Auth routes → Keycloak OIDC: exchanges tokens
- Auth routes → User and jobs: upserts user
- OIDC auth → User and jobs: loads user
- User and jobs → Application database: reads/writes
- Print routes → CUPS client: lists printers/options
- Print routes → PDF uploads: validates and saves PDF
- Print routes → User and jobs: creates job record
- Print routes → CUPS client: submits or cancels job
- CUPS client → CUPS print service: queries/submits
- Job sync service → User and jobs: loads and updates jobs
- Job sync service → CUPS client: checks job status
- Job sync service → User and jobs: commits status
- Job routes → User and jobs: queries and reports
- Job routes → Job sync service: syncs/subscribes
- Job routes → User: streams updates
- User → Print pages: configures print
- User → Job pages: views job history