[ Case Study · FinTech Utility ]

PrintMyCheque

Moroccan cheques and bills of exchange, laid out to the millimetre and printed in the browser — the amount in French words, a dated series of up to 60, and a real-size PDF, with no account and no server.

Client
In-house product (free web tool)
Engagement
In-house product: design, build and desktop packaging
Disciplines
Product · UI · React · Print
Year
2026
Live
printmycheque.vercel.app
PrintMyCheque screen with a cheque preview, the amount written in French words and a table of dated documents — light modePrintMyCheque screen with a cheque preview, the amount written in French words and a table of dated documents — dark mode
01 · Overview

A cheque is a layout problem measured in millimetres.

PrintMyCheque (subtitle: "Impression de chèques & effets — Maroc") is a free, in-house RAIN tool that fills in Moroccan bank cheques and effets — bills of exchange, also called lettres de change or traites — and prints only the text onto the customer's own pre-printed, bank-issued document. Writing these by hand is slow and error-prone: if the amount in words does not match the figures, or the payee or date is hard to read, the bank can send the document back. Businesses that issue a run of post-dated cheques for rent, instalments or suppliers write the same lines again and again. And the browser makes it harder still, because a web page cannot force a printer driver onto a 175 × 80 mm sheet — it quietly falls back to A4. PrintMyCheque was built for the people who live with that problem every month: individuals, shopkeepers, small and medium businesses and associations in Morocco that issue cheques or traites on a regular schedule.

RAIN treated the whole product as a layout problem in millimetres. A cheque is drawn at 175 × 80 mm and an effet at 175 × 105 mm, each with seven positioned fields, and every coordinate lives in a single data file. The amount is framed in figures (for example #1 234,56#) and written out in French words following cheque conventions — "quatre-vingts", "soixante et onze", "un million de dirhams". A series generator produces up to 60 documents with monthly, fortnightly or weekly dates; X/Y calibration corrects for each printer's offset; and a PDF export makes a page that is exactly the document's size, so the printer picks the right format on its own. Everything runs in the browser: no account, no server, no analytics, with the list kept in the browser's own storage. The same build is wrapped into offline desktop apps for Windows, macOS and Linux. The hosted version now carries a neutral "Imprimer Document" title and short wording, while the desktop builds keep the full cheque vocabulary. It is an independent tool, not affiliated with any bank, and it never creates a cheque — it only prints onto a genuine one.

By the numbers
2

Millimetre templates, cheque and effet

19

Moroccan bank colour presets

60

Documents per dated series

42

Unit tests in the codebase

02 · Architecture & Design

Six decisions that put the text in the right place — and six that keep the tool private, fast and portable.

01

One millimetre layout file

All document geometry lives in a single data file: a 175 × 80 mm cheque and a 175 × 105 mm effet, seven fields each. Per-preset overrides merge field by field, and that merge is covered by its own tests.

02

French amount-in-words engine

The grammar cheques use — "quatre-vingts" with an s, "soixante et onze", "un million de dirhams" — is encoded once and checked by 36 table-driven tests, including float rounding on the centimes.

03

Real-size PDF output

Browsers cannot force a printer onto a 175 × 80 mm sheet, so a second output path builds a PDF whose page is the document itself. jsPDF loads only on the first PDF click, adding nothing to first load.

04

Text-only print sheet

A dedicated print stylesheet sets the page size with @page and hides the on-screen artwork, so only the filled-in text reaches the paper — always black ink on white, whatever the theme.

05

Dated series generator

One form produces 1 to 60 documents with monthly, fortnightly, weekly or single dates — the post-dated rent or instalment run that used to take an evening by hand.

06

Printer calibration in mm

Every printer feeds a little differently. An X/Y offset in millimetres is applied identically to the preview, the browser print and the PDF, so one correction fixes all three.

07

Private by architecture

No backend, no API, no account and no analytics. The document list autosaves in the browser's local storage and never leaves the device; the only external request is the web font.

08

Theme with no flash

A tiny synchronous script sets system, light or dark before first paint, and the toggle follows OS changes live while on "system". Every UI colour is a token; paper and ink are deliberately fixed.

09

Bilingual content for search

Below the app sits a static French and Arabic block — how-to, cheque vs effet comparison, FAQ — with correct language and direction attributes, readable by search engines without JavaScript.

10

One build, three desktop OSes

Relative asset paths let the same build run hosted or embedded. Pake (Tauri) wraps it into offline installers, produced by a GitHub Actions matrix for Windows, macOS and Linux.

11

Original artwork, neutral skin

On-screen cheques are original SVG drawings — guilloche pattern, colour band, frame — tinted per preset, never scans of a real cheque and never printed. The hosted site uses a neutral "Imprimer Document" skin.

12

Three dependencies, hand-written CSS

React, React DOM and jsPDF are the only runtime dependencies. Styling is hand-written CSS with design tokens, about 3,500 lines of source in total, linted with oxlint and tested with Vitest.

03 · Everything inside

One screen, every step from blank cheque to printed run.

Choose the document, pick a colour preset, fill the common details, generate a series, calibrate and print. Hover any capability for what it does.

Documents05
  • Cheque 175 × 80 mm
  • Effet 175 × 105 mm
  • Document tabs
  • 7 fields per template
  • Prints on your own cheque
Amounts04
  • Amount in French words
  • Framed figures #…#
  • Dirhams and centimes
  • Millions and plurals
Series05
  • Up to 60 documents
  • Monthly dates
  • Fortnightly dates
  • Weekly dates
  • Editable table
Markings04
  • Normal
  • Barré (//)
  • Non endossable
  • Non endossable + barré
Output05
  • Browser print
  • Real-size PDF
  • Lazy-loaded PDF engine
  • Artwork never printed
  • Black on white, always
Calibration04
  • X offset in mm
  • Y offset in mm
  • One correction, three outputs
  • Live scaled preview
Colour presets04
  • 19 bank colour presets
  • 2 shared layouts
  • Original SVG artwork
  • Neutral naming
Interface06
  • Single screen
  • DD/MM/YYYY date field
  • Mobile cards + print bar
  • System / light / dark
  • Animated demo cheque
  • Reduced-motion aware
Privacy05
  • No account
  • No server
  • No analytics
  • Local autosave
  • Clear list with confirm
Desktop apps05
  • Windows MSI
  • macOS DMG
  • Linux deb, rpm, AppImage
  • Fully offline
  • CI build matrix
Search content05
  • French + Arabic guide
  • Cheque vs effet table
  • Static FAQ
  • fr-MA hreflang
  • robots, sitemap, llms.txt
Quality05
  • 36 amount-in-words tests
  • 6 template tests
  • oxlint
  • Security headers
  • Immutable asset cache

57 capabilities — in one static page with three runtime dependencies, no backend and no sign-up.

04 · How it competes

Free, private, and exact to the millimetre.

PrintMyCheque sits between writing by hand and buying cheque-printing software. The comparison below is by category — typical paid desktop tools, ERP and accounting modules, and office templates — not against any named product.

vs. Writing by hand
The amount in words is always grammatical and always matches the figures, and a 12-month run takes one form instead of an evening of copying.
vs. Paid desktop cheque software
Free to use in the browser, nothing to install, and the same tool also ships as offline apps for Windows, macOS and Linux — not Windows only.
vs. ERP & accounting modules
No suite to buy, configure or log into. Effets and dated series are first-class, not an afterthought in a payments menu.
vs. Word & Excel templates
A real-size PDF and millimetre calibration replace trial-and-error margins, and the French amount in words is written for you.
Feature-by-feature
PrintMyChequeBy handPaid desktop softwareERP cheque moduleOffice template
French amount in words, automatic✓—✓✓○
Real-size 175 × 80 mm output✓—✓○○
Effets / lettres de change✓✓○○○
Dated series up to 60✓—○○—
Crossing & endorsement markings✓✓✓○○
Printer calibration in mm✓—✓○—
No account or install needed✓✓——○
Data stays on the device✓✓✓○✓
Free to use✓✓——○
Windows, macOS and Linux✓—○○○
Works in any modern browser✓——○—
✓ included  ·  ○ partial / paid add-on  ·  — not available
05 · Outcome

From an evening of handwriting to one printed run.

PrintMyCheque turns a repetitive, error-prone chore into a single form. The amount in words is generated, the figures are framed, the dates follow the schedule, the markings land in the corner, and the printer receives a page the exact size of the document. Nothing is uploaded and nothing is stored anywhere but the user's own browser. It is live and free at printmycheque.vercel.app, built in-house by RAIN with React 19, Vite 8 and jsPDF.

The product went from first commit to version 27.4.1 in three days in August 2026 — ten commits and seven tagged versions — with 42 unit tests in the codebase (36 for the amount in words, 6 for template merging). Offline desktop installers were produced for Windows (MSI), macOS (Apple Silicon and Universal DMG) and Linux (deb, rpm and AppImage); they are unsigned builds, so the operating system shows its usual first-launch warning. On 7 August 2026 the hosted version moved to a neutral "Imprimer Document" skin with short labels and plainer wording, while the desktop builds keep the full cheque vocabulary. Field positions follow the standard Moroccan format rather than measurements from every chequebook, so a test print with calibration is part of the workflow, and acceptance remains each bank's decision. No usage, download or traffic figures are recorded, so none are claimed here.

PrintMyCheque — FAQ

PrintMyCheque is a free web tool built in-house by RAIN Design Studio in Casablanca. It fills in Moroccan cheques and effets (bills of exchange) on screen and prints only the text onto the user's own pre-printed, bank-issued document.

No. It never produces a cheque. The decorative cheque drawing appears on screen only; the print and the PDF carry just the text, which goes onto the genuine document your bank issued.

A dedicated engine converts the figures into French words using the conventions cheques follow, such as quatre-vingts, soixante et onze and un million de dirhams. The logic is covered by 36 table-driven unit tests.

Browsers cannot force a printer onto a 175 × 80 mm sheet and usually fall back to A4. The PDF's page is the exact size of the document, so the printer selects the right format, and an X/Y offset in millimetres corrects any feed offset.

No. The 19 presets are colour schemes for the on-screen drawing, all sharing two standard Moroccan layouts: one for cheques and one for effets. Positions follow the standard format rather than measurements of every chequebook, so a calibrated test print is recommended, and acceptance is always the bank's decision. The tool is independent and not affiliated with any bank.

Only in your browser. There is no backend, no account and no analytics; the document list autosaves in local storage on your device. The desktop apps for Windows, macOS and Linux run fully offline.

Want a product like this?

Custom projects from $10,000, monthly plans from $7,500. Kickoff within 3–5 business days.