> For the complete documentation index, see [llms.txt](https://docs.oomus.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.oomus.org/features/card-studio.md).

# Card Studio

Card Studio is the integrated visual editor of Oomus CampaignID. It lets you design, customize, and preview digital health cards before they are generated in bulk.

***

## Available templates

Oomus CampaignID offers **11 card templates** ready to use, covering the main public health programs:

| Identifier    | Program             | Description                                                  |
| ------------- | ------------------- | ------------------------------------------------------------ |
| `cps`         | Social protection   | Community social protection card                             |
| `mild`        | Malaria / LLIN      | Insecticide-treated mosquito net distribution card           |
| `vaccination` | Vaccination (EPI)   | Standard vaccination card (Expanded Program on Immunization) |
| `antenatal`   | Maternal health     | Antenatal follow-up and prenatal consultation card           |
| `nutrition`   | Nutrition           | Nutrition tracking card (child, breastfeeding woman)         |
| `hiv`         | HIV/PMTCT           | HIV/PMTCT program card (protected sensitive data)            |
| `lab`         | Laboratory          | Results and biological follow-up card                        |
| `assurance`   | Health insurance    | Universal health insurance enrollment card                   |
| `refugee`     | Refugees            | Humanitarian identification card                             |
| `identity`    | Health identity     | National health identity card                                |
| `farmercard`  | Agricultural health | Farmer / rural health card                                   |

***

## Visual editor capabilities

### Logos and visual identity

Each card template supports up to **3 logo positions** configurable:

* **Main logo** : program or ministry logo (positioned top left or centered)
* **Partner logo** : logo of a technical or financial partner (NGO, UN agency)
* **Government logo** : logo of the state or local authority

Accepted formats: PNG (transparent background recommended), JPEG.\
Recommended dimensions: minimum 200×100 px, aspect ratio automatically preserved.

### Colors

Your program's color identity is fully customizable:

* **Primary color** : main color for the header and accents
* **Secondary color** : background color, dividers, footers
* **Text color** : automatically adjusted for contrast (accessibility)

The color picker supports HEX, RGB, and institutional visual identity color codes.

### QR code customization

The QR code is the central security element of each card. Available options:

* **Enable/disable** the QR code on the card
* **Position** : bottom-right (default), bottom-left, centered
* **Size** : 3 levels (compact, standard, large)
* **Style** : classic QR or with the program logo integrated in the center
* **Token** : always an opaque SHA-256-derived token (non-reversible)

> The QR code never contains the MPI ID in plain text. It uses an opaque cryptographic token, ensuring beneficiary privacy. See [Cryptographic guarantees](/security/cryptographic-guarantees.md).

### Dynamic fields — Front

The front side of the card contains the beneficiary's main information. Configurable fields:

| Field                  | Type               | Required    |
| ---------------------- | ------------------ | ----------- |
| First name / Last name | Text               | Yes         |
| Date of birth          | Date               | Recommended |
| Beneficiary number     | Text               | Yes         |
| MPI identifier         | Text (card footer) | Optional    |
| Target group           | Text               | Optional    |
| Issue date             | Date               | Recommended |
| Expiration date        | Date               | Optional    |
| Photo (thumbnail)      | Image              | Optional    |

### Dynamic fields — Back

The back side of the card can contain additional information depending on the program:

* Name and contact details of the health center
* List of vaccines or covered services
* Geographic area (region, district)
* Emergency information
* Validity conditions
* Additional barcode/barcode
* Verification instructions (portal URL + text)

### Card footer — MPI identifier

On DHIS2 templates (vital/emerald/pulse), the MPI identifier is displayed in the **card footer**, replacing the traditional barcode. Format: `SN-DKR-26-9XQ7LM2A` — see [MPI sovereign identity](/features/mpi-sovereign-identity.md).

***

## PNG preview — high-resolution server rendering

Card Studio includes a server preview engine that produces the **exact** rendering of your cards before any bulk generation run.

### From the Export panel — section "Front + back preview"

1. In the side panel, navigate to **Export**
2. The section **"Front + back preview"** shows a dotted placeholder if no preview has been generated yet
3. Click **"Generate PNG preview"** — the server produces 1 front + 1 back at **450 DPI** in a few seconds
4. The image is displayed **inline** on a dark background, faithful to the printer output
5. Click **"↓ PNG"** (at the top right of the section) to download the preview
6. Click **"Regenerate"** after any design change to refresh the preview

The "Front + back preview" section also includes PDF export options (select 1–8 cards, high-resolution PDF download).

### From the Design Report

1. In **Canvas → Quick actions**, click **"Design Report"**
2. The report opens **and** triggers PNG preview generation at the same time
3. In the section **"Generated cards preview"** of the report, the high-resolution image replaces the CSS thumbnails as soon as it is available
4. If the preview is not ready yet, a button **"Generate PNG preview"** is available directly in the report without having to close it

### Server rendering features

| Setting         | Value                                                             |
| --------------- | ----------------------------------------------------------------- |
| Resolution      | 450 DPI (render\_scale ×2)                                        |
| Format          | PNG lossless                                                      |
| Content         | 1 front + 1 back side by side                                     |
| Data            | Representative fictional data (prefix code + 8 random characters) |
| Generation time | 5–15 seconds depending on the card type                           |

The preview uses the same server engine as bulk generation — it exactly reflects the final rendering at the chosen resolution, including gradients, logos, dynamic fields, and QR codes.

***

## DPI options

The DPI resolution (dots per inch) determines the print quality of the cards:

| DPI         | Usage                                       | Quality factor   |
| ----------- | ------------------------------------------- | ---------------- |
| **300 dpi** | Digital display, standard printing          | ×1.0 (reference) |
| **450 dpi** | Professional printing, laser printer        | ×1.4             |
| **600 dpi** | High-quality PVC printing, laminated badges | ×2.0             |

> The available DPI options depend on your plan. The Starter plan offers only 300 dpi. Regional Ops and higher plans unlock 450 and 600 dpi.

***

## Configuration export — YAML / JSON

Each card design can be exported in **YAML or JSON** for:

* Versioning the configuration in a Git repository
* Sharing a design across multiple campaigns
* Importing an existing design for a new campaign
* Audit and internal documentation

YAML export example:

```yaml
template_id: vaccination
version: "2.1"
language: fr
colors:
  primary: "#00A651"
  secondary: "#F5F5F5"
logos:
  main: "logo_programme.png"
  partner: "logo_unicef.png"
  government: "logo_ministere.png"
qr_code:
  enabled: true
  position: bottom-right
  size: standard
fields_recto:
  - name: full_name
    label: "Full name"
    required: true
  - name: date_of_birth
    label: "Date of birth"
    format: "DD/MM/YYYY"
  - name: beneficiary_id
    label: "Beneficiary No."
  - name: mpi_id
    label: "Health ID"
    position: footer
fields_verso:
  - name: health_center
    label: "Health center"
  - name: vaccines_covered
    label: "Vaccines covered"
    type: list
dpi: 300
```

***

## Best practices

* **Always validate the PNG preview** before launching a bulk generation run — corrections after generation require a new job
* **Export your YAML configuration** after each change to version your design
* **Use 600 dpi** only if you plan physical PVC printing — file sizes are proportionally larger
* **Test with 5–10 beneficiaries** before launching a full campaign of several thousand cards

***

## Next steps

* [Campaign management](/features/campaigns.md) — Launch bulk generation
* [MPI sovereign identity](/features/mpi-sovereign-identity.md) — Enable the sovereign identifier on your cards
* [Multichannel distribution](/features/distribution.md) — Send the generated cards


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.oomus.org/features/card-studio.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
