feat(home): first-run overview — feature tour + your center + feed peek#294
Merged
Conversation
New/unengaged members (no joined events, no board posts) previously saw a sparse Home that read as dead. Replace that empty state with a guided first-run overview so a new user grasps the whole app at a glance: - "Welcome to Janata" feature tour: three tappable rows (Discover events & centers → Explore, RSVP in a tap → Explore, Join the conversation → Feed) that double as navigation. - "Your center" card with real name + city + member count, routing to the center board; falls back to a "Choose your home center" prompt when no center is set. - "Latest on your board" feed peek (reuses BoardPostCard) when the center board has posts. Real events still render below (Up next / Coming up). The overview is shown only while signedUpEvents and boardPeek are both empty, so it gets out of the way the moment the member joins an event or a post lands — an engagement nudge that self-resolves. Returning members keep the existing layout. Verified on web (mobile width) for both the no-center and has-center states. frontend tests: 187 pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
KishParikh13
added a commit
that referenced
this pull request
May 28, 2026
The first-run overview (#294) gated on `boardPeek.length === 0`, but the overview's "Latest on your board" peek renders only when posts exist — so the peek could never show: the moment a post existed, isNewUser flipped false and the overview disappeared. Base "new user" on discovery state instead: hasn't joined an event yet (`signedUpEvents.length === 0`), independent of posts. Now a member who has joined no events still sees the tour + their center + a live peek of their board's activity, and it self-resolves once they RSVP. Returning members with joined events keep the normal home (which carries its own #293 boards peek). Verified on web: seeded a post on the local center board and confirmed the peek renders inside the overview. frontend tests: 187 pass. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Replaces the sparse first-run Home (which read as "dead" for a brand-new member) with a guided overview that teaches the whole app at a glance and surfaces real, personal content.
When a member hasn't engaged yet (no joined events and no board posts), Home shows:
BoardPostCard) when the center board has posts.Real events still render below (Up next / Coming up).
Why
Per the MSC-launch feedback, the demo home looked empty/confusing to a first-time viewer. This gives new users an immediate mental model of what Janata does, plus clear next steps and their own center.
Trigger (easy to tune)
Shown only while
signedUpEvents.length === 0 && boardPeek.length === 0. It self-resolves the moment the member joins an event or a post appears — an engagement nudge that gets out of the way. Returning members with activity keep the existing layout. If we later want it strictly first-N-visits, a localStorage dismissal is the natural next step.Verification
npm run test:frontend→ 187 pass. No new tsc errors in the touched file.🤖 Generated with Claude Code