Cross-link to the attendee app + share schedule API contract#1
Open
marykatefain wants to merge 1 commit into
Open
Cross-link to the attendee app + share schedule API contract#1marykatefain wants to merge 1 commit into
marykatefain wants to merge 1 commit into
Conversation
The website is now visibly paired with the attendee app at aos-convergence.app. Every page surfaces an "Open App" affordance, and the gated event schedule served from /api/event has been extended with machine-readable date/start/end fields so the app can render and reason about the agenda using the same NIP-98 endpoint. - BRAND.md: shared design contract for both repos. - src/lib/appLinks.ts: APP_URL + WEBSITE_URL constants (overridable via VITE_APP_URL / VITE_WEBSITE_URL) and deep-link anchors. - SiteHeader / SiteFooter: persistent "Open App" CTA in desktop nav, mobile menu, and footer. - EventDetails (/event): schedule moved above the format mini-cards so the first content under the hero answers "what is happening when?"; hero gains a secondary "Open App" CTA next to Signal; narrative day sections relabelled by format instead of Day 1/2/3 to stop visually mimicking the timed schedule; id="schedule" anchor added. - Program (/program): id="event-flow" anchor; bottom CTA row adds "See the full timed agenda →" and "Approved? Open App ↗". - worker/src/index.ts: schedule items gain start/end (HH:MM) fields, each day gains date (YYYY-MM-DD), response gains top-level timezone/eventStart/eventEnd. CORS now an explicit allowlist (convergence.andotherstuff.org + aos-convergence.app + dev origins) so the app can call the same gated endpoint cross-origin. All changes backward-compatible with the existing website rendering. - index.html: complete OG/Twitter meta. - SiteHeader.test.tsx: smoke test for the Open App link.
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.
Summary
The website is now visibly paired with the attendee app at
aos-convergence.app. Every page surfaces an "Open App" affordance, and the gated event schedule served from/api/eventhas been extended with machine-readabledate/start/endfields so the app can render and reason about the agenda using the same NIP-98 endpoint.This is the website half of a pair of changes; the matching commits live in the
convergence-apprepo and ship the in-app/schedulepage, the "Now happening" banner, and updated cross-links back to the website.What changes
Cross-linking surfaces
SiteHeader/SiteFooter— persistent "Open App ↗" CTA in the desktop nav, mobile menu, and footer. Always visible (the app is public; no auth gate on the website side)./eventhero — schedule moved above the format mini-cards so the first content under the hero answers "what is happening when?". Hero gains a secondary "Open App" CTA next to Signal. Narrative day sections were relabelled by format (Open Space / Hackathon / Main Stage) instead of Day 1/2/3 to stop visually mimicking the timed schedule.id="schedule"anchor added./program—id="event-flow"anchor on the day-by-day overview. Bottom CTA row adds "See the full timed agenda →" and "Approved? Open App ↗".src/lib/appLinks.ts(new) —APP_URL+WEBSITE_URLconstants, overridable viaVITE_APP_URL/VITE_WEBSITE_URL. Deep-link anchors for the public program flow and the gated schedule live here too.Schedule API contract (shared with the attendee app)
worker/src/index.ts— schedule items gain parsedstart/end(HH:MM, Europe/Oslo) fields; each day gainsdate(YYYY-MM-DD); the response gains top-leveltimezone/eventStart/eventEnd. All additions are backward-compatible with the existing website rendering (which only consumestime).convergence.andotherstuff.org,aos-convergence.app, and localhost dev origins) so the app can call the same gated endpoint cross-origin. NIP-98 stays the actual per-request gate; CORS is defense in depth.Shared design contract
BRAND.md(new) — colors, radii, typography conventions, header lockup, CTA patterns, OG meta, and the canonical cross-link surface placement table. Both repos reference this.index.html— complete OG / Twitter card meta (image is a TODO awaiting the shared OG asset).README.md— documentsVITE_APP_URL/VITE_WEBSITE_URLalongside the existingVITE_API_URL.Tests
SiteHeader.test.tsx(new) — smoke test asserting the "Open App" link points toAPP_URLand opens in a new tab withrel="noopener noreferrer".Validation
tsc --noEmit: clean.eslint: clean on all touched files (the one pre-existingworker/src/index.tslint error is unrelated).vitest: 13/13 pass (12 prior + 1 new).vite build: clean.Deployment notes
The worker schedule additions (
date,start,end,timezone,eventStart,eventEnd) need acd worker && npm run deploybefore the app's/schedulepage can rely on them. The app falls back to parsing thetimestring when those fields are absent, so the rollout order doesn't matter — the app works against an un-redeployed worker, just less optimally.