# Meezi Print Agent (پرینت‌سرور میزی) A tiny Windows background app that lets the **cloud-hosted** Meezi reach printers on the café's **local network** (USB or Wi-Fi/Ethernet). The cloud can't open a connection to a `192.168.x.x` or USB printer directly — this agent runs on the cash PC (which *is* on that network), connects **outward** to Meezi over SignalR, reports the printers it can see, and prints the jobs the cloud sends it. ``` Cloud API ──SignalR(out)──► Print Agent (cash PC) ──► USB / LAN printers ``` ## How it works 1. In the dashboard: **Settings → Printers → Add print server** → you get a pairing code. 2. Run the agent on the cash PC, enter the code once. It saves a token to `%APPDATA%\MeeziPrintAgent\config.json` and connects. 3. It reports every printer installed on that PC. Back in the dashboard you map *receipt / kitchen / bar* to a printer from the dropdown — no IP typing. 4. When Meezi prints, the bytes (ESC/POS) are relayed to the agent, which writes them raw to the chosen printer (`winspool` for installed printers, raw TCP for `ip:port` devices). ## Build & run (dev) Requires the .NET 10 SDK on Windows. ```sh # restore via the Nexus mirror (nuget.org is blocked on this network) dotnet restore agent/Meezi.PrintAgent/Meezi.PrintAgent.csproj -s https://mirror.soroushasadi.com/repository/nuget-group/ dotnet run --project agent/Meezi.PrintAgent # first run prompts to pair dotnet run --project agent/Meezi.PrintAgent -- pair # re-pair later ``` ## Publish a single .exe for cafés ```sh dotnet publish agent/Meezi.PrintAgent -c Release -r win-x64 \ -p:PublishSingleFile=true --self-contained true -o dist/agent # → dist/agent/MeeziPrintAgent.exe ``` ## Notes / roadmap - **Not part of the API solution or CI** — it targets `net10.0-windows` and builds on its own. - Console MVP today. Next: system-tray UI, run-at-login (Task Scheduler / service), auto-update, and an optional LAN scan for raw `ip:9100` printers that aren't installed in Windows. - The token is bearer-equivalent — keep `config.json` on a trusted machine. Revoke from the dashboard if a PC is lost.