PrintFlow is a small suite of Python services and a frontend for collecting, storing and analyzing Windows print events. It contains two related projects in this repository:
PRINT_MGMT— management/analytics service, REST backend, frontend UI and utilities for generating reports and PDFs.PRINT_SERVER— a lightweight API/service for ingesting print events and serving logs (core server components).
This README summarizes the layout, quick setup and common tasks for developers.
PRINT_MGMT/— main management app (backend, frontend, templates, dump utilities). SeeREADMEsections below for start commands.PRINT_SERVER/— server app (API, core, DB models, static UI and scripts)..gitignore— repository gitignore covering both projects.
- Python 3.10+ (projects include
requirements.txt). Use a virtualenv per project. - On Windows, PowerShell is handy for included scripts.
- If using TLS locally, prepare certs in each project's
certs/folder (some certs are intentionally gitignored).
- Open a terminal in the project folder you want to run (either
PRINT_MGMTorPRINT_SERVER). - Create and activate a virtual environment:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt- Most config is in
config.toml/backend_config.toml/frontend_config.tomlper project root. - Environment sensitive values can be placed in a
.envfile (some frontends include.env). - Database connection and Alembic migrations live in
alembic/andalembic.ini.
- PRINT_MGMT: many helper scripts exist; common entry points are
run.pyorrun_hypercorn.pyfor ASGI. For example:
cd PRINT_MGMT
.\.venv\Scripts\Activate.ps1
python run.py
# or
python run_hypercorn.py- PRINT_SERVER: a
main.pyexists at project root and there are helperrun_hypercorn.pyscripts. Example:
cd PRINT_SERVER
.\.venv\Scripts\Activate.ps1
python main.py
# or
python run_hypercorn.pyAdjust commands according to your chosen ASGI server or deployment tooling.
- Both projects include Alembic setup. Use
alembicfrom the project directory to run migrations (checkalembic.inifor connection settings).
- Logs: each project writes logs; see
logs/folders. The repository.gitignoreexcludes common log patterns andcerts/to avoid committing private keys. - Raw event files (EVTX) and database files are large and ignored by default (e.g.,
*.evtx,*.db).
- Frontend code lives under
PRINT_MGMT/frontend(and has its own small client). - Many scripts for parsing EVTX and generating reports are under
dump/andPRINT_MGMT/dump. - For local SSL testing, place certs in
certs/and reference them in each project's config; do not commit these files.
- Open an issue describing the change, make a branch, and submit a PR. Keep changes focused and add tests where appropriate.
- For any questions, inspect the project's top-level scripts and configuration files to learn local run conventions.