pastello-app

Content packs

Stickers, coloring pages (and later backgrounds) are delivered as content packs (ADR 0018). In v1 the packs are bundled in app/assets/packs/; a downloadable catalog may come later with the same format.

app/assets/packs/
├── index.json                 # {"packs": ["fluent-animals", ...]}, in tab order
├── LICENSE-fluent-emoji.txt
└── fluent-animals/
    ├── pack.json
    └── stickers/
        ├── dog_face.svg
        └── ...

pack.json

{
  "id": "fluent-animals",
  "version": 1,
  "kind": "stickers",
  "title": { "it": "Animali", "en": "Animals" },
  "icon": "dog_face",
  "author": "Microsoft Fluent Emoji",
  "license": "MIT",
  "licenseFile": "../LICENSE-fluent-emoji.txt",
  "source": "https://github.com/microsoft/fluentui-emoji",
  "items": [
    { "id": "dog_face", "file": "stickers/dog_face.svg", "name": "Dog face" }
  ]
}
Field Meaning
id Stored in drawings with the item id: never rename it.
version Increases when the pack changes.
kind stickers (the default when omitted) or coloring. Packs of a kind the app does not know are skipped.
title Category name by language; English is the fallback.
icon Item shown on the category tab.
license, licenseFile, author, source Shown in the credits. Only licenses compatible with GPL-3.0 (ADR 0014).
items id (stored in drawings, never rename it), file (SVG, relative to the pack), name (English, for screen readers).

Coloring pages

A pack with "kind": "coloring" holds coloring pages in coloring/*.svg (ADR 0022). Each page is fitted to the sheet with a margin, so it works in portrait and landscape; square or slightly wide pages fit both best.

app/assets/packs/pastello-animals/
├── pack.json        # "kind": "coloring"
└── coloring/
    ├── cat.svg
    └── ...

The bundled pages are generated by tool/generate_coloring_pages.py: edit a page there and run it from the repository root, so the SVGs and the manifests stay in sync. Shapes are filled with white and drawn back to front, so a shape hides the lines behind it; white areas are see-through in the app (ADR 0022).

Adding a sticker pack

  1. Create a folder with pack.json and the SVGs. Keep SVGs simple (no filters or embedded images) and square.
  2. Add its id to index.json and both folders to the assets list in app/pubspec.yaml.
  3. Check that the license allows redistribution under GPL-3.0 and that attribution is in pack.json.
  4. Run the tests: they check that every file listed in a pack exists, and that coloring pages contain no images, filters or texts.

The bundled packs contain 220 Fluent Emoji (Flat style), © Microsoft, MIT license.