Rust · ESC/POS · Raspberry Pi

Des petits tickets qui font du bien, tous les matins.

Little receipts that make your day, every morning.

Printr transforme une imprimante à tickets en gadget familial. On compose son ticket avec la météo, un horoscope, un sudoku, une énigme ou les actualités, on l'imprime depuis son téléphone ou on le planifie pour 7 h 30… et on envoie une photo à ceux qui sont restés à la maison.

Printr turns a thermal receipt printer into a family gadget. Build a ticket from the weather, a horoscope, a sudoku, a riddle or the news, print it from your phone or schedule it for 7:30 am… and send a photo to whoever stayed home.

FonctionsFeatures

Une imprimante à tickets, plein d'idées.

One receipt printer, lots of ideas.

🧩

40 blocs à assembler

40 blocks to mix

Météo, horoscope, agenda, liste de courses, sudoku, logimage, mots mêlés, coloriage, énigmes, bons à offrir, actualités, photos, QR codes…

Weather, horoscope, calendar, shopping list, sudoku, nonograms, word searches, coloring pages, riddles, gift coupons, news, photos, QR codes…

📱

Une appli pour toute la famille

An app for the whole family

Chacun son compte, ses tickets enregistrés, et ceux qu'on partage. Aperçu en direct, pensée pour le téléphone.

Everyone gets an account, saved tickets, and shared ones. Live preview, designed for phones first.

⏰

Planifié, au format 24 h

Scheduled, 24-hour clock

« L'horoscope en semaine à 7 h 30 », « le brief du week-end à 9 h ». Pas de rattrapage à 14 h si l'imprimante dormait.

“Horoscope on weekdays at 7:30”, “weekend brief at 9:00”. No 2 pm catch-up if the printer was asleep.

💌

Le petit mot

Little notes

Une photo prise avec le téléphone, un cœur dessiné, quelques mots : ça sort à la maison, tramé en noir et blanc.

A photo from your phone, a hand-drawn heart, a few words: it prints at home, dithered in black and white.

🌱

Sobre par défaut

Frugal by default

Presque tout est local et gratuit : RSS, énigmes, sudoku, mots mêlés, calendrier. Claude n'écrit que l'horoscope et le mot du jour, mis en cache pour la journée.

Almost everything is local and free: RSS, riddles, sudoku, word searches, calendar. Claude only writes the horoscope and the word of the day, cached for the day.

🦀

Un seul binaire Rust

A single Rust binary

ESC/POS natif pour l'Epson TM-T88V, sur un Raspberry Pi. CLI soignée, serveur, planificateur et interface web dans le même exécutable.

Native ESC/POS for the Epson TM-T88V, on a Raspberry Pi. Polished CLI, server, scheduler and web app in one executable.

Sur papierOn paper

De vrais tickets, rendus point par point.

Real tickets, rendered dot by dot.

Ces images sont produites par l'émulateur de la TM-T88V, à partir des octets ESC/POS exacts envoyés à l'imprimante : 512 points de large, 180 dpi.

These images come from the TM-T88V emulator, fed with the exact ESC/POS bytes sent to the printer: 512 dots wide, 180 dpi.

Ticket du matin : date, saint, météo, lune, citation, liste à faire
Le brief du matinThe morning brief Météo, lune, citation, choses à faireWeather, moon, quote, to-dos
Ticket de jeux : énigme, sudoku, mots mêlés, défi sportif
La pause jeuxGame break Sudoku, mots mêlés, et la réponse de l'énigme à l'enversSudoku, word search, and the riddle's answer upside down
Petit mot : cœurs, photo d'un café, message
Le petit motA little note Une photo envoyée depuis le téléphoneA photo sent from a phone
Mandala à colorier
Le coloriageColoring page Un mandala différent à chaque impressionA new mandala every time
Bilan du mois façon ticket de caisse
Le bilan du moisThe monthly receipt Qui a imprimé quoi, façon ticket de caisseWho printed what, as a till receipt
Bon pour un petit-déjeuner au lit
Le bon à offrirGift coupon « Bon pour un petit-déjeuner au lit »“Good for one breakfast in bed”
Horoscope

Quatre tons. Le dernier ne fait pas de cadeaux.

Four tones. The last one takes no prisoners.

Rédigé chaque jour par Claude, sur un thème tiré au hasard pour ne jamais se répéter. Et pour un horoscope gratuit et hors ligne, calculé sur le vrai ciel, le bloc « Horoscope » s'appuie sur Barnum. Extraits authentiques des tons de Claude :

Written daily by Claude, on a random theme so it never repeats. For a free, offline horoscope computed from the real sky, the “Horoscope” block relies on Barnum. Genuine excerpts from Claude's tones (in French):

SérieuxSeriousScorpion Une conversation franche dissipera un malentendu qui pesait depuis plusieurs jours.
FarfeluWhimsicalGémeaux Un pigeon particulièrement élégant pourrait vous saluer d'un hochement de tête : rendez-lui la politesse, il est très influent dans le quartier.
VachardTeasingVierge Votre partenaire rêve d'un dîner romantique. Rien de plus sensuel qu'une balance de cuisine posée entre deux bougies.
InsultantInsultingLion Tes baskets neuves, encore raides comme un notaire, se demandent ce qu'elles ont fait au bon Dieu pour tomber sur une feignasse pareille.
CatalogueCatalogue

Tous les blocs.

Every block.

Mise en pageLayout

🔠 TitreTitle📝 TexteText 📅 Date➖ SéparateurSeparator ↕️ EspaceSpacing🖼️ Image 🔳 QR code💖 PictogrammePictogram

Au quotidienDaily

🌤️ MétéoWeather🌟 Horoscope🔮 Horoscope ClaudeClaude horoscope 📖 Mot du jourWord of the day😇 Saint du jourSaint of the day 💬 CitationQuote🌙 LuneMoon 🌅 SoleilSun🍃 Qualité de l'airAir quality 🏖️ Jours fériésHolidays⏳ Compte à reboursCountdown

Jeux & défisGames & challenges

🧩 ÉnigmeRiddle💪 Défi sportifWorkout 🔢 Sudoku🌀 LabyrintheMaze🔤 Mots mêlésWord search 🖍️ LogimageNonogram✏️ Petit bacScattergories ➗ Calcul mentalMental math🔀 Mot mystèreAnagram 🕵️ Message codéSecret message🎨 ColoriageColoring 🎟️ Bon à offrirGift coupon

Infos & organisationNews & to-dos

📰 Actualités (RSS)News (RSS)🏛️ ÉphémérideOn this day 🪙 Crypto✅ À faireTo-do 🛒 Liste de coursesShopping list🗓️ AgendaCalendar 🗑️ PoubellesBin day📶 Wi-Fi invitésGuest Wi-Fi 🧾 Bilan du moisMonthly receipt

Les blocs entourés d'orange utilisent Claude Haiku : un petit appel payant par jour, mis en cache. Tout le reste est local ou passe par des API gratuites et sans clé (Open-Meteo, Wikipédia, CoinGecko).

Orange-outlined blocks use Claude Haiku: one small paid call per day, cached. Everything else is local or uses free, keyless APIs (Open-Meteo, Wikipedia, CoinGecko).

L'appliThe app

Composer, voir, imprimer.

Compose, preview, print.

Chaque bloc se règle à la souris ou au doigt, et l'aperçu montre le ticket tel qu'il sortira. Les blocs Claude ne coûtent rien en aperçu : ils ne sont rédigés qu'à l'impression.

Tune every block with a mouse or a finger, and the preview shows the ticket exactly as it will print. Claude blocks cost nothing in preview: they are only written at print time.

Le composeur de tickets, avec l'aperçu Le composeur de tickets, avec l'aperçu
Accueil
Les tickets de la famille
The family's tickets
Aperçu
L'aperçu avant d'imprimer
Preview before printing
Petit mot
Un petit mot, avec une photo
A note, with a photo
InstallationInstall

Un Raspberry Pi, une TM-T88V, dix minutes.

A Raspberry Pi, a TM-T88V, ten minutes.

Préparer la machine

Prepare the machine

Un Raspberry Pi sous Raspberry Pi OS Lite 64 bits, ou n'importe quel Linux avec systemd, joignable en SSH par clé. L'imprimante en USB, ou sur le réseau.

A Raspberry Pi running Raspberry Pi OS Lite 64-bit, or any Linux with systemd, reachable over SSH with a key. The printer on USB, or on the network.

ssh pi@printer.local   # ça répond ? / does it answer?

Déployer

Deploy

Le script compile pour la bonne architecture, envoie tout et installe le service. Il demande le mot de passe sudo une seule fois ; ensuite, les mises à jour s'en passent.

The script builds for the right architecture, sends everything and installs the service. It asks for the sudo password once; updates don't need it afterwards.

scripts/deploy.sh pi@printer.local
scripts/deploy.sh pi@printer.local   # mise à jour / update

Créer son compte

Create your account

Au premier lancement, l'appli propose de créer son compte, puis ceux de la famille. La clé Claude est facultative.

On first launch, the app offers to create your account, then the family's. The Claude key is optional.

http://printer.local:8080

Le guide d'installation complet →Full installation guide (in French) →