Build from source
Printy is open source under the MIT licence: github.com/NoiXdev/printy.
You do not need to build it to use it — the installers are the normal route.
Prerequisites
Section titled “Prerequisites”- Node.js 22
- A Rust toolchain
- The Tauri prerequisites for your platform — on Windows the Visual Studio Build Tools and WebView2, on macOS the Xcode command-line tools
Running it
Section titled “Running it”git clone https://github.com/NoiXdev/printy.gitcd printynpm installnpm run tauri devThe PDF library on Windows
Section titled “The PDF library on Windows”Printy reads PDFs on Windows with pdfium, which is not in the repository: it is an 8 MB third-party binary, and keeping it out keeps the repository a repository.
Without it, a Windows build starts and looks completely healthy, then fails on the first PDF.
Download pdfium-win-x64.tgz from bblanchon/pdfium-binaries and put pdfium.dll into src-tauri/resources/. The release workflows pin one specific upstream release rather than tracking the latest, so that two builds of the same commit produce the same program; PDFIUM_RELEASE in the workflow files names it.
Alternatively, point a running Printy at a copy you already have under Einstellungen → Erweitert → pdfium-Bibliothek.
macOS needs none of this — the system reads the PDF.
npm test # frontendcd src-tauri && cargo test # engineBoth run in CI on every pull request. The frontend suite runs on Linux; the engine suite runs on Windows, because the printing path and the rasteriser are compiled out everywhere else — testing them on Linux would report success for code it never looked at.
What cannot be tested automatically
Section titled “What cannot be tested automatically”The Windows printing path itself. Win32 handles against a real print spooler cannot be mocked honestly, and a test that pretended otherwise would be worse than no test.
docs/WINDOWS-VERIFICATION.md in the repository is the manual checklist run against a real printer before a release — correct page order, copies, duplex, greyscale, behaviour when the printer is switched off mid-queue, and that an interrupted job never reprints itself.
Building installers
Section titled “Building installers”npm run tauri buildOutput lands in src-tauri/target/release/bundle/. On Windows that is an NSIS .exe and an .msi; on macOS a .app and a .dmg.
macOS builds produced this way are unsigned, so macOS shows a Gatekeeper warning on first launch. Released builds are signed in CI.
Layout
Section titled “Layout”| Path | Contents |
|---|---|
src/ | The interface — React and TypeScript |
src-tauri/src/ | The engine — Rust: folder watching, queue, print backends, database |
src-tauri/migrations/ | Database schema |
docs/ | Design spec and implementation plans |
Interface strings are German; code, comments, commit messages and internal documentation are English. Commits follow Conventional Commits.