Data source
All milestone data lives inlib/timeline-data.ts as the exported timelineData array.
Data structure:
lib/timeline-data.ts
speed property alternates between 3 and -3 across entries, creating a staggered parallax offset as the user scrolls.
Milestones (1970–2026)
30 entries spanning 56 years of temple history:| Year | Milestone |
|---|---|
| 1970 | Jeevanpran Shree Muktajeevan Swamibapa’s First Visit to USA |
| 1987 | Acharya Swamishree Maharaj establishes SSSSM USA |
| 1992 | Acharya Swamishree Maharaj’s Second Visit to USA |
| 1995 | Acharya Swamishree Maharaj establishes New Jersey Hari Mandir |
| 1998 | Secaucus Temple Ground Breaking |
| 1999 | Acharya Swamishree Maharaj Visits Temple Construction Site |
| 2001 | Suvarna Tula Murti Pratishtha Opening |
| 2002 | Muktajeevan Swamibapa Community Hall Opening |
| 2003 | First Youth Satsang Shibir USA |
| 2004 | Acharya Swamishree Maharaj Helicopter Arrival |
| 2005 | Secaucus Temple’s First Health Camp |
| 2006 | 5th Patotsav & Rangotsav |
| 2007 | Shatabdi Mahotsav |
| 2008 | Buchmuller Park Cultural Program |
| 2009 | Diwali Annakut |
| 2010 | Father’s Day Celebration |
| 2011 | New Jersey Dashabdi Mahotsav |
| 2012 | Platinum Tula |
| 2013 | Swamibapa Pipe Band USA 10th Anniversary |
| 2014 | Flash Mob Welcome Dance |
| 2015 | One World Trade Center Visit |
| 2016 | Smruti Mandir Rajat Mahotsav Dance |
| 2017 | Sadbhav Amrut Parva |
| 2018 | New Loya Shakotsav |
| 2019 | Acharya Swamishree Maharaj Final USA Vicharan |
| 2020 | Acharya Swamishree Maharaj Memorial |
| 2021 | 20th Patotsav Celebrations |
| 2022 | Acharya Swamishree Maharaj Asthi |
| 2023 | Chandan Darshan |
| 2024 | Guruparampara Grand Hindolo |
| 2025 | Acharya Swamiji Maharaj is showered with flower petals |
| 2026 | Something Extraordinary Awaits… |
The 2026 entry uses the R2 CDN logo URL (
https://cdn.njrajatmahotsav.com/main_logo.png) rather than a Cloudflare Images ID, as the commemorative photo for the Mahotsav is not yet available.Cloudflare Images integration
Every historical photo is served through Cloudflare Images using thebigger variant:
- Upload the image to Cloudflare Images
- Copy the resulting image ID
- Pass it to
getCloudflareImage()in the relevant entry inlib/timeline-data.ts
Desktop parallax scroll
On desktop the timeline is rendered as a full-page horizontal parallax experience using GSAP and Locomotive Scroll.GSAP
Handles per-element scroll-linked transforms. Each timeline item’s
y offset is driven by its speed value, creating depth as the user scrolls.Locomotive Scroll
Provides smooth inertia scrolling and exposes scroll progress values that GSAP reads. This combination creates the parallax depth effect.
speed field in each milestone entry controls how far and in which direction an image travels relative to the scroll position:
- Positive
speed(e.g.3): image moves downward relative to scroll, appearing to recede - Negative
speed(e.g.-3): image moves upward relative to scroll, appearing to advance
3 and -3 across adjacent entries creates a staggered two-column visual rhythm.
Mobile swipe view
On mobile devices the timeline renders throughcomponents/organisms/MobileTimeline.tsx as a vertically stacked list with scroll-triggered fade animations.
- Animation
- Layout
An
IntersectionObserver (threshold 0.2) watches every [data-timeline-item] element. When an item enters the viewport its index is added to a Set<number> stored in visibleItems state.Items not yet visible use opacity-0 translate-y-8; visible items transition to opacity-100 translate-y-0 over 700ms.components/organisms/MobileTimeline.tsx
Adding a new milestone
Step-by-step: add a milestone
Step-by-step: add a milestone
- Upload the archival photo to Cloudflare Images and note the image ID.
- Open
lib/timeline-data.ts. - Insert a new entry in the
timelineDataarray in chronological order:
- Verify the
speedvalue alternates with the adjacent entries. - Save the file — no other changes are required. Both the desktop parallax and mobile views read from the same array.
Commented-out entries
Commented-out entries
Several entries in
timelineData are commented out (1987 alternate photo, 1995 alternate photo, 2007 first version). These are preserved as fallback images in case the active image needs to be replaced. Do not delete them.Updating an existing photo
Updating an existing photo
Replace the
getCloudflareImage() call in the relevant entry with the new image ID. The old image ID can be kept as a comment for reference. Cloudflare Images caches by URL, so the update takes effect immediately without a cache purge.