{"id":50680935,"url":"https://github.com/BigJk/snd","last_synced_at":"2026-06-25T17:00:30.055Z","repository":{"id":42449569,"uuid":"240947042","full_name":"BigJk/snd","owner":"BigJk","description":"Sales \u0026 Dungeons — Thermal Printer as D\u0026D / TTRPG Utility","archived":false,"fork":false,"pushed_at":"2026-06-15T19:20:46.000Z","size":7799,"stargazers_count":662,"open_issues_count":3,"forks_count":22,"subscribers_count":13,"default_branch":"master","last_synced_at":"2026-06-15T19:24:58.770Z","etag":null,"topics":["dnd-tools","dnd5e","dungeon-master","dungeons-and-dragons","epson","llm","osr","tabletop-gaming","thermal-printer","ttrpg"],"latest_commit_sha":null,"homepage":"https://sales-and-dungeons.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BigJk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"ko_fi":"BigJk"}},"created_at":"2020-02-16T18:55:21.000Z","updated_at":"2026-06-15T19:20:49.000Z","dependencies_parsed_at":"2023-11-07T00:32:17.960Z","dependency_job_id":"1d8629be-c2f2-4b21-94ff-c69ecb2bbf7a","html_url":"https://github.com/BigJk/snd","commit_stats":null,"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/BigJk/snd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigJk%2Fsnd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigJk%2Fsnd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigJk%2Fsnd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigJk%2Fsnd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BigJk","download_url":"https://codeload.github.com/BigJk/snd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BigJk%2Fsnd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34784113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dnd-tools","dnd5e","dungeon-master","dungeons-and-dragons","epson","llm","osr","tabletop-gaming","thermal-printer","ttrpg"],"created_at":"2026-06-08T19:00:27.988Z","updated_at":"2026-06-25T17:00:30.045Z","avatar_url":"https://github.com/BigJk.png","language":"TypeScript","funding_links":["https://ko-fi.com/BigJk","https://ko-fi.com/A0A763FPT"],"categories":["TypeScript"],"sub_categories":[],"readme":"![S\u0026D Header](./data/readme_header.png)\n\n---\n\n\u003cimg align=\"right\" width=\"120px\" alt=\"Sales \u0026amp; Dungeons\" src=\"./data/preview.png\"\u003e\n\u003cimg width=\"100\" alt=\"Sales \u0026amp; Dungeons\" src=\"./data/round_icon.png\"\u003e\n\n[![Discord](https://img.shields.io/discord/678654745803751579?label=discord)](https://discord.gg/5MUZEjc) [![GitHub Discussions](https://img.shields.io/github/discussions/BigJk/snd)](https://github.com/BigJk/snd/discussions) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/BigJk/snd)](https://github.com/BigJk/snd/releases)\n\n**Sales \u0026 Dungeons** — Thermal Printer as D\u0026amp;D Utility.\n\nWith Sales \u0026 Dungeons you can create highly customizable handouts, quick reference and much more for your Dungeons and Dragons (or other PnP) Sessions.\nMost Thermal Printer are small in size and can be taken with you and kept right at the gaming table. Use-cases range from printing out magic items, spells\nor a letter that the group found to little character sheets of your players to use as DM note. The possibilities are nearly endless!\n\n[Printer Setup](https://sales-and-dungeons.app/docs/printer/setup/) • [Tested Printer](https://sales-and-dungeons.app/docs/printer/models/) • [Wiki](https://sales-and-dungeons.app/docs/intro/)\n\n**Important:** If you have trouble getting this to work it's best to drop by our [Discord](https://discord.gg/5MUZEjc).\n\n![Screenshot](./data/screenshot.png)\n\n![Screenshot Generator](./data/screenshot_gen.png)\n\n![Screenshot AI](./data/screenshot_ai.png)\n\n## Features\n\n- Works on\n  - Windows\n  - Mac (Intel, M1)\n  - Linux (x64, ARM64)\n  - Raspberry Pi (ARMv6, ARMv7)\n  - Android (Experimental)\n  - Anything else go can be compiled on\n- Extensive templating system through [Nunjucks](https://mozilla.github.io/nunjucks/)\n- Extensive random generator system\n- Various connection methods\n  - Windows Direct Printing\n  - Raw USB Printing\n  - CUPS (Linux, Mac)\n  - Serial\n  - Android USB Printing\n- Import \u0026 Export templates and data sources\n- Fast access to external [data sources](https://sales-and-dungeons.app/docs/data-source/) like Open5e (instant access to SRD monsters, spells and more)\n- Import data from other sources:\n  - CSV\n  - [FoundryVTT](https://foundryvtt.com/) Modules\n  - Fight Club 5e XML Format\n  - 5eTools\n- Access Community Templates, Generators \u0026 Data Sources from within the App\n- AI LLM Support (OpenAI, OpenRouter, Custom Local)\n  - Generate entries by prompt using the power of AI\n  - Translate entries by prompt\n  - Execute AI prompts in your templates and generators\n  - Support for using Local LLMs (for example via [LM Studio](https://lmstudio.ai/)) or any custom endpoints that are compatible with OpenAI API\n- Cloud sync for templates, generators and data sources\n\n## 🖨️ Examples\n\n\u003cdetails\u003e\n \u003csummary\u003eSome example prints\u003c/summary\u003e\n  \n ![image](https://github.com/user-attachments/assets/6d0bfcb6-3e45-40ab-8c47-ecfa1c3d22ec)\n \n\u003c/details\u003e\n\n## 📁 Download\n\nYou can find the latest version on the release page:\n\n- https://github.com/BigJk/snd/releases\n\n### :apple: Mac\n\nThe mac bundles are not signed at the moment so you might face the following problems when opening the application:\n\n#### It's not opening because it's from a unverified developer\n\nIf your mac is telling you that this app is from a unverified developer you can allow it via the \"Privacy \u0026 Security\" settings. More info: [Open a Mac app from an unidentified developer](https://support.apple.com/lv-lv/guide/mac-help/mh40616/mac)\n\n#### It's not opening because the app \"is damaged\"\n\nOn M1, M2, etc. it can happen that the app is reported as damaged. Just copy Sales \u0026 Dungeons into your Applications folder and execute the following command to allow it to run:\n\n```\nxattr -d com.apple.quarantine \"/Applications/Sales \u0026 Dungeons.app/\"\n```\n\n### :whale: Docker\n\nThe headless version of Sales \u0026 Dungeons (using LibUSB) is also available via a docker container:\n\n1. `docker pull ghcr.io/bigjk/snd:master` ([container](https://github.com/BigJk/snd/pkgs/container/snd))\n2. `docker run -p 7123:7123 --device=/dev/bus/usb --group-add uucp -v /some/place/to/persist:/app/userdata ghcr.io/bigjk/snd:master`\n   1. change `/some/place/to/persist` to a folder where the user data should be persisted to\n   2. replace `/dev/bus/usb` with the device of your usb/serial printer\n   3. replace `uucp` with a group (or gid) allowed to read the device file (use `$(stat -c \"%g\" /dev/bus/usb)` to get the right group)\n3. Open `http://127.0.0.1:7123` in your favorite browser\n\n\u003cdetails\u003e\u003csummary\u003eDocker Compose Example\u003c/summary\u003e\n\n```\nversion: \"3\"\nservices:\n  snd:\n    image: ghcr.io/bigjk/snd:master\n    ports:\n      - \"7123:7123\"\n    devices:\n      - \"/dev/bus/usb\"\n    group_add:\n      - uucp\n    volumes:\n      - \"/some/place/to/persist:/app/userdata\"\n```\n\n\u003c/details\u003e\n\n## Printer Requirements\n\nAt the moment Sales \u0026 Dungeons only supports the [ESC/POS](https://en.wikipedia.org/wiki/ESC/P) (Epson Standard Code) control codes, which is still one of the most used control code set. Check if a thermal printer you are interested in mentions ESC/POS or Epson in the description or manual.\n\nIn general the rule of thumb is:\n\n- Most cheap chinese thermal printer found on Amazon or AliExpress support it\n- Most epson thermal printer obviously support it\n- A lot of older Serial printer (like Metapace T-1) also support it\n\nMore specific information about tested printers can be found in the wiki: [Printer-Settings](https://sales-and-dungeons.app/docs/printer/models/)\n\n## How It Works\n\n\u003cimg align=\"left\" alt=\"Sales \u0026amp; Dungeons\" src=\"./data/work_graph.svg\"\u003e\n\n**Templates:** Templates are created in HTML (and CSS) in combination with the Nunjucks templating language. You can imagine\nthe templates as little websites. That makes it possible to use all the nice and convenient layout options that HTML and CSS\nhas to offer and even include any common framework you might need (e.g. Fontawesome for Icons).\n\n**Rendered HTML:** After creating a template you can create entries with the data you want and print them.\nNunjucks will create the rendered HTML from the data you want to print.\n\n**Rendered Image:** Then this HTML get's converted to an image. Currently this conversion is done by Chrome via the\nChrome Debug Protocol. Although Chrome seems like a huge overkill for just HTML-To-Image conversion it's the standard solution at the\nmoment because it supports most of the modern HTML and CSS features.\n\n**ESC / POS Commands:** The last step before our awesome template hits the Printer is the conversion from the rendered image\nto the \"draw image\" command of the printer.\n\n**Printer:** The generated command will then be sent to the printer and printed. Now your template is ready to be used!\n\n:tada: :tada: :tada:\n\n## Printers, Templating \u0026 Building\n\nIf you want to see what printers were already tested, which settings they need, how the templates work or how you can build Sales \u0026 Dungeons yourself please visit the [**wiki**](https://sales-and-dungeons.app/docs/intro/).\n\n## Thanks to all contributors ❤\n\n\u003ca href=\"https://github.com/BigJk/snd/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=BigJk/snd\" /\u003e\n\u003c/a\u003e\n\n## Found the project useful? :smiling_face_with_three_hearts:\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/A0A763FPT)\n\n## Credits\n\nIcons used in the Sales \u0026 Dungeons Logo were made by [Smashicons](https://www.flaticon.com/authors/smashicons), [Good Ware](https://www.flaticon.com/authors/good-ware) from [www.flaticon.com](http://www.flaticon.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBigJk%2Fsnd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FBigJk%2Fsnd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FBigJk%2Fsnd/lists"}