Add world discovery and activity surfaces#86
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Playwright Public Screenshot PreviewOutcome: success Captured routes:
This job is required for PR checks; pixel diff baselines are not enabled yet. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 203a2d0063
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ac6f072f48
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Greptile SummaryThis PR lands world discovery as a coherent feature slice: first-class world profiles with public
Confidence Score: 3/5The PR is draft and the feature logic is sound, but the home page active-worlds query accumulates up to ~2,100 Convex reads on every uncached request — a pattern that needs to be addressed before the event catalog grows or traffic picks up. The world projection, slug helpers, URL sanitization, and fixture/test coverage are all well-executed. The concern is getPublicActiveWorlds: it scans all published events, then fans out to association and world reads per event, all on the most frequently visited page with no caching. This is a structural issue with the query strategy that sits on the critical render path. The denormalized eventStartAt field also introduces a future data-integrity risk whenever event rescheduling is added. convex/_worldEvents.ts (getPublicActiveWorlds query fan-out) and convex/schema.ts (eventWorlds table — missing compound index and eventStartAt drift risk). Important Files Changed
Sequence DiagramsequenceDiagram
participant Browser
participant NextJS as Next.js (force-dynamic)
participant Server as server.ts
participant Convex as Convex Backend
Browser->>NextJS: GET /
NextJS->>Server: fetchHomeActiveWorlds()
Server->>Convex: worlds.listHomeActiveWorlds
Convex->>Convex: query events (up to 50 future + 50 past)
loop For each event (up to 100)
Convex->>Convex: query eventWorlds by_eventId + filter
loop For each association (up to 20)
Convex->>Convex: db.get(worldId)
end
end
Convex-->>NextJS: PublicActiveWorldPreview[]
NextJS-->>Browser: HomeActiveWorldsSection
Browser->>NextJS: GET /w/[slug]
NextJS->>Server: fetchPublicWorldBySlug(slug)
Server->>Convex: worlds.getPublicBySlug
Convex->>Convex: getWorldBySlug (by_slug index)
Convex->>Convex: getPublicWorldEventContext (compound index)
Convex-->>NextJS: PublicWorld + eventContext
NextJS-->>Browser: WorldPublicPage
|
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Summary
Why
This lands the world discovery lane as a coherent PR while keeping early activity labels event-derived and avoiding live VRChat presence, scraped popularity, or marketplace credential work.
Testing
Risk Notes
Refs #79
Closes #84
Closes #81
Closes #80
Closes #82
Closes #83