Skip to content

M2 — Culture: word of the day and festivals

Status: agreed · Last session: 2026-09-29

Sources: requirements.md M2 · decisions.md D3 (Nepali word of the day), A10 (content drafted, then founder-approved), P31 / P34 (experiences are ordinary stops and suggestions) · M1 day plan card · M3 place page card · M13 maps card.

Scope

M2 in requirements.md has four parts. Two are already covered:

  • Place story and "why it matters" — the place page (M3, done 29 Sep).
  • Cultural experiences as stops (dance-dinner, cooking class) — ordinary stops today; NepWalk suggests, travellers choose and pay (P31, P34). Nothing to build.

This card covers the other two: a Nepali word of the day and festivals on the trip dates.

Who and the job

  • Traveller: "Teach me one useful word today" and "is anything special happening while I'm here?"
  • Group leader: sees "your trip falls in Tihar" before the group arrives, and can plan around closures and crowds.
  • Founder / team: keeps the words and festival dates right, without a developer once the admin screen exists (later).

Value

Light fun that makes the plan feel like Nepal, not a generic planner — the difference NepWalk promises (vision, D3). A word a day is something a traveller uses (a "Dhanyabad" to the driver); a festival line turns a date into a reason to be excited, and the overview line is the easiest "wow" when the leader shares the link.

Placement — and why

Element Mobile Tablet / web Why
Word of the day One line at the top of the day, under tonight's stay: 🗣 Dhanyabad — thank you ›; tap opens the full card Same for now; moves to the right column when M13 builds it Seen first thing every morning, costs one line
Festival on the day One line under the word: main day 🪔 Tihar · Laxmi Puja today — …›; other days inside a long festival 🪔 Dashain season (day 6 of 15) Same On the day itself, where it matters
Festivals during your trip A short list at the top of the trip, above the day list: 🪔 Tihar · 7–11 Nov Same Seen before arrival; what the leader shows the group

Wireframe

Day plan (mobile)
┌──────────────────────────────┐
│ Day 3 · Kathmandu · Sun 8 Nov│
│ 🌙 Tonight: Hotel Shanker     │
│ 🗣 Om mani padme hum  ›       │   ← tap to open
│ 🪔 Tihar · Laxmi Puja today › │
│ ┌──────────────────────────┐ │
│ │ stop cards …             │ │
└──────────────────────────────┘

Word card (opened)
┌──────────────────────────────┐
│ 🗣 WORD OF THE DAY            │
│ Dhanyabad  (dhun-ya-baad)    │
│ धन्यवाद                       │
│ Thank you                    │
│ Use it: after a meal, a ride,│
│ any help. Locals smile when  │
│ you try.                     │
└──────────────────────────────┘

Trip top (above the day list)
┌──────────────────────────────┐
│ FESTIVALS DURING YOUR TRIP   │
│ 🪔 Tihar · 7–11 Nov           │
│ 🪔 Chhath · 15 Nov            │
└──────────────────────────────┘

States

  • No festival on the trip dates: the "Festivals during your trip" block and the day lines are left out (never "No festivals").
  • Trip without real dates (a Paila, or no start date yet): no festivals; words still show (they follow day numbers, not dates).
  • Festival dates not entered for that year yet: treated as no festival — never a guess.
  • Long word or tip: wraps; the collapsed line shows the word and meaning only.
  • Loading / error: the lines are left out; the day plan never waits for culture data.

Rules and edge cases

Word of the day (decided 29 Sep):

  1. A path of everyday words, the same order on every trip (hello → thank you → how much? → …).
  2. A day whose stops include a place with its own word shows that word instead (e.g. Boudhanath → "Om mani padme hum").
  3. The path word that was replaced moves to the next day; the path never skips a word. On a short trip with many place words, the last path words simply don't come up.
  4. Two places with words on one day → the first stop in the day's order wins; the other place word is not shown that day.
  5. Each word: romanised word, how to say it, Nepali script, meaning, one "Use it" line. No audio (later).
  6. Words follow day numbers, so they work on Pailas and trips without dates.
  7. One library for every trip — nothing is stored per trip or per day; the backend works out a trip's words from the library each time it is read. A new trip needs no word work; a correction reaches every trip, including shared ones.
  8. The path has ~30 words. A trip longer than the path shows no path word after it runs out (never repeats).
  9. The last day of a trip (2+ days) shows a farewell phrase from a small farewell set, instead of the path or place word — every storyline ends with a goodbye. The phrase is picked from the trip's id, so a trip always shows the same one and different trips get different ones. A one-day trip shows its path word.

Festivals (decided 29 Sep):

  1. Only traveller-visible festivals (~12–15 a year): ones a visitor will see or feel. No civic days, no daily vratas.
  2. Each festival: name, first and last date, main days with their own names (Laxmi Puja, Bhai Tika), a one-line "what you'll see", the year.
  3. A trip shows a festival when any trip day falls between its first and last date. Main day → the named line; other days → " season (day N of M)".
  4. Dates are entered by hand from Hamro Patro (reference), until the MVP and for this Nepali year. No scraping or feed into the product: Hamro Patro's terms forbid commercial use without written approval.

Both:

  • Content is founder-approved before it shows (A10): data files are reviewed in the PR, like place-library.ts.
  • Not private: anyone who can read the trip sees its culture block (same read rule as the trip, S1).
  • Business logic in the backend (nepwalk-fe CLAUDE.md): the backend picks the word per day and the festivals per trip; the frontend only draws them.

Decided

  • Word of the day: path + place words, replaced path word moves to the next day, first place wins (29 Sep).
  • One word library for every trip; ~30 path words, none after the path runs out; the last day shows a farewell phrase from a set, stable per trip (29 Sep).
  • Word card: word · how to say · script · meaning · "Use it" (29 Sep).
  • Placement: one expandable line at the top of the day; right column with M13 (29 Sep).
  • Festival dates: hand-entered table from Hamro Patro for the MVP and this year (29 Sep).
  • Festival list: traveller-visible only (29 Sep).
  • Festivals show on the day and as "Festivals during your trip" at the top (29 Sep).
  • Storage: backend data files now (culture/data/words.ts, culture/data/festivals.ts), no database change, no admin screen. Words and festivals will move to the database with an admin screen later — the API shape below stays the same, so the frontend doesn't change when they move (29 Sep).

TBD

  • Calendar source from next Nepali year (2084): ask Hamro Patro in writing for an API / partner deal, or find an official or open source, or compute. Decide before entering 2084 dates; to record as an open item in decisions.md at the Wed 30 Sep plan revisit.

API shape

GET /trips/:id/culture — same read rule as the trip (canViewTrip, S1); the share link (M5) reuses it.

{
  "days": [
    { "dayNumber": 3,
      "word": { "word": "Om mani padme hum", "say": "om mah-nee pad-may hoom", "script": "ॐ मणि पद्मे हुँ",
                "meaning": "The jewel in the lotus", "useIt": "…", "source": "place" },
      "festival": { "name": "Tihar", "dayName": "Laxmi Puja", "line": "…", "dayOfFestival": 2, "festivalDays": 5 } }
  ],
  "festivals": [ { "name": "Tihar", "firstDate": "2026-11-07", "lastDate": "2026-11-11", "line": "…" } ]
}

source is path, place or farewell. festival is null on days with none.

Draft content (founder to approve in the PR)

Path words (order = the path; 30 words):

# Word · say Script Meaning Use it
1 Namaste · nuh-muh-stay नमस्ते Hello / goodbye Palms together, to anyone, any time of day.
2 Dhanyabad · dhun-ya-baad धन्यवाद Thank you After a meal, a ride, any help. Locals smile when you try.
3 Mitho chha · mee-toh chha मिठो छ It's tasty Say it to whoever cooked your dal bhat.
4 Kati ho? · kuh-tee ho कति हो? How much is it? In shops and markets, before you buy.
5 Pugyo · poo-gyo पुग्यो Enough, thank you When your host keeps refilling your plate.
6 Dai / Didi · dai / dee-dee दाइ / दिदी Elder brother / sister The polite way to call a man / woman — driver, waiter, shopkeeper.
7 Chiya · chee-ya चिया Tea Milk tea with spices, offered everywhere. Say yes.
8 Ramro · raam-ro राम्रो Good, beautiful "Ramro chha!" at a view, a dish, a photo.
9 Bistarai · bis-taa-rai बिस्तारै Slowly "Bistarai, bistarai" — on hills, stairs, and to fast drivers.
10 Pani · paa-nee पानी Water Ask for "umaaleko pani" (boiled water) if unsure.
11 Maaf garnus · maaf gar-noos माफ गर्नुहोस् Excuse me / sorry To pass in a crowd or after a bump.
12 Kasto chha? · kuss-toh chha कस्तो छ? How are you? A friendly opener with anyone.
13 Sanchai chha · sun-chai chha सन्चै छ I'm well The answer to "Kasto chha?".
14 Thik chha · teek chha ठीक छ It's okay / fine Agreeing, or "no problem".
15 Ho / Hoina · ho / ho-i-na हो / होइन Yes / no The two words you'll use most.
16 Chaidaina · chai-dai-na चाहिँदैन I don't need it A polite, firm no to street sellers.
17 Kaha? · ka-haan कहाँ? Where? "Toilet kaha chha?" — where is the toilet?
18 Mero naam … ho · may-ro naam … ho मेरो नाम … हो My name is … Introduce yourself; people will ask.
19 Tapai · ta-pai तपाईं You (polite) Use it with anyone older or new to you.
20 Bhok lagyo · bhok la-gyo भोक लाग्यो I'm hungry Your guide will know what to do.
21 Piro · pee-ro पिरो Spicy "Ali piro" = a little spicy; "piro nahalnus" = no chilli, please.
22 Ek chhin · ek chhin एक छिन One moment "Ek chhin!" — wait a second.
23 Sasto · sus-toe सस्तो Cheap "Ali sasto garnus?" — a bit cheaper, please? Bargain with a smile.
24 Himal · hee-maal हिमाल Snow mountain Point at the peaks: "Himal ramro chha!"
25 Saathi · saa-thee साथी Friend What your driver and guide become by the end.
26 Jaam! · jaam जाम Let's go! Rally the group in the morning.
27 Ramailo · ra-mai-lo रमाइलो Fun "Dherai ramailo bhayo" — it was so much fun.
28 Dal bhat · daal bhaat दाल भात Lentils and rice The national meal. "Dal bhat power, 24 hour!"
29 Shubha prabhat · shu-bha pra-bhaat शुभ प्रभात Good morning A bright start with your hotel staff.
30 Maya · maa-ya माया Love, affection What Nepalis say they give their guests.

Farewell set (last day; one per trip, picked from the trip's id):

Word · say Script Meaning Use it
Pheri bhetaunla · feh-ree bhay-taun-la फेरि भेटौँला See you again Your goodbye to the people who made the trip.
Bhetera khusi lagyo · bhay-tay-ra khu-shee la-gyo भेटेर खुसी लाग्यो Happy to have met you To your driver, guide and hosts.
Pheri aaunu hola · feh-ree aau-noo ho-la फेरि आउनु होला Please come again You'll hear it from your hosts. Answer "Aaunchhu!" — I will.
Shubha yatra · shu-bha yaa-tra शुभ यात्रा Have a good journey What people wish you as you leave; say it back to fellow travellers.
Dherai dhanyabad · de-rai dhun-ya-baad धेरै धन्यवाद Thank you very much The last thing to say before the airport.

Place words (keyed by library place id):

Place Word · say Script Meaning Use it
boudhanath-stupa Om mani padme hum · om mah-nee pad-may hoom ॐ मणि पद्मे हुँ The jewel in the lotus The mantra on every prayer wheel. Walk clockwise and listen for it.
swayambhunath Chaitya · chai-tya चैत्य Stupa / shrine The small stupas around the hill are all chaityas.
pashupatinath-temple Aarati · aa-ruh-tee आरती Evening prayer with lamps Stay for the riverside aarati at dusk.
bhaktapur-durbar-square Juju dhau · joo-joo dhau जुजु धौ King of curds Bhaktapur's famous yoghurt, served in clay pots. Try one.
chitwan-national-park Gainda · gain-da गैंडा Rhino What everyone hopes to see from the jeep.

Festivals, Oct 2026 – Apr 2027 (dates from Hamro Patro, checked 29 Sep; New Year 2084 and Buddha Jayanti 2027 are not published yet — add when they are):

Festival Dates Main days What you'll see
Dashain 11–25 Oct 2026 Ghatasthapana 11 Oct · Fulpati 17 Oct · Maha Ashtami 18 Oct · Maha Nawami 20 Oct · Bijaya Dashami 21 Oct Nepal's biggest festival: families gather, elders give red tika, kites fill the sky; many shops and offices close.
Tihar 7–11 Nov 2026 Kag Tihar 7 Nov · Kukur Tihar + Laxmi Puja 8 Nov · Gai Puja 9 Nov · Gobardhan Puja / Mha Puja 10 Nov · Bhai Tika 11 Nov Festival of lights: oil lamps and marigolds on every house, garlanded dogs, children singing Deusi door to door.
Chhath 15 Nov 2026 Chhath 15 Nov Offerings to the setting and rising sun at rivers and ponds, strongest in the Terai.
Yomari Punhi 24 Dec 2026 Yomari Punhi 24 Dec Newar harvest festival: sweet steamed yomari dumplings in Kathmandu valley homes.
Christmas 25 Dec 2026 Christmas Day 25 Dec A public holiday; churches in Kathmandu hold services and carols.
Tamu Lhosar 30 Dec 2026 Tamu Lhosar 30 Dec Gurung New Year: dances and traditional dress, big in Pokhara.
Maghe Sankranti 15 Jan 2027 Maghe Sankranti 15 Jan Winter's end: sesame sweets, ghee and yam, holy dips in rivers.
Sonam Lhosar 7 Feb 2027 Sonam Lhosar 7 Feb Tamang New Year: music, dance and gatherings around Boudha and the hills.
Basanta Panchami 11 Feb 2027 Saraswati Puja 11 Feb Spring and the goddess of learning: students crowd Saraswati shrines, children write their first letters.
Maha Shivaratri 6 Mar 2027 Maha Shivaratri 6 Mar Thousands of pilgrims and sadhus at Pashupatinath; bonfires at night. Expect big crowds there.
Gyalpo Lhosar 9 Mar 2027 Gyalpo Lhosar 9 Mar Sherpa / Tibetan New Year: butter lamps and prayer flags at Boudhanath.
Holi 21–22 Mar 2027 Holi (hills) 21 Mar · Holi (Terai) 22 Mar Festival of colours: water balloons and coloured powder in the streets — wear clothes you can lose.
Ghode Jatra 6 Apr 2027 Ghode Jatra 6 Apr Horse parade and army display at Tundikhel, Kathmandu.

Backlog (after launch)

  • Words and festivals in the database with an admin screen (see Decided).
  • Audio for each word.
  • "Closed today" warnings per festival (sights and shops).
  • More place words as the library grows.

Tasks

Build day: set at the Wed 30 Sep cut-line (M2 is first on the cut list).

  1. [be] Data files culture/data/words.ts (path, place and farewell words) and culture/data/festivals.ts (the table above) — founder reviews the content in the PR. Pure rules, unit-tested: wordsForTrip(tripId, days) (path, place word first, moved path word, first place wins, no word after the path runs out, farewell on the last day picked stably from the trip id) and festivalsForTrip(startDate, dayCount) (overlap, main day vs season line, no dates → none).
  2. [be] GET /trips/:id/culture — same read rule as the trip (canViewTrip); e2e for anonymous / outsider / insider on a private and a public trip, and a trip with no dates.
  3. [fe] Day plan: word line (expandable card) and festival line under tonight's stay; left out on loading / error.
  4. [fe] "Festivals during your trip" block at the top of the trip; left out when empty.