Internal award / recognition cards

People ops does this monthly. Someone gets recognized, and the internal channel needs a card: recipient, a reason line, the month. Next month the layout is the same and the name and reason are not.

This is recurring artwork. The card has to look like last month’s card on purpose. Only the name, the reason, and the month should move. That’s the shape --data exists for.

The job is one component and { name, reason, month } per award. You don’t open last month’s file and hunt for the old name. You pass a new file and export again.

Give Lerret a React component under .lerret/ and optional data. export writes a PNG. Same component, data swapped, many images. There is no batch product, no queue, no orchestrator.

The component is .lerret/ops/recognition.jsx. It shows the recipient, the reason line, and the month. Those three slots are the card. Type and framing stay in the component so every month looks like every other month on purpose. The reason is a field. A long reason and a short reason use the same component.

Data is { name, reason, month } per award. One file per award, passed with --data. Re-run export for the next person. If you only have one award that month, you run once. If you have several, you re-run with a different --data file each time. Same component, new values, new image. That’s bulk pattern 1 when you have more than one award.

The image is a PNG 1080×1080 for the internal channel. Square, one card. Lerret writes the image.

You use Lerret because monthly recurring artwork with only the name and reason changing is the exact shape --data exists for. The month field is in the data too, so a leftover March can’t sit on an April card because someone forgot a text layer. A monthly design-file duplicate, or a screenshot of a slide, will leave that month wrong.

npx @lerret/cli@latest export --data

Pass one award file per run. Start a project with npx create-lerret@latest. More in the use cases index.