Foundation & Conventions
Decisions that govern everything downstream. Item 1.2 is the critical path — every template and field group in this document depends on it, so settle it before writing any other code.
Menu Structure & URLs
Navigation is by destination and traveller intent, never by content format. The old verb-based menus (Try, Read, Attend, View, Watch, Listen) are retired entirely, along with the duplicate Topics taxonomy.
Primary navigation
| Item | Type | Children |
|---|---|---|
| Journeys | Mega menu | Into the Wild · Expeditions · Two Travellers · Heritage, Properly Told · Slow & Rooted · Treks with Akhil · The Long Journey · Memoir Films · How We Plan · Plan Your Journey |
| Destinations | Mega menu | India (Ladakh, Himachal & Spiti, Uttarakhand, Rajasthan, Maharashtra, Madhya Pradesh, Karnataka) · Africa (Tanzania, Kenya, Zanzibar) · Asia (Sri Lanka, Vietnam, Cambodia) · Europe (Greece). Footer strip: browse by style |
| Stories | Dropdown | Journal · Photo Essays · Travel Films · Legends & Folklore · Podcast Archive |
| Guides | Dropdown | Itineraries · Trek Guides · Best Time to Visit · Costs & Budgets · Practicalities · Gear We Travel With · Heritage Sites |
| Shop | Dropdown | Destination Playbooks · Heritage Audio Guides · Books & Ebooks · Fine Art Prints · Cinematic Footage · Presets |
| About | Dropdown | Suchi & Ankur · Our Travel Charter · Our Partners & Guides · Featured In · Partner with Banjaaraa · Contact |
| Plan Your Journey | Button | Persistent, filled, always visible |
URL architecture
| Pattern | Example |
|---|---|
/journeys/{slug}/ | /journeys/tanzania-serengeti-zanzibar/ |
/journeys/collection/{slug}/ | /journeys/collection/into-the-wild/ |
/destinations/{country}/{area}/ | /destinations/india/ladakh/ |
/stories/{slug}/ | /stories/lahaul-valley/ — flat, regardless of format |
/stories/{format}/ | /stories/photo-essays/ — filtered archive view |
/guides/{slug}/ | /guides/best-time-serengeti-migration/ |
/heritage/{slug}/ | /heritage/halebidu/ |
/shop/{slug}/ | /shop/halebidu-audio-guide/ |
/partners/{slug}/ | /partners/akhil-sharma/ |
Taxonomies
Registered once and shared across post types so a single filter works site-wide. This replaces the old overlapping Categories, Tags and Topics, where the same terms appeared in all three.
| Taxonomy | Key | Structure | Applies to |
|---|---|---|---|
| Collection | collection | Flat — Into the Wild, Expeditions, Two Travellers, Heritage, Slow & Rooted, Treks, Long Journeys | Journey |
| Region | region | Hierarchical — continent › country › state/area | All |
| Travel Style | travel_style | Flat — safari & wildlife, trek, road trip, bike, 4x4, coast & islands, heritage & culture, farm | Journey, Destination, Story, Guide |
| Best Months | best_months | Flat, multi-select — Jan to Dec | Journey, Destination |
| Duration | duration | Flat — 3–5, 6–8, 9–12, 13–16, 17+ days | Journey |
| Traveller Type | traveller_type | Flat — couple, family, solo, group, photographers | Journey |
| Difficulty | difficulty | Flat — easy, moderate, challenging, expedition | Journey |
| Theme | theme | Flat — wildlife, culture, folklore, food, sustainability, photography | Story, Guide |
| Story Format | story_format | Flat — journal, photo-essay, film, legends, podcast | Story |
| Guide Type | guide_type | Flat — itinerary, trek guide, best time, costs, practicalities, gear | Guide |
Post Types & Custom Fields
Eight post types. Story deliberately carries a format taxonomy rather than splitting into separate types, so one archive and one template serve journal entries, photo essays and films, and a piece can change format later without breaking its URL.
4.1 Journey journey
The commercial core. Three variants share this type: standard, trek and long journey — controlled by bjr_variant, with variant-specific fields shown conditionally.
| Field | Key | Type |
|---|---|---|
| Variant | bjr_variant | select — standard / trek / long |
| Premise | bjr_premise | text, one line |
| Hero image | bjr_hero | image |
| Route string | bjr_route | text — arrow-separated stops |
| Duration (days) | bjr_days | number |
| Price from (₹ pp) | bjr_price_from | number |
| Price note | bjr_price_note | text — season and group-size caveat |
| Group size min / max | bjr_group_min bjr_group_max | number |
| Day by day | bjr_days_repeat | repeater — day no., title, description, stay name, stay type, meals, image |
| Stays | bjr_stays | repeater — name, type, nights, one-liner, image |
| Inclusions | bjr_inclusions | repeater — text |
| Exclusions | bjr_exclusions | repeater — text |
| Conservation amount | bjr_cons_amount | number — ₹ per traveller |
| Conservation project | bjr_cons_project | text — named project |
| Fitness note | bjr_fitness | textarea |
| Getting there | bjr_getting_there | textarea — airport, typical routing, visa note |
| Make it yours | bjr_make_yours | textarea — adjustable levers |
| Why we built this | bjr_why | wysiwyg — first person, signed |
| Last travelled | bjr_last_travelled | date |
| Memoir film offered | bjr_memoir | boolean |
| Ground partner | bjr_partner | relationship → Partner |
| Destination | bjr_destination | relationship → Destination |
| Related guides | bjr_guides | relationship → Guide, multiple |
| Gallery | bjr_gallery | image array |
| FAQ | bjr_faq | repeater — question, answer |
| Itinerary PDF | bjr_pdf | file — gated download |
| Featured in hero | bjr_feat_hero | boolean |
| Featured on homepage | bjr_feat_home | boolean |
| Max altitude | bjr_altitude | number — trek variant only |
| Daily distance | bjr_distance | text — trek variant only |
| Permits | bjr_permits | textarea — trek variant only |
| Segment A / B | bjr_seg_a bjr_seg_b | relationship → Journey, long variant only |
| Joining note | bjr_joining | textarea — long variant only |
4.2 Destination destination — hierarchical
| Field | Key | Type |
|---|---|---|
| Premise | bjr_premise | text, one line |
| Hero image | bjr_hero | image |
| Last visited | bjr_last_visited | date |
| Visit count | bjr_visits | number |
| Quick answers | bjr_quick | repeater — label, value |
| Our take | bjr_take | wysiwyg — first person, signed |
| When to go | bjr_when | repeater — month range, rating, note |
| Sub-places | bjr_places | repeater — name, image, one-liner, internal link |
| Wildlife note | bjr_wildlife | textarea |
| Gallery | bjr_gallery | image array |
| FAQ | bjr_faq | repeater — question, answer |
| Section toggles | bjr_sections | boolean group — one per template section |
| Has journeys | bjr_has_journeys | boolean — switches section 4 between journey cards and a general enquiry band |
4.3 Story story
| Field | Key | Type |
|---|---|---|
| Destination | bjr_destination | relationship → Destination |
| Gallery | bjr_gallery | image array — photo essay format |
| Video URL | bjr_video | url — film format |
| Audio URL | bjr_audio | url — podcast format |
| Travelled date | bjr_travelled | date — distinct from publish date |
| Co-author | bjr_coauthor | user — so pieces can be bylined to both |
4.4 Guide guide
| Field | Key | Type |
|---|---|---|
| Destination | bjr_destination | relationship → Destination |
| Last verified | bjr_verified | date — displayed on the page |
| First-hand | bjr_firsthand | boolean — drives the trust badge |
| FAQ | bjr_faq | repeater — question, answer |
| Related journeys | bjr_journeys | relationship → Journey, multiple |
4.5 Heritage Site heritage_site
| Field | Key | Type |
|---|---|---|
| Location | bjr_location | text — plus lat/long |
| Period / dynasty | bjr_period | text |
| Film URL | bjr_film | url — long-form YouTube documentation |
| Highlights | bjr_highlights | repeater — title, description, image |
| Visiting info | bjr_visiting | group — timings, entry fee, best time, photography rules |
| Audio guide | bjr_audio_product | relationship → Product |
| Ebook / book | bjr_book_product | relationship → Product |
| Gallery | bjr_gallery | image array |
4.6 Partner partner
| Field | Key | Type |
|---|---|---|
| Partner type | bjr_partner_type | select — ground agency, trek guide, photographer, stay, conservation |
| Photo | bjr_photo | image |
| Working together since | bjr_since | year |
| What they handle | bjr_handles | textarea |
| Public profile | bjr_public | boolean — named guides public, agencies may stay unnamed |
| Featured from / until | bjr_feat_start bjr_feat_end | date — drives auto-expiry, see 6.8 |
4.7 Testimonial testimonial
| Field | Key | Type |
|---|---|---|
| Traveller name | bjr_name | text |
| Journey taken | bjr_journey | relationship → Journey |
| Month travelled | bjr_month | text |
| Quote | bjr_quote | textarea |
4.8 Product product
| Field | Key | Type |
|---|---|---|
| Product state | bjr_state | select — available / in production / launching soon / waitlist |
| Product type | bjr_product_type | select — playbook, audio guide, book, ebook, print, footage, preset, service |
| Price (₹) | bjr_price | number |
| Delivery | bjr_delivery | file or url — digital fulfilment |
| Linked destination | bjr_destination | relationship → Destination |
| Linked heritage site | bjr_heritage | relationship → Heritage Site |
| Waitlist count | bjr_waitlist_n | number — auto, read-only |
Build checklist
Page Templates
Build order matters. Journey single comes before the homepage, because it is the first template content gets entered against. The homepage assembles last, since every block on it links to something that must already exist.
5.1 Journey single
Sixteen sections, in this order. A visitor must be able to answer where it goes, how long, roughly what it costs and why these two people, without scrolling twice.
5.2 Destination hub
Fourteen sections. Serves a search visitor and a browsing buyer at once: answer the search question in the first two screens, then offer the journey. Every section independently toggleable with graceful collapse and no orphan headers.
5.3 Homepage
One job: route a visitor to traveller, reader or partner within two scrolls. Commercial intent appears at section four, then the page relaxes.
5.4 Remaining templates
5.5 Cross-template requirements
Functional Modules
The commercial machinery behind the templates. Items 6.1 to 6.4 are launch-blocking; the site cannot take an enquiry without them.
Products & Revenue Lines
Everything the site must be capable of selling or capturing. Build the container for all of them now; most ship in a Launching Soon state and the waitlist decides what gets made first.
| Product / line | Mechanism | State at launch |
|---|---|---|
| Curated journeys — 12 itineraries with ground partners | Enquiry → referral commission | Live |
| Treks with Akhil Sharma — 9 offbeat routes, group-only | Enquiry, custom-priced by group size | Live |
| The Long Journey — 15–20 day trek plus overland | Enquiry, highest ticket | Live |
| Trip planning service — ₹4,000–8,000, credited against booking | Razorpay, flat fee | Live |
| Cinematic memoir films — three tiers | Attach-on at enquiry, plus own landing page | Live |
| Heritage audio guides — Belur and Halebidu pilot, then Badami, Khajuraho, Chennakeshava | Digital product, ₹299 | Launching soon |
| Heritage ebooks and print books — inscription-level site documentation | Digital product, ₹499 / bundle ₹699 | Launching soon |
| Destination playbooks — Ladakh, Spiti, Greece, Tanzania | Digital product, ₹399–1,499 | Launching soon |
| Fine art prints — 1,000+ cinematic hi-res frames | Shop listing, fulfilment out of scope | Launching soon |
| Cinematic footage licensing — 300–400 10-second clips | Enquiry-led licensing | Launching soon |
| Lightroom presets | Digital product | Launching soon |
| Brand and tourism partnerships | Partner with Banjaaraa page, media kit download, rate card | Live |
| Affiliate lines — insurance, eSIM, stays, gear, forex | Cloaked links inside guides, with disclosure | Live, containers only |
| Hosted small-group departures | Waitlist only | Waitlist |
Website Workflows
End-to-end paths that must work before launch. Each is tested as a whole, not as isolated components.
Traveller enquiry
- ArrivalSearch, Instagram or direct, landing on a destination hub or journey page
- QualificationQuick answers and our-take establish trust; journey cards present the offer with a visible price band
- SubmissionInline form or sticky bar; journey name pre-filled; source attribution captured
- AcknowledgementAutomated reply within 60 seconds, confirming a human response within a day
- CRMRecord created, tagged by destination and collection, scored, placed in the pipeline
- HandoffNotification to Ankur by email and WhatsApp with the enquiry summary
Waitlist
- EncounterProduct card showing a Launching Soon or Waitlist badge
- CaptureSingle email field — "Tell me when this is out"
- SegmentationContact tagged to that specific product in the CRM
- ReportingPer-product waitlist count visible in the admin, driving build order
Digital purchase
- SelectionProduct page, state Available
- CheckoutSureCart with Razorpay, GST applied
- FulfilmentAutomated delivery of the linked file or access link, with download limits
- Follow-upBuyer added to the CRM, segmented by product type
Partner featured placement
- SetupPartner record created with featured-from and featured-until dates
- DisplayPlacement renders on linked destination and journey pages within the window
- ExpiryPlacement clears automatically on the end date with no manual intervention
Acceptance & Handover
Phase 1 is complete when every item below passes on staging with placeholder content in place.
Phase 2 — Not In Scope Now
Listed so nothing is assumed to be forgotten, and so Phase 1 decisions account for them. No work against this section yet.
Content population
Twelve curated journeys, nine trek routes, two to three long journeys, thirteen destination hubs, five heritage site pages, static page copy, partner profiles, shop listings, and homepage assembly. Written by Suchi and Ankur against the templates delivered in Phase 1.
Data migration
Export from the existing site; manual taxonomy mapping; migration of posts into Story, Guide and Heritage Site; portfolio entries into Photo Essay format; media library transfer and optimisation; consolidation of thin archives; the 301 redirect map and its implementation and testing; and a post-migration integrity crawl. Includes folding the orphaned /banjaaraa-africa-curated.html page into the Tanzania and Kenya journey pages.
SEO and schema
RankMath configuration per post type; custom TouristTrip schema on journeys, which RankMath does not emit natively; TouristDestination, Article, VideoObject, Product, FAQPage, Person, Organization and BreadcrumbList; sitemaps and llms.txt; internal linking and breadcrumbs; and an AI search visibility baseline.
Deferred features
Mapbox destination map in place of the grid; Stay and Experience post types; fixed-date Departure post type for hosted small-group trips; itinerary builder; physical print fulfilment.