NIPs by PolleramaCommunity NIPs, surfaced by trustConnect
npub1hhpplya3ut9...

NIP-DIDACTIC

Published Jul 30, 2026
kind 30143 · Projektkind 30144 · Maßnahme

NIP-DIDACTIC

Funded Didactic Projects, Teaching Measures, and Project Publications

draft optional

Abstract

This NIP defines two addressable event kinds for representing funded didactic projects (and their byproducts) on Nostr, and delegates the third byproduct — project publications — to [NKBIP-01] kind 30040:

KindEntitySchema-type
30143ProjektProject
30144MaßnahmeTeachingMeasure
PublikationUses [NKBIP-01] kind 30040 (see below)

The first producer of these kinds is [transferkiosk.net][tk] (the Stiftung Innovation in der Hochschullehre / Stil portal), but the shapes are generic enough to also describe BMBF / DFG / EU-funded teaching innovation projects.

This NIP is a companion to [NIP-AMB][amb]:

  • NIP-AMB (kind 30142) models consumable learning resources (videos,

textbooks, OER). It does not have a slot for the funded project that produced a resource, nor for the documented teaching intervention that a resource arose from, nor for the scholarly publication that reflects on it.

  • NIP-DIDACTIC fills those gaps. The two kinds reuse NIP-AMB's flattening

grammar and Nostr-native tag conventions so AMB-aware tooling can be extended uniformly.

  • Vocabularies for the controlled fields below are published per

[NIP-VOCAB][vocab] (kinds 39737 ConceptScheme / 39738 Concept) and referenced from event tags.

[tk]: https://transferkiosk.net/ [amb]: AMB.md [vocab]: VOCAB.md [NKBIP-01]: https://njump.me/naddr1qvzqqqrcvypzplfq3m5v3u5r0q9f255fdeyz8nyac6lagssx8zy4wugxjs8ajf7pqqyxu6mzd9cz6vp3tn64lg

Authorship and trust model

These events are third-party catalog records. The event pubkey is the publisher/indexer that mirrors the source catalogue (e.g. the edufeed importer for transferkiosk.net) — not the project, its host institution, or a publication's authors. Tags such as host:*, funder:*, and author:* describe entities named in the source data; they are claims attested by the publishing pubkey, not self-published identities. A consumer that needs provenance should treat the pubkey as the asserting party and follow the r tag back to the source record. When a described person or organisation has its own Nostr identity, a p tag links to it (see below); absent that, the flattened *:name fallbacks carry display metadata only, not identity.

Shared Conventions

This section covers the two native kinds, Projekt (30143) and Maßnahme (30144); both inherit the NIP-AMB flattening grammar:

  • **d tag** — stable identifier, addressed as kind:pubkey:d.
  • **type tag** — human-readable schema-type label. Authoritative routing is

done via the kind number.

  • **Flattening with :** — nested objects are flattened with : as the

delimiter (funder:program:name, host:location:name).

  • Arrays — repeat the same tag key in order. When an array element is itself

an object spanning several tags (a concept triple, an author, an editor), that element's tags MUST be emitted contiguously and led by its anchor key: :id for concept triples, :name for persons/organisations. A repeat of the anchor key marks the start of the next element. This is the "boundary on repeated :id" rule inherited from [NIP-AMB][amb]; consumers reassemble objects by splitting each repeated group at its anchor key.

  • **content field** — duplicates the description tag for client display.
  • **t tag** — keywords / Stichwort.
  • **r tag** — external URLs (source page, DOI, project website).
  • **i tag** — external identifier URIs (ORCID, ROR, GND, w3id.org URIs).
  • **p tag** — for project members / authors with a Nostr identity:

["p", <pubkey-hex>, <relay-hint>, <role>] where <role> is "creator", "contributor", "author", or "participant". Persons without a Nostr identity use the flattened creator:* / author:* / participant:* fallbacks.

  • **ext:<ns>:<facet>:<sub>** — extension namespace for source-specific

fields not standardised here, exactly as in NIP-AMB. The transferkiosk producer uses ext:tk:*.

Publications (delegated to [NKBIP-01] kind 30040, see below) follow NKBIP-01's own conventions instead: the content duplication rule above does NOT apply to them (their content field MUST be empty), and their i tag uses NIP-73-style code form (doi:10.x/…) rather than the identifier-URI convention above.

Concept references (flat-concept triple)

Wherever a tag references a term from a controlled vocabulary, three flat tags together describe the concept:

["<facet>:id",              "<concept URI>"]
["<facet>:prefLabel:<lang>", "<label>"]
["<facet>:type",             "Concept"]

When a facet carries several concepts, the three tags repeat per concept. The <facet>:id tag MUST come first within each concept and marks the concept boundary (see Arrays above); consumers group each :prefLabel/:type with the most recent :id.

The <concept URI> is always an external (resolvable or stable) URI — never a Nostr coordinate. If the vocabulary is also published on Nostr per NIP-VOCAB, an additional companion a tag SHOULD be emitted so vocab-aware clients can fetch the underlying kind:39738 event for label translation, narrower/broader concepts, etc.:

["a", "39738:<pubkey>:<concept-d>", "<relay>", "<facet>"]

The fourth element matches the flattened tag prefix (audience, activity, about, …). Consumers without a vocab-aware index can ignore the a and still group by <facet>:id.

Cross-entity relations

A relation between two events — either of the two native kinds, or between a delegated NKBIP-01 publication event (kind 30040) and a native Projekt/ Maßnahme — is expressed with an a tag whose fourth element is a relationship marker:

MarkerDirectionMeaning
isPartOfMaßnahme → Projekt; sub-Projekt → Verbund-ProjektThe subject belongs inside the referenced object.
hasPartInverse of isPartOfOptional; mostly used by indexers.
isOutputOfPublikation (30040) → ProjektThe publication is an output of the referenced project.
documentsPublikation (30040) → MaßnahmeThe publication reports on a specific measure.

isPartOf and hasPart reuse NIP-AMB vocabulary; isOutputOf and documents are introduced by this NIP.

Kind 30143 — Projekt

A funded didactic / teaching-innovation project. Time-bounded, hosted at one or more institutions, with at least one funding source.

Required tags

TagNotes
dStable identifier (e.g. source URL).
type"Project".
nameProject title.
descriptionProject summary. ALSO duplicated into content.

Optional tags

TagSource/meaning
acronymProject acronym / Kurztitel.
projectNumberFunder-internal number, e.g. "FR-599/2023".
startDate, endDateISO 8601 dates.
extendedUntilISO 8601 date; optional extension cutoff.
statuse.g. veroeffentlicht, laufend.
inLanguageBCP47 code, repeatable.
imageURL of a representative image.
dateCreated / datePublished / dateModifiedISO 8601 (per NIP-AMB).
funder:name / funder:type / funder:idFunding body. type=FundingScheme for programs.
funder:program:name / funder:program:idFunding program inside the funder.
funder:programLine:name / funder:programLine:idSub-line inside the program.
host:id / host:name / host:typeHosting institution. type=Organization.
host:location:id / host:location:nameE.g. federal state.
host:kind:id / host:kind:nameInstitution type (Universität, Fachhochschule, …).
participant:name / participant:role / participant:idNon-Nostr team members.
pTeam members with Nostr identity, role "participant".
rSource URL, project website, …
tKeywords.

Concept references

Concept triples (with companion a tag) using these facets:

FacetMeaningVocab d-tag (transferkiosk producer)
aboutSubject area (Fächergruppe/-bereich)tk-faechergruppen, tk-fachbereiche
objectiveProject goal (Projektziel)tk-projektziele

Relations

  • ["a", "30143:<pub>:<d>", "<relay>", "isPartOf"] — sub-project of a Verbund-Projekt.

Example

{
  "kind": 30143,
  "tags": [
    ["d", "https://transferkiosk.net/p/101553"],
    ["type", "Project"],
    ["name", "Lernspiel für die Orthopädie und Unfallchirurgie"],
    ["acronym", "LeOpädchi"],
    ["projectNumber", "FR-599/2023"],
    ["description", "Ein wesentlicher Teil akuter medizinischer Konsultationen geht auf Erkrankungen und Verletzungen des Bewegungsapparates zurück …"],
    ["startDate", "2024-04-01"],
    ["endDate", "2026-03-31"],
    ["status", "veroeffentlicht"],
    ["datePublished", "2025-12-19"],
    ["inLanguage", "de"],
    ["host:id", "https://transferkiosk.net/vocab/tk-einrichtung/100448"],
    ["host:name", "Universitätsklinikum Bonn"],
    ["host:type", "Organization"],
    ["host:location:name", "Nordrhein-Westfalen"],
    ["host:kind:name", "Universitäten"],
    ["funder:name", "Freiraum 2023"],
    ["funder:type", "FundingScheme"],
    ["funder:program:name", "Freiraum"],
    ["funder:programLine:name", "Förderlinie C"],
    ["about:id", "https://transferkiosk.net/vocab/tk-faechergruppen/100004"],
    ["about:prefLabel:de", "Humanmedizin/Gesundheitswissenschaften"],
    ["about:type", "Concept"],
    ["a", "39738:d2689e2f…:tk-faechergruppen/100004", "wss://relay.edufeed.org", "about"],
    ["objective:id", "https://transferkiosk.net/vocab/tk-projektziele/100007"],
    ["objective:prefLabel:de", "Hochschule: Flexibilisierung & Individualisierung"],
    ["objective:type", "Concept"],
    ["a", "39738:d2689e2f…:tk-projektziele/100007", "wss://relay.edufeed.org", "objective"],
    ["r", "https://transferkiosk.net/p/101553"]
  ],
  "content": "Ein wesentlicher Teil akuter medizinischer Konsultationen …"
}

Kind 30144 — Maßnahme

A documented concrete teaching intervention within a Projekt. Carries narrative sections plus rich classification across many didactic axes.

Required tags

TagNotes
dStable identifier (e.g. source URL).
type"TeachingMeasure".
nameMeasure title (Maßnahmentitel).
descriptionSummary (Zusammenfassung). Also duplicated into content.
a (isPartOf)["a", "30143:<pub>:<d>", "<relay>", "isPartOf"] to parent Projekt.

Narrative section tags

Each MAY appear at most once. The value is short text; long prose SHOULD be duplicated into content (as markdown headings) and the tag kept only for queryability.

TagSource
summaryZusammenfassung
challengeHerausforderungen
approachHerangehensweise
contextZusammenhang
prerequisiteVoraussetzungen
procedureVorgehen
outcomeEffekte
learningsLearnings
recommendationEmpfehlung
tipsTipps

Method / format / tool annotations

Recommended and not-recommended values use distinct tag names so consumers can render the polarity:

TagMeaning
method:recommendedA method the author recommends.
method:notRecommendedA method the author warns against.
format:recommended
format:notRecommended
tool:recommended
tool:notRecommended

Concept references

FacetMeaningVocab d-tag (transferkiosk producer)
audienceZielgruppetk-zielgruppen
aboutFachbereich / Fächergruppetk-massnahme-fachbereiche, tk-massnahme-faechergruppen
activityAktivitättk-aktivitaeten
actionScopeAktionsradiustk-aktionsradius
actionFieldHandlungsfeldtk-handlungsfeld
studyModelStudienmodelltk-studienmodell
effortLevelZeitaufwandtk-zeitaufwand
staffNeedPersonalbedarftk-personalbedarf
materialNeedSachmittelbedarftk-sachmittelbedarf
investmentNeedInvestitionsmittelbedarftk-investitionsmittelbedarf
transferabilityTransferierbarkeittk-transferierbarkeit

Extension namespace (ext:tk:*)

The following transferkiosk-specific facets are not in NIP-DIDACTIC core and use the ext namespace:

FacetSource
ext:tk:projectCyclePhaseProjektzyklusphase
ext:tk:qualityDimensionQualitätsdimension
ext:tk:qualityDevelopmentQualitätsentwicklung
ext:tk:evaluationLevelEvaluationsebene
ext:tk:evaluationCriterionEvaluationskriterium
ext:tk:evaluationMethodEvaluationsverfahren
ext:tk:fachbezugFachbezug

Each follows the flat-concept-triple grammar (ext:tk:<facet>:id, ext:tk:<facet>:prefLabel:<lang>, ext:tk:<facet>:type).

Relations

  • ["a", "30143:<pub>:<d>", "<relay>", "isPartOf"] — REQUIRED, to parent Projekt.

Publikationen (NKBIP-01 kind 30040)

Publications are not a NIP-DIDACTIC kind. A Publikation is published as a standard [NKBIP-01] Curated Publications index event of kind 30040. (The [NKBIP-01] spec document is itself a kind-30817 record — naddr…tn64lg, whose own d-tag is nkbip-01. That is the spec's address, not a tag on any publication event; the publication's own d-tag is the next item below.)

A Publikation carries d (lowercase letters/digits/hyphens, deterministic tk-p{projekt}-pub{id} for Transferkiosk imports), title, type (academic, or book for monographs), summary (abstract; the event content MUST be empty), plain author tags, i external identifier in code form (doi:10.xxxx/…), source (readable landing page), published_on, published_by, and AMB-style creator:* runs (creator:type/creator:name/creator:honorificPrefix) mirroring edufeed-app's 30040 dialect.

NKBIP-01 permits additional tags; Transferkiosk publications carry these extensions:

TagMeaning
additionalTypeschema.org type: ScholarlyArticle, Book, Chapter.
editor:name/:type/:honorificPrefixHerausgeber:innen (run per person).
publicationLocationOrt.
pageRangeUmfang / Seitenzahlen.
publicationType:*Publikationsart concept triple (vocab tk-publikationsart).
["a", "30143:<pub>:<d>", "<relay>", "isOutputOf"]REQUIRED parent-Projekt link.

Historical note: kind 30145 served this role until 2026-07; those events were deleted (NIP-09) and re-published as kind 30040.

Querying

NIP-01 filter examples

// all projects
{"kinds": [30143]}

// project by its addressable coordinate
{"kinds": [30143], "authors": ["<pubkey>"], "#d": ["https://transferkiosk.net/p/101553"]}

// all measures belonging to a specific project
{
  "kinds": [30144],
  "#a": ["30143:<pubkey>:https://transferkiosk.net/p/101553"]
}

// all publications that came out of any project by this publisher
{"kinds": [30040], "authors": ["<pubkey>"]}

// publications of a specific project (NIP-50 field syntax; the relay
// resolves partOf against its facet — a bare #partOf tag filter is not
// supported)
{"kinds": [30040], "search": "partOf:30143:<pubkey>:<project-d>"}

// projects with a specific subject area
{"kinds": [30143], "#about:id": ["https://transferkiosk.net/vocab/tk-faechergruppen/100004"]}

// measures targeting a specific audience
{"kinds": [30144], "#audience:id": ["https://transferkiosk.net/vocab/tk-zielgruppen/100000"]}

nak CLI examples

PUB=<publisher-pubkey-hex>

# fetch a project
nak req -k 30143 -a $PUB -d https://transferkiosk.net/p/101553 wss://relay.edufeed.org

# all measures of a project
nak req -k 30144 -a $PUB --tag a=30143:$PUB:https://transferkiosk.net/p/101553 wss://relay.edufeed.org

# publication by DOI (code form)
nak req -k 30040 --search "doi:10.3224/gender.v17i3.02" wss://relay.edufeed.org

Reverse Conversion (Nostr event → JSON-LD-ish)

Mirrors NIP-AMB's reverse-conversion section:

  1. Extract tags array.
  2. Group flat tags by prefix; reassemble nested objects via :.
  3. Duplicate-key tags become array elements (order preserved).
  4. d tag → id.
  5. t tags → keywords array.
  6. r tags → out-of-band see-also references (no JSON-LD equivalent).
  7. p tags with role → creator/contributor/author/participant,

resolved via kind:0 profiles.

  1. a tags with marker isPartOf/hasPart/isOutputOf/documents

isPartOf/hasPart/isOutputOf/documents properties whose id is a nostr:naddr1… URI (NIP-19 / NIP-21).

  1. a tags with marker matching a flattened-concept facet → resolve to

the referenced kind:39738 event for label translation, then merge into the concept object under <facet> alongside the :id/:prefLabel triple.

  1. ext:<ns>:<facet>:<sub> tags → sibling ext.<ns>.<facet> array of

concept objects, exactly as in NIP-AMB. Producers MUST NOT fold ext into core properties on reverse conversion.

Reference Implementations

— Python reference: crawl.py (raw fetch), extract-vocabs.py, publish-vocabs.py (NIP-VOCAB publish), convert.py (raw → 30143/30144 + NKBIP-01 30040).

Nostr relay that already supports addressable events in this range.

References

  • [NIP-AMB](AMB.md) — flattening grammar and concept triple inherited here.
  • [NIP-VOCAB](VOCAB.md) — kinds 39737/39738/39739 for published vocabs.
  • [NIP-01](01.md) — addressable events.
  • [NIP-19](19.md) — nprofile/naddr encodings for reverse conversion.
  • [NIP-21](21.md) — nostr: URI prefix.
  • [NIP-65](65.md) — relay discovery for p-tag relay hints.