HandbookFoundation39

ID cards & identity.

Every student and staff member carries one — the small plastic rectangle that says who they are at the gate, the library, and the exam hall. YESS gives the school a real card studio: a millimetre-accurate canvas at true ID-1 size, front and back, designed once per audience, filled with each holder's photo and matricule from live records, and printed by the hundred straight from the browser. Identity, designed and issued in-house.

  • 14card elements
  • 3audiences
  • 2data tables
  • ≈11 minto read
The issuing desk: the audience switch and person list on the left, a live front-and-back card preview on the right, and one-click print, PNG and PDF export.

Prologue

Identity, designed in-house#

Most schools outsource ID cards to a print shop once a year, hand over a spreadsheet and a folder of photos, and wait two weeks. A student who joins in week three waits until next year, or carries nothing.

YESS brings the whole thing in-house. The school designs its card once in a visual studio — at the exact physical size of a bank card, with a front and a back — and the platform fills in each holder's photo, name, matricule, class and QR from the live student and staff records. A new enrolment can carry a card the same afternoon. The design is reusable, the data is always current, and the printing is a button.

Design the card once; the platform fills in every holder.

Chapter one

The issuing desk#

The day-to-day work happens at /dashboard/id-cards. A segmented switch picks the audience — students, staff, or parents — each with a live count. A summary line reads the issuance ledger: so many of so many issued · so many still need a card. Filters narrow the list by campus and, for students, by class.

The person list shows each holder with their photo, name, identifier, class or department, and a badge that reads Issued, Reissued, or Needs card. Tick the people you want and the right-hand pane renders their card live — using the school's active design for that audience, front and back. From there it is three actions: Print (straight to paper or the OS print dialog), Export PNG (a single image, or a zip when you select many), and Export PDF (one card per page, sized in millimetres). Every person you print is stamped into the issuance ledger automatically.

Chapter two

The card studio#

The designs themselves live in the studio at /dashboard/id-cards/studio — a library with three columns, one per audience. New design opens a gallery: pick one of the layouts (classic landscape, modern banner, split panel, portrait lanyard, staff badge, parent pickup and more) crossed with a theme (heritage navy, royal purple, midnight and a dozen others), and the studio seeds a fully-built card you can refine.

Opening a design drops you into the canvas editor at /dashboard/id-cards/studio/[id]. The canvas is the real thing: a CR80 / ISO ID-1 card — 85.6 by 54 millimetres — laid out in true millimetres, with a separate front and back face. You drag elements onto it from a palette of building blocks: a kente stripe, the school logo, the recipient photo, the recipient name and ID, a free-form field binding, a QR code, a barcode, text, a footer block, and a signature stamp. The full element model spans fourteen types in all.

Editing is precise. Elements move and resize with eight handles, snap to a half-millimetre grid (hold Shift to bypass), show alignment guides against the page edges and each other, and nudge by arrow key. There is fifty steps of undo and redo, duplicate, and z-order layering. The properties panel splits into three tabs — Layout (position and size in mm, rotation, layer), Style (font, weight, alignment, colour, opacity), and Content (the type-specific options for the selected element).

Chapter three

The holder's data#

A card design is a template, not a finished card. The personal elements fill themselves from each holder's record through tokens {{recipient.full_name}}, {{recipient.class_name}}, {{recipient.department}}, {{recipient.photo_url}}, and identity fields like blood type and emergency contact — plus school-level tokens for the name, logo, motto and academic year. In the studio they resolve to sample values; at print they resolve to the real person in front of you.

The identifier on the card — and the value behind its QR or barcode — is the holder's matricule: a student's student-ID, a staff member's employee-ID, a parent's parent-ID, each generated by the school's own numbering scheme. The photo is whatever is on the holder's profile.

The QR element offers three payload modes. The default is a human-readable payload — the school name, the holder's name, and their ID — which always renders something meaningful. A verify-URL mode and a signed attendance mode exist for integration scenarios; both are honestly noted as not yet wired end-to-end, in the roadmap below. The barcode element draws a barcode motif but does not yet encode a real scannable symbology — treat it as a visual placeholder for now.

Chapter four

One active design per audience#

A school can keep as many drafts as it likes, but exactly one design is active per audience — the one the issuing desk uses to render and print. Set active on a design publishes it and clears the previous default in the same move; the database enforces the rule with a one-active-per-audience constraint, so there is never ambiguity about which card a student gets.

Designs carry a version number and a draft / published state, and the library badges each card accordingly — a gold Active template marker on the live one, a Draft marker on the rest. Saving a design today updates it in place; a full immutable version history is scaffolded in the schema but not yet wired, and is called out plainly in the roadmap.

Chapter five

Bulk print and the issuance ledger#

Printing is a batch operation done from the issuing desk: select an audience, tick the holders — or select all — and print, export to PNG, or export to PDF. The whole render happens in the browser from the active design, so there is no print-shop round trip and no server queue to wait on.

Each holder you print is written to the issuance ledger. The first print records the card as issued, with who issued it and when. Reprinting the same holder upserts the same record to reissued, increments a reissue counter, and stamps the last-printed time — so the school always knows who has a card, how many times it has been reprinted, and when. The ledger keeps a snapshot of the holder's name and identifier and the design used, so the record stays legible even if the person or the design later changes.

Chapter six

The official-documents tab#

The ID-cards page carries a second tab — Documents — for the short official letters a school is forever asked to produce: an enrolment confirmation, an attendance certificate, a leaving letter, a fee-clearance letter, and a generic staff letter. Pick the type, pick the student or staff member, and the letter renders with the school's letterhead, ready to print.

Chapter seven

What makes identity elite#

Five things that make this elite

  1. 1

    True-size, millimetre canvas

    The studio is a real CR80 / ISO ID-1 card laid out in millimetres, not a vague rectangle scaled later. Half-millimetre snap, alignment guides and an mm readout mean what prints is exactly what you placed — front and back.

  2. 2

    Design once, fill every holder

    Personal elements are tokens that resolve from live student and staff records — photo, matricule, class, department, blood type. One design issues to a whole cohort, and a corrected photo flows to the next reprint automatically.

  3. 3

    One active card per audience

    Exactly one design is live per audience, enforced by a database constraint. Setting a new one active retires the old in the same move, so a student can never be issued from a stale draft.

  4. 4

    An issuance ledger, not a guess

    Every print is recorded as issued or reissued with a reprint count and timestamp, against a name-and-identifier snapshot. The school can answer 'who has a card, and how many times reprinted' from the record.

  5. 5

    No print-shop round trip

    The whole card renders in the browser to paper, PNG or a millimetre-sized PDF, so a student who enrolled this morning carries a card this afternoon — no annual batch, no outsourced vendor.

Planned features

What comes next#

The studio, the active-design model, the issuance ledger and bulk print all ship today. The items below are scaffolded or partial, and are flagged honestly so you can plan around them.

Five honest gaps

  1. 1

    Immutable version history

    A version number and parent-design link are in the schema, but saving updates the design in place rather than forging a new version. The planned upgrade snapshots each published version so a school can roll back or audit a change.

  2. 2

    Revoke and expire

    The issuance ledger has revoked and expired states and an expiry date, but no screen sets them yet. The planned upgrade adds a 'revoke card' and an expiry policy so a lost or former-holder card can be marked void.

  3. 3

    A scannable barcode

    The barcode element draws a barcode motif but does not encode a real symbology yet. The planned upgrade encodes the holder's matricule as a genuine scannable Code-128 / EAN barcode.

  4. 4

    An ID-card verify endpoint

    The QR's verify-URL mode points at the certificate verifier, which only knows certificates — so an ID-card verify scan returns 'not found' today (the default human-readable payload sidesteps this). The planned upgrade adds a dedicated ID-card verification page.

  5. 5

    Scan-to-attendance

    The signed-attendance QR mode is designed for an officer to scan a staff card and mark presence, but the print path does not yet inject the signed token. The planned upgrade wires the card to the multi-factor presence engine.

Adjacent modules

Where identity connects#

Tutorial

Do it step by step#

Stand up the student card and issue it to a whole class in six steps — design, set active, then select and print.

  1. 1

    Start a design

    Open the studio at /dashboard/id-cards/studio, pick the students column, and press New design. Choose a layout and a theme from the gallery — the studio seeds a complete card you can refine.

    Start from a layout close to what you want — portrait lanyard, classic landscape — rather than a blank canvas.

  2. 2

    Lay out front and back

    In the editor, place the photo, recipient name, ID, school logo and a QR on the front, then press Add back and put the emergency contact, blood type and footer on the back. Snap to the grid and use the alignment guides to keep it clean.
  3. 3

    Check the tokens

    Confirm the personal elements use the right tokens — {{recipient.full_name}}, {{recipient.class_name}}, {{recipient.photo_url}} — so each card fills from the live student record. Save when it looks right.

    The studio shows sample data; the real names and photos appear only at print, from each holder's record.

  4. 4

    Make it the active card

    Back in the library, press Set active on the design. It publishes and becomes the one card the issuing desk renders for every student — retiring any previous default automatically.
  5. 5

    Select the class and print

    Open /dashboard/id-cards, filter to the class, tick the students, and choose Export PDF for the printer or Print for the OS dialog — front and back, one card per page, sized in millimetres.
  6. 6

    Confirm the ledger

    Each student you printed now shows an Issued badge and is recorded in the issuance ledger. Reprint a lost card later and the same record flips to Reissued with the reprint counted.

One design, set active, printed to a whole class in an afternoon — every holder carries the school's own card, on the school's own schedule.