Skip to content

Fix auth, error handling, and link/UI bugs across app - #20

Closed
abayomicornelius wants to merge 89 commits into
StellarTickets:mainfrom
abayomicornelius:fix/issue-batch
Closed

Fix auth, error handling, and link/UI bugs across app#20
abayomicornelius wants to merge 89 commits into
StellarTickets:mainfrom
abayomicornelius:fix/issue-batch

Conversation

@abayomicornelius

Copy link
Copy Markdown
Contributor

Summary

Fixes a batch of 12 issues covering auth, error handling, and link/UI bugs across the app.

Closes #8
Closes #9
Closes #10
Closes #11
Closes #12
Closes #13
Closes #14
Closes #15
Closes #16
Closes #17
Closes #18
Closes #19

Next.js frontend for StellarTickets. Every on-chain action goes
through a non-custodial build-XDR -> Freighter-sign -> submit-XDR
flow against the backend, never holding a user's private key.
The previous look (flat single-accent dark theme, checkmark-in-ticket
mark, thin two-section landing page) was a rerun of the same template
used on the last project. Reworks:

- New mark: a proper ticket-stub silhouette with tear-line notches and
  a four-point "stellar" sparkle, gradient-filled.
- New palette: violet -> magenta -> amber sunset gradient over a
  near-black base, replacing the flat single-accent look.
- New type pairing: Space Grotesk for headings, Inter for body.
- Landing page rebuilt with real depth: a ticket mockup visual, a
  stats strip, a 4-step on-chain lifecycle timeline, industry icons,
  a security highlights section, and an FAQ.
- Added /about and /security as real content pages (not stubs), and
  restructured the footer to link to them.
Studied the reference site's shipped Tailwind markup directly (it's a
Next.js app, so the utility classes are readable in the served HTML)
and adapted its strongest patterns with our own content and gradient:

- Seamless CSS-only marquee rows (industries, then our stack) with an
  edge fade-mask, matching their tech-stack ticker.
- A pill CTA button whose gradient fill wipes in on hover.
- A mix-blend-mode cursor dot that layers on top of the real cursor.
- A canvas particle-network background in the hero.
- An "Attendees / Organizers" pill tab switcher with a sliding active
  indicator, directly analogous to their Contributor/Maintainer toggle.
- A giant viewport-relative statement section and a full-bleed
  gradient CTA block, mirroring their scale-driven section breaks.

All copy and data stayed ours; only the layout/interaction patterns
and Tailwind technique were borrowed.
Replace the ticket-stub icon with a simpler, more legible mark: a
rounded-square badge in the brand gradient with a bold "ST" wordmark.
Built from inline styles (not Tailwind classes) so it renders
identically in the browser and through icon.tsx/opengraph-image.tsx,
which only understand inline styles.

Also synced --gradient-sunset's angle to match the logo's
BRAND_GRADIENT exactly (same colors and stops already, angle was
115deg vs 135deg) so the mark and the rest of the site's gradient
usage are pixel-identical, not just close.
Logo: solid gradient-filled ticket-stub shape (not just an outline)
with a dashed tear-line, a sparkle accent, and bold italic "ST"
lettering across the body — closer to the reference the user shared.
The shape is SVG (paths render fine through satori) but the "ST" text
is a plain positioned HTML span layered on top, since satori doesn't
support SVG <text> — confirmed by a failed build before this fix.

Copy: removed "Powered by Stellar" and "non-custodial" as marketing
taglines/headline claims (hero pill, footer, page metadata, OG image,
stats strip, a feature card on /about, and a FAQ entry), replacing
each with more specific, less generic phrasing. Left the /security
page's substantive technical explanation of the signing flow alone —
that's documentation, not a marketing hook.
presidojay1 and others added 26 commits August 3, 2026 06:35
- --background is now #000000 instead of a purple-tinted near-black,
  and the radial-gradient glow overlays on body/opengraph-image are
  gone so the page reads as genuinely black, not a dark tint.
- Removed CustomCursor (the mix-blend-mode dot that followed the
  pointer and grew over interactive elements) from the layout and
  deleted the component; native cursor behavior only now.
Keep the industries marquee; drop the second row listing the
tech stack (Stellar, Soroban, Freighter, Next.js, etc.).
- Detached from the viewport edge (top-4, px-4 container) with its
  own rounded-full border, background, and shadow, instead of the
  previous edge-to-edge bar with a bottom border.
- Get started moved to a pill button at the end of the link row to
  match the capsule shape.
- Tightened responsive breakpoints (Dashboard/My tickets now hide
  below sm) since the pill has less horizontal room than a full bar.
Previously, links below the sm/md breakpoints just vanished (About,
Security, Dashboard, My tickets had no mobile access at all). Now:

- A real hamburger menu (Menu/X icon) appears below md, opening a
  slide-down panel with every link plus auth actions — nothing is
  unreachable on a phone anymore.
- Active-route highlighting: the current page's link is bold with a
  small gradient underline (desktop) or bold text (mobile panel).
- Scroll-aware chrome: the pill's border/background/shadow intensify
  once the page is scrolled, a subtle but standard "advanced navbar"
  touch.
- Mobile menu locks body scroll while open and closes automatically
  on navigation, closing icon toggle included.
The old pages were a bare heading + unstyled inputs floating on the
page background. Now:

- AuthLayout: a two-column split on desktop (brand panel with the
  logo, headline, and three concrete value-prop bullets on the left;
  the form in a bordered, shadowed card on the right), single-column
  on mobile with just the card.
- TextField: shared input component with a leading icon (Mail/Lock/
  User), consistent border/focus-ring styling, and an optional hint
  line — used identically on both pages instead of ad hoc <input>s.
- Replaced the generic "Something went wrong. Please try again."
  fallback with "Could not reach the server. Is the backend running?"
  — the actual failure mode hit repeatedly in testing (backend wasn't
  running) now says so instead of a vague catch-all.
- Skip the doomed /users/me request for anonymous visitors (StellarTickets#19)
- Show an error when staff try to check in/revoke without a wallet (StellarTickets#18)
- Add About and Security pages to the sitemap (StellarTickets#17)
- Render "General admission" instead of a dangling "Seat" label (StellarTickets#16)
- Validate ticket type price/quantity as numeric input (StellarTickets#15)
- Add target/rel to the Security page contract link (StellarTickets#14)
- Add target/rel to About page repo links (StellarTickets#13)
- Open external footer links in a new tab with rel set (StellarTickets#12)
- Use next/link for internal homepage CTA links (StellarTickets#11)
- Show an error instead of a blank screen on org fetch failure (StellarTickets#10)
- Handle errors on the resale listings fetch (StellarTickets#9)
- Clear loading state and show an error if org list fetch fails (StellarTickets#8)
@netlify

netlify Bot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for stellartickets ready!

Name Link
🔨 Latest commit 2488a2c
🔍 Latest deploy log https://app.netlify.com/projects/stellartickets/deploys/6a869e95dc1cab000859faa9
😎 Deploy Preview https://deploy-preview-20--stellartickets.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment