# Requirements: ImpTune **Defined:** 2026-04-10 **Core Value:** Generate a complete, working printer deployment package (script + drivers + icon) in minutes instead of manually scripting each printer setup. ## v1 Requirements Requirements for initial release. Each maps to roadmap phases. ### Driver Management - [x] **DRV-01**: User can upload a driver package (ZIP containing INF + supporting files) - [x] **DRV-02**: System parses uploaded INF files and extracts valid driver names (DriverDesc) - [x] **DRV-03**: User can select driver name from parsed INF dropdown (no free-text) - [x] **DRV-04**: Driver packages are persisted on Docker volume across container restarts - [x] **DRV-05**: System flags unused files in driver packages to help reduce package size ### Printer Configuration - [x] **PRNT-01**: User can set printer display name - [x] **PRNT-02**: User can set printer IP address or hostname - [x] **PRNT-03**: System auto-suggests port name from IP (user can override) - [x] **PRNT-04**: User can set duplex mode (one-sided, long-edge, short-edge) - [x] **PRNT-05**: User can set color vs. grayscale default - [x] **PRNT-06**: User can set paper size (A4, Letter, Legal at minimum) - [x] **PRNT-07**: User can set collate on/off - [x] **PRNT-08**: User can assign printer to a client/tenant label - [x] **PRNT-09**: Printer configurations are persisted in SQLite across sessions - [x] **PRNT-10**: User can regenerate a package from saved config without re-uploading drivers ### Script Generation - [x] **SCRPT-01**: System generates PowerShell install script (pnputil staging + Add-PrinterPort + Add-PrinterDriver + Add-Printer + Set-PrintConfiguration) - [x] **SCRPT-02**: System generates PowerShell uninstall script (Remove-Printer + Remove-PrinterDriver + Remove-PrinterPort) - [x] **SCRPT-03**: System generates Intune detection script (registry check for printer name) - [x] **SCRPT-04**: Generated install script detects SYSTEM vs. user context and self-elevates via UAC when run by user - [x] **SCRPT-05**: Generated install script includes 64-bit WOW64 relaunch guard for Intune's 32-bit execution context ### Package Export - [x] **PKG-01**: User can export a complete .intunewin package (script + drivers + detection + metadata) - [x] **PKG-02**: .intunewin is generated natively in Python (no IntuneWinAppUtil.exe dependency) - [x] **PKG-03**: User can export a NinjaRMM ZIP package (install script + driver folder) - [x] **PKG-04**: User can upload a custom PNG icon for Intune app display (256x256, max 750KB) - [x] **PKG-05**: User can preview and copy Intune install/uninstall command strings before export ### Infrastructure - [x] **INFRA-01**: Application runs as a single Docker container - [x] **INFRA-02**: Application has minimal runtime dependencies (no Node.js, no external DB) ## v2 Requirements Deferred to future release. Tracked but not in current roadmap. ### Bulk Operations - **BULK-01**: User can import multiple printers from CSV - **BULK-02**: User can export all printers for a client as a batch ### Advanced Features - **ADV-01**: Package version history per printer - **ADV-02**: API / CLI mode for CI/CD integration - **ADV-03**: Print server migration path (Printbrm import) ## Out of Scope | Feature | Reason | |---------|--------| | User authentication / logins | Internal tool on private network; simplicity over security | | Direct Intune API push | Requires per-tenant OAuth, multi-tenant app registration — scope explosion | | Direct NinjaRMM API push | Same as Intune API push — keep the tool as a package generator | | Real-time printer status / monitoring | Requires SNMP polling and network access to client sites — different product | | Universal Print integration | Different deployment model, requires Azure subscription | | Mobile / tablet UI | Target users are at workstations; no validated demand | | Multi-language / localization | English only for v1; no demand signal | | Full audit log / deployment history | MSPs already have Intune/RMM logs | ## Traceability Which phases cover which requirements. Updated during roadmap creation. | Requirement | Phase | Status | |-------------|-------|--------| | INFRA-01 | Phase 1 | Complete | | INFRA-02 | Phase 1 | Complete | | DRV-01 | Phase 2 | Complete | | DRV-02 | Phase 2 | Complete | | DRV-03 | Phase 2 | Complete | | DRV-04 | Phase 2 | Complete | | DRV-05 | Phase 2 | Complete | | PRNT-01 | Phase 3 | Complete | | PRNT-02 | Phase 3 | Complete | | PRNT-03 | Phase 3 | Complete | | PRNT-04 | Phase 3 | Complete | | PRNT-05 | Phase 3 | Complete | | PRNT-06 | Phase 3 | Complete | | PRNT-07 | Phase 3 | Complete | | PRNT-08 | Phase 3 | Complete | | PRNT-09 | Phase 3 | Complete | | PRNT-10 | Phase 3 | Complete | | SCRPT-01 | Phase 4 | Complete | | SCRPT-02 | Phase 4 | Complete | | SCRPT-03 | Phase 4 | Complete | | SCRPT-04 | Phase 4 | Complete | | SCRPT-05 | Phase 4 | Complete | | PKG-01 | Phase 5 | Complete | | PKG-02 | Phase 5 | Complete | | PKG-03 | Phase 5 | Complete | | PKG-04 | Phase 6 | Complete | | PKG-05 | Phase 5 | Complete | **Coverage:** - v1 requirements: 27 total - Mapped to phases: 27 - Satisfied: 26 - Pending (gap closure): 1 (PKG-04) - Unmapped: 0 --- *Requirements defined: 2026-04-10* *Last updated: 2026-04-10 after roadmap creation*