← Monasteries and centres

Publishing in the calendar

Monasteries, lineages and Dharma centres already in the calendar can publish their own events, anniversaries of masters and lineage days, and daily words in it. All it takes is one file in a simple format. You can fill it in by hand from the template, check it on this site and send it by email; an AI helper is entirely optional.

Who can publish

Communities that are already in the calendar. The editor gives each community its id — a short name in Latin letters, written in the field source. If your community is not in the calendar yet, apply first.

Apply

What you can publish

  • Events — drubchens, retreats, seminars, teachings, pujas: dates, times, place, a short text and a link.
  • Anniversaries of masters and lineage days. You give them once, by Tibetan date — month and day — and they recur every year: the calendar works out the western date itself.
  • Daily words — a quote, an instruction or a reminder, on a given date or every year on a Tibetan date. A quote always names its source. There can be many of them, even one every day, but no more than three on one date.

Any entry may carry one picture, with your confirmation of the rights and a credit line.

The rules

The calendar exists for practice, so the rules are simple and strict:

  1. Only authentic Dharma content: practice, teaching, the life of the community.
  2. No advertising, prices, sales, requests for donations or sponsorship, politics, criticism of other teachers or traditions, or promises of healing.
  3. Nothing invented: no dates, biographies, quotes, attributions or titles.
  4. Every quote names its author, and the book and translator when there are any.
  5. Your own texts in your own languages. We never machine-translate; a machine translation you made yourselves is published only if the editor approves it.
  6. No private contact details in public texts.

Tibetan dates

Give the month and day as your lineage keeps them. We work out the western date every year ourselves, by the Phugpa (Men-Tsee-Khang) reckoning, as for the whole calendar: a skipped day’s observance moves to the next day, and of a doubled day the first is kept.

Sometimes a month is doubled. For such a year, say in leapMonth which half your community keeps: first — the first half (the default), second — the second, both — both.

Do not convert a Tibetan date into a western one, and do not add a year — neither for anniversaries nor for yearly entries. The checker shows which days they fall on in the coming years.

If your lineage follows another almanac (Tsurphu, for example), publish those days as events with dates.

Losar, the four Düchen, Guru Rinpoche days, full and new moons are already in the calendar: do not add them as anniversaries, even when your community calls such a day a lineage day. Publish what the community does on it as an event or a yearly daily word.

A practice the community keeps every month on a lunar day (every full moon, say) is either events, one per date, with the dates from your almanac, or twelve yearly daily words — months 1 to 12, the same day — each with leapMonth: both, so that in a doubled month it appears in both halves.

The file, step by step

The file is JSON in UTF-8, up to 2 MB. Name it id-date.json, for example example-2026-11-02.json. It may hold no fields that are not in the format: most of them would be typos, and what they hold would be lost without anyone noticing.

Public texts are written by language: { "en": "…", "uk": "…" }. Every language of a text must be in languages or machineTranslated, and the entry’s own language is required. Plain text only, no HTML.

The easiest start is the template, template.v1.json: it has one entry of each kind, and everything you need to replace begins with REPLACE:. Replace the sample values too — your-community-id, you@example.org, the https://example.org/… addresses, your-picture.jpg; the template’s dates, times and Tibetan month and day are only examples. The checker catches REPLACE: and these samples, but not the dates: check those yourself.

The file as a whole

FieldRequiredWhat it isLimit · Example
$schemaRequired: noThe schema’s address: with it, a code editor checks the file as you type."https://…/schema.v1.json"
formatRequired: yesAlways exactly this text."firstbuddha-sangha-contribution"
versionRequired: yesThe version of the format.1
sourceRequired: yesYour community’s id, as the editor gave it.a–z 0–9 -, 2–32"example"
communityRequired: noThe community’s name and website — for the editor.name ≤ 120{ "name": "…", "website": "https://…" }
contactRequired: yesWho is sending: name, email, role. Never published.name ≤ 120 · email ≤ 254 · role ≤ 80{ "name": "…", "email": "…", "role": "…" }
confirmRequired: yesBoth true: you are authorised to speak for the community, and it has the right to publish these texts and pictures.{ "authorised": true, "rights": true }
languagesRequired: yesThe languages the community writes in itself; the first is the main one.1–8["en", "uk"]
machineTranslatedRequired: noLanguages that exist only as a machine translation you asked for.["ru"]
zoneRequired: ifThe events’ time zone (an IANA name). Required when any event has times.IANA"Europe/Kyiv"
partRequired: noThe part’s number, when the file is split.of ≤ 20{ "n": 1, "of": 2 }
entriesRequired: yesThe entries: events, anniversaries, daily words.≤ 1000: event ≤ 300 · anniversary ≤ 100 · note ≤ 800[ … ]
From the example file:
{
  "$schema": "https://www.firstbuddha.space/sangha/contribute/schema.v1.json",
  "format": "firstbuddha-sangha-contribution",
  "version": 1,
  "source": "example",
  "community": {
    "name": "Example Dharma Centre",
    "website": "https://example.org"
  },
  "contact": {
    "name": "Name Surname",
    "email": "office@example.org",
    "role": "Secretary"
  },
  "confirm": {
    "authorised": true,
    "rights": true
  },
  "languages": [
    "en",
    "uk"
  ],
  "zone": "Europe/Kyiv",
  "entries": [ … ]
}

Every entry (in the list entries)

FieldRequiredWhat it isLimit · Example
typeRequired: yesThe kind of entry."event" · "anniversary" · "note"
idRequired: yesThe entry’s id. Keep it the same when you send the file again.a–z 0–9 -, ≤ 64"2026-tara-retreat"
langRequired: noThe language the entry was first written in; without it, the first of languages."en"
urlRequired: noA link to the entry’s page.https://, ≤ 2048"https://example.org/tara-2026"
imageRequired: noOne picture (see below).{ "file": "tara-retreat.jpg", … }

Event — type: "event"

FieldRequiredWhat it isLimit · Example
kindRequired: yesThe kind of event (list below)."ritual"
titleRequired: yesThe title.≤ 160{ "en": "Green Tara retreat" }
subtitleRequired: noA subtitle; only in languages the title has.≤ 200
summaryRequired: noIn brief, a sentence or two.≤ 400
descriptionRequired: noA fuller description. Kept, but the app does not show it.≤ 3000
locationRequired: noWhere exactly: hall, temple, town.≤ 200{ "en": "Main shrine hall" }
zoneRequired: noAnother time zone for this event.IANA"Asia/Kathmandu"
allDayRequired: yestrue — an all-day event, without times.false
startDateRequired: yesThe first day.YYYY-MM-DD"2026-12-04"
endDateRequired: noThe last day, inclusive; without it, the same as startDate.YYYY-MM-DD"2026-12-06"
startTimeRequired: ifThe start time; required when allDay is false.HH:MM"09:00"
endTimeRequired: noThe end time.HH:MM"17:00"
dailyRequired: noFor an event with times over several days: true — a separate session each day from startTime to endTime. false — one continuous span from startTime on the first day to endTime on the last. Without daily the event is read as one span, so always give it for such events.true
videoUrlRequired: noA link to a stream or a recording.https://
registrationRequired: norequired — registration is needed, none — it is not."required"
statusRequired: nocancelled — the event is cancelled."cancelled"

Kinds of event (kind):

  • teaching — Teachings
  • ritual — Pujas and practices
  • monastic — Monastic community
  • course — Courses
  • class — Classes
  • community — Community and service
  • other — Other
From the example file:
{
  "type": "event",
  "id": "2026-tara-retreat",
  "kind": "ritual",
  "title": {
    "en": "Green Tara retreat",
    "uk": "Ретрит Зеленої Тари"
  },
  "summary": {
    "en": "Three days of Tara practice with the resident lama.",
    "uk": "Три дні практики Тари з ламою громади."
  },
  "location": {
    "en": "Main shrine hall",
    "uk": "Головна святиня"
  },
  "allDay": false,
  "startDate": "2026-12-04",
  "endDate": "2026-12-06",
  "startTime": "09:00",
  "endTime": "17:00",
  "daily": true,
  "registration": "required",
  "url": "https://example.org/tara-2026",
  "image": {
    "file": "tara-retreat.jpg",
    "credit": "Photo: Example Dharma Centre",
    "rightsConfirmed": true,
    "alt": {
      "en": "Statue of Green Tara on the shrine",
      "uk": "Статуя Зеленої Тари на вівтарі"
    }
  }
}

Anniversary — type: "anniversary"

FieldRequiredWhat it isLimit · Example
titleRequired: yesThe title.≤ 160{ "en": "Lineage day" }
subtitleRequired: noA subtitle; only in languages the title has.≤ 200
summaryRequired: noIn brief, a sentence or two.≤ 400
tibetanRequired: yesTibetan month and day; leapMonth — first, second or both.month 1–12 · day 1–30{ "month": 3, "day": 10 }
From the example file:
{
  "type": "anniversary",
  "id": "founding-teacher-parinirvana",
  "title": {
    "en": "Parinirvana of our founding teacher",
    "uk": "Паринірвана засновника громади"
  },
  "tibetan": {
    "month": 3,
    "day": 10
  }
}

Daily words — type: "note"

FieldRequiredWhat it isLimit · Example
kindRequired: yesquote, instruction or reminder."quote"
titleRequired: noA heading.≤ 120
textRequired: yesThe text itself; line breaks (verse) are kept.≤ 600
attributionRequired: ifThe source: author (required for a quote), work, ref — page or chapter, translator.author ≤ 120 · work ≤ 200 · ref ≤ 80 · translator ≤ 120{ "author": { "en": "…" }, "ref": "p. 12" }
dateRequired: one of twoOnce, on this date. At most three daily words on one date.YYYY-MM-DD"2026-12-01"
tibetanRequired: one of twoEvery year, on this Tibetan date.month 1–12 · day 1–30{ "month": 9, "day": 15 }
From the example file:
{
  "type": "note",
  "id": "2026-12-01-quote",
  "kind": "quote",
  "date": "2026-12-01",
  "text": {
    "en": "The words of the quote, exactly as they are published.",
    "uk": "Слова цитати — так, як їх надруковано."
  },
  "attribution": {
    "author": {
      "en": "Name of the teacher",
      "uk": "Імʼя вчителя"
    },
    "work": {
      "en": "Title of the book",
      "uk": "Назва книжки"
    },
    "ref": "p. 12"
  }
}

Picture — image

FieldRequiredWhat it isLimit · Example
fileRequired: one of twoThe name of the picture file you attach to the email. Latin letters, digits, dot, hyphen and underscore only, no spaces: tara-retreat.jpg..jpg .jpeg .png .webp .heic"tara-retreat.jpg"
urlRequired: one of twoOr the address of a picture already published for your community.https://www.firstbuddha.space/media/sangha/…
creditRequired: yesThe credit line: who made it.≤ 120"Photo: Example Dharma Centre"
rightsConfirmedRequired: yestrue — you have the right to publish this picture.true
altRequired: noWhat the picture shows, for readers who cannot see it.≤ 200{ "en": "…" }
From the example file:
{
  "file": "tara-retreat.jpg",
  "credit": "Photo: Example Dharma Centre",
  "rightsConfirmed": true,
  "alt": {
    "en": "Statue of Green Tara on the shrine",
    "uk": "Статуя Зеленої Тари на вівтарі"
  }
}

Time zone

Event times are the community’s local time. Give its zone in zone as an IANA name: Europe/London, Asia/Kathmandu, America/New_York. Readers in other zones see the event in their own time.

Ids

An entry’s id stays the same when you send the file again: that is how the calendar knows it is the same entry, changed, and not a new one. Write it in lower-case Latin letters, digits and hyphens: 2026-tara-retreat, tulku-urgyen-parinirvana. 1 to 64 characters, no hyphen at the start or the end; each id only once in the whole file, across events, anniversaries and daily words.

A file replaces everything before it

Every file is a complete snapshot. It replaces everything the community sent before: entries missing from the new file disappear from the calendar.

Parts

A file that is too long (hundreds of daily words, say) can be split into parts, up to 20. Each part is a complete, valid file with the same source, contact, confirm, languages, machineTranslated and zone, and the field part: { "n": 1, "of": 3 }. Send all the parts together.

Regular classes

List regular classes as separate events, one per date — up to 300 events. If the community keeps an iCal or Google calendar, it is better to give us its address.

Different times on different days

If the days of an event have different times (Saturday 10:00–18:00, Sunday 10:00–14:00), make one entry per day with the same title, or one span from the first start to the last end (daily: false). Do not pick one time for all the days.

Pictures

Only photos you took yourselves or have written permission to publish. For each picture, confirm the rights (rightsConfirmed: true) and give a credit line (credit).

JPEG, PNG, WebP or HEIC, up to 10 MB each, the long edge at least 600 pixels (1200 or more is better). Up to 60 pictures in one submission. Name the files in Latin letters, digits, dots, hyphens and underscores, without spaces (tara-retreat.jpg); rename any other file before sending it.

We remove the photo’s hidden data (location, camera), resize it, and publish it with your credit.

Downloads

The same files for every language:

  • Template — a file to fill intemplate.v1.json
  • Example — a filled-in file of a fictional communityexample.v1.json
  • JSON Schema — for code editors and automatic checksschema.v1.json

AI helper (optional)

If the material already exists — a schedule as a PDF, posts, tables, a list of quotes — an AI helper can turn it into such a file. It is only a convenience: everything above works without it.

The helper asks clarifying questions (time zone, languages, Tibetan or western date, rights to pictures, sources of quotes), reminds you of the rules, and gives one file in our format with a list of pictures. It sends nothing itself: you check the file and send it. Its instructions are in English, but it speaks to you in your language.

Claude — skill (zip)
In Claude’s settings (Capabilities → Skills), upload the zip, then ask Claude to prepare a file for Buddhist Calendar.
ChatGPT — instructions
Create your own GPT or a project, paste the instructions and add the three files below as knowledge.
Gemini — instructions
Create a Gem, paste the instructions and add the same three files.
A prompt for any chatbot
Paste it into a chat together with your material.

Files for the helper:

Check, then send

  1. Check the file on the checking page. The file never leaves your browser.
  2. Email the file (all its parts) and the pictures to burners.reissue3b@icloud.com with the subject Sangha file: <id>. If the pictures do not fit into one email, send several with the same subject.
  3. The editor reads every file. What is approved appears in the calendar with the next update of the site; what is not approved is never published.
  4. To change what is published, download your current file from https://www.firstbuddha.space/api/sangha/v1/<id>/contribution.json, edit it, add contact again and send it.

Privacy

The contact details in the file (contact) are used only to reply and are removed before anything is published. Everything else in the file becomes public.

The privacy page