DevelopmentUnreleased

This topic is not available in this guide. You're viewing its overview.

Development documentation may include features that are not in the latest release. Read the Lawn 0.8.1 guide.

Templates

Contributing

GitHub
Guidelines and checklist for submitting new templates.
The built-in catalog is community-driven. Want to contribute an app? Open a PR on GitHub. You can also add custom catalogs from public Git repositories or local folders in Lawn Settings.

Submit a template

Templates live in the getlawn/templates repository. This page covers the conventions and requirements for contributing a new template via pull request.

Naming Conventions

App ID — Lowercase, hyphen-separated. Must match the directory name and the id field in manifest.yaml. Use the app's commonly known name (e.g., paperless-ngx, uptime-kuma, adguard-home).

Compose filename. Use lawn-compose/compose.yaml.

Icon Requirements

Local icon files are optional when you use hosted artwork or an SF Symbol fallback. To bundle artwork, include an icon.svg (preferred), icon.png, icon.heif, or icon.pdf in the template directory. For PNG, use at least 256×256 pixels.

The required symbolFallback field in manifest.yaml names an SF Symbol used when no icon image is available. Use iconURL for hosted artwork and iconIsTemplate: true for a monochrome icon that adopts the foreground color. See the artwork reference.

Style Guidelines

  • Localization — Compose configuration and extension strings (display names, descriptions, labels, notice titles) belong in locales/en.json. App names, taglines, and descriptions remain in manifest.yaml.
  • Notices — Use a maximum of 2-3 per template. Reserve them for information users genuinely need to act on: login credentials, required setup steps, or warnings about values they should not change. Use info for general guidance and warning for critical actions.
  • Environment values — Use required-value expressions such as ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required} for secrets. Use ${VAR:-default} for nonsensitive defaults, and supply disposable secrets explicitly for standalone docker compose config checks.
  • Descriptions — Write clear, concise descriptions for variables and environment metadata. Describe what the value controls, not just what it is.
  • Display ordering — Use weight to order config variables logically. Group related settings together and put important ones first.
  • Volumes — Use relative paths (./data:/app/data) for persistent data. Avoid absolute paths unless strictly necessary.

PR Checklist

These requirements apply to submissions to the official catalog. Custom catalogs use the runtime manifest format, where tagline, category, and compatibility metadata are optional.

Before submitting a template, verify each item:

Manifest

Compose File

Variables and Secrets

Localization

Health Checks

Notices

Testing

lawn template validate and lawn template test are planned and are not available in the current release.