Appendix A — Complete example

The same document in YAML (RECOMMENDED), TOML, and JSON. All three parse to the same in-memory tree.

#:schema https://projectfile.org/schema/v1.jsonspec_version = "1"kind = "SoftwareSourceCode"
[identity]namespace   = "com.acme"name        = "snuggly-sunbeam"version     = "1.4.0"visibility = "public"created     = "2026-04-22"released    = "2026-05-04"modified    = "2026-05-06"
[identity.title]en = "Snuggly Sunbeam"es = "Rayo de Sol Acogedor"uk = "Затишний Сонячний Промінь"
[identity.summary]en = "A lightweight library for rendering warm greetings."
[[repositories]]url     = "git@github.com:acme/snuggly-sunbeam.git"type    = "git"branch  = "main"role    = "origin"
[[repositories]]url  = "https://codeberg.org/acme/snuggly-sunbeam.git"type = "git"role = "mirror"
[[links]]type = "homepage"url  = "https://snuggly-sunbeam.dev"
[[links]]type = "source-code"url  = "https://github.com/acme/snuggly-sunbeam"
[[links]]type = "bugs"url  = "https://github.com/acme/snuggly-sunbeam/issues"
[[links]]type = "documentation"url  = "https://snuggly-sunbeam.dev/docs"
[[links]]type = "changelog"url  = "https://snuggly-sunbeam.dev/changelog"
[[links]]type = "chat"url  = "https://matrix.to/#/#snuggly-sunbeam:matrix.org"
[[links]]type = "donation"url  = "https://snuggly-sunbeam.dev/donate"
[[links]]type = "translate"url  = "https://hosted.weblate.org/projects/snuggly-sunbeam/"
[license]spdx = "Apache-2.0"file = "LICENSE"
[copyright]year = 2026
[[people]]family-names = "Example"given-names  = "Alice"email        = "alice@example.com"roles        = ["founder", "maintainer", "copyright"]orcid        = "0000-0002-1825-0097"affiliation  = "Projectfile"from         = "2026-01-01"
[[people]]family-names = "Example"given-names  = "Bob"email        = "bob@example.com"roles        = ["author"]
[[organizations]]name  = "Projectfile"email = "hello@projectfile.org"url   = "https://projectfile.org"roles = ["funder", "copyright"]from  = "2026-01-01"
keywords = [  "greetings", "i18n", "lightweight",  "topic:internationalization", "audience:developer", "status:stable",]
[[funding]]type = "open_collective"url  = "https://opencollective.com/snuggly-sunbeam"
technologies = ["typescript", "node", "react"]
[requirements.browsers]production  = ["> 0.5%", "last 2 versions", "not dead"]development = ["last 1 chrome version", "last 1 firefox version"]
[requirements.runtime]node = ">=24"
[com.example.build]type = "standard"image = "ubuntu:24.04"
[org.projectfile]operating-system = ["linux", "darwin"]architecture     = ["amd64", "arm64"]
[[org.projectfile.health.endpoints]]path     = "/health"port     = 8080protocol = "http"kind     = "liveness"
[com.example.ci]runner = "linux-amd64"cache  = true
$schema: https://projectfile.org/schema/v1.jsonkind: SoftwareSourceCode
identity:  namespace: com.acme  name: snuggly-sunbeam  version: "1.4.0"  visibility: public  title:    en: "Snuggly Sunbeam"    es: "Rayo de Sol Acogedor"    uk: "Затишний Сонячний Промінь"  summary:    en: "A lightweight library for rendering warm greetings."  created: "2026-04-22"  released: "2026-05-04"  modified: "2026-05-06"
repositories:  - url: "git@github.com:acme/snuggly-sunbeam.git"    type: git    branch: main    role: origin  - url: https://codeberg.org/acme/snuggly-sunbeam.git    type: git    role: mirror
links:  - type: homepage    url: https://snuggly-sunbeam.dev  - type: source-code    url: https://github.com/acme/snuggly-sunbeam  - type: bugs    url: https://github.com/acme/snuggly-sunbeam/issues  - type: documentation    url: https://snuggly-sunbeam.dev/docs  - type: changelog    url: https://snuggly-sunbeam.dev/changelog  - type: chat    url: https://matrix.to/#/#snuggly-sunbeam:matrix.org  - type: donation    url: https://snuggly-sunbeam.dev/donate  - type: translate    url: https://hosted.weblate.org/projects/snuggly-sunbeam/
license:  spdx: Apache-2.0  file: LICENSE
copyright:  year: 2026
people:  - family-names: Example    given-names: Alice    email: alice@example.com    roles: [founder, maintainer, copyright]    orcid: "0000-0002-1825-0097"    affiliation: "Projectfile"    from: "2026-01-01"  - family-names: Example    given-names: Bob    email: bob@example.com    roles: [author]
organizations:  - name: "Projectfile"    email: hello@projectfile.org    url: https://projectfile.org    roles: [funder, copyright]    from: "2026-01-01"
keywords:  - greetings  - i18n  - lightweight  - topic:internationalization  - audience:developer  - status:stable

technologies:  - typescript  - node  - react
requirements:  browsers:    production:  ["> 0.5%", "last 2 versions", "not dead"]    development: ["last 1 chrome version", "last 1 firefox version"]  runtime:    node: ">=24"
com:  example:    build:      type: standard      image: "ubuntu:24.04"    ci:      runner: linux-amd64      cache: true
org:  projectfile:    operating-system: [ linux, darwin ]    architecture: [ amd64, arm64 ]    health:      endpoints:        - path: /health          port: 8080          protocol: http          kind: liveness

JSON cannot carry comments; the discriminator is $schema only. Otherwise the structure is identical to the YAML form above. See spec/examples/all-features.json for the full file.

.onion.i2p