From 8ffcc8c67589a41fb84b4b23ed02a4e034f8fd4a Mon Sep 17 00:00:00 2001 From: Kawa Date: Fri, 10 Apr 2026 10:42:40 +0200 Subject: [PATCH] docs: define v1 requirements --- .planning/REQUIREMENTS.md | 121 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 .planning/REQUIREMENTS.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..41f08d3 --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,121 @@ +# 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 + +- [ ] **DRV-01**: User can upload a driver package (ZIP containing INF + supporting files) +- [ ] **DRV-02**: System parses uploaded INF files and extracts valid driver names (DriverDesc) +- [ ] **DRV-03**: User can select driver name from parsed INF dropdown (no free-text) +- [ ] **DRV-04**: Driver packages are persisted on Docker volume across container restarts +- [ ] **DRV-05**: System flags unused files in driver packages to help reduce package size + +### Printer Configuration + +- [ ] **PRNT-01**: User can set printer display name +- [ ] **PRNT-02**: User can set printer IP address or hostname +- [ ] **PRNT-03**: System auto-suggests port name from IP (user can override) +- [ ] **PRNT-04**: User can set duplex mode (one-sided, long-edge, short-edge) +- [ ] **PRNT-05**: User can set color vs. grayscale default +- [ ] **PRNT-06**: User can set paper size (A4, Letter, Legal at minimum) +- [ ] **PRNT-07**: User can set collate on/off +- [ ] **PRNT-08**: User can assign printer to a client/tenant label +- [ ] **PRNT-09**: Printer configurations are persisted in SQLite across sessions +- [ ] **PRNT-10**: User can regenerate a package from saved config without re-uploading drivers + +### Script Generation + +- [ ] **SCRPT-01**: System generates PowerShell install script (pnputil staging + Add-PrinterPort + Add-PrinterDriver + Add-Printer + Set-PrintConfiguration) +- [ ] **SCRPT-02**: System generates PowerShell uninstall script (Remove-Printer + Remove-PrinterDriver + Remove-PrinterPort) +- [ ] **SCRPT-03**: System generates Intune detection script (registry check for printer name) +- [ ] **SCRPT-04**: Generated install script detects SYSTEM vs. user context and self-elevates via UAC when run by user +- [ ] **SCRPT-05**: Generated install script includes 64-bit WOW64 relaunch guard for Intune's 32-bit execution context + +### Package Export + +- [ ] **PKG-01**: User can export a complete .intunewin package (script + drivers + detection + metadata) +- [ ] **PKG-02**: .intunewin is generated natively in Python (no IntuneWinAppUtil.exe dependency) +- [ ] **PKG-03**: User can export a NinjaRMM ZIP package (install script + driver folder) +- [ ] **PKG-04**: User can upload a custom PNG icon for Intune app display (256x256, max 750KB) +- [ ] **PKG-05**: User can preview and copy Intune install/uninstall command strings before export + +### Infrastructure + +- [ ] **INFRA-01**: Application runs as a single Docker container +- [ ] **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 | +|-------------|-------|--------| +| DRV-01 | — | Pending | +| DRV-02 | — | Pending | +| DRV-03 | — | Pending | +| DRV-04 | — | Pending | +| DRV-05 | — | Pending | +| PRNT-01 | — | Pending | +| PRNT-02 | — | Pending | +| PRNT-03 | — | Pending | +| PRNT-04 | — | Pending | +| PRNT-05 | — | Pending | +| PRNT-06 | — | Pending | +| PRNT-07 | — | Pending | +| PRNT-08 | — | Pending | +| PRNT-09 | — | Pending | +| PRNT-10 | — | Pending | +| SCRPT-01 | — | Pending | +| SCRPT-02 | — | Pending | +| SCRPT-03 | — | Pending | +| SCRPT-04 | — | Pending | +| SCRPT-05 | — | Pending | +| PKG-01 | — | Pending | +| PKG-02 | — | Pending | +| PKG-03 | — | Pending | +| PKG-04 | — | Pending | +| PKG-05 | — | Pending | +| INFRA-01 | — | Pending | +| INFRA-02 | — | Pending | + +**Coverage:** +- v1 requirements: 27 total +- Mapped to phases: 0 +- Unmapped: 27 + +--- +*Requirements defined: 2026-04-10* +*Last updated: 2026-04-10 after initial definition*