feat: westside landing page prototype -- strip tryouts, fix practice count (#75) #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "5-feat-westside-landing-page-prototype-str"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Builds the
westside/subdirectory in svelte-playground with cleaned content from westside-app#75. Strips all stale tryout content (banner, details section, Stripe payment links, nav link), corrects practice count from 3 to 2, and updates CTAs to general "Contact Us to Join" messaging across all pages.Changes
westside/index.html-- Vite entry point linking westside style.css, mounts App.sveltewestside/App.svelte-- Main landing page: no tryout banner/section/Stripe links, hero CTA is mailto, "How to Join" replaces "How It Works", FAQ correctedwestside/Nav.svelte-- Shared nav component with no Tryouts link, Svelte 5 reactive mobile togglewestside/Footer.svelte-- Shared footer componentwestside/style.css-- Copy of west-side-basketball design system (805 lines, unchanged per issue spec)westside/staff.html-- Staff page with fixed nav (no Tryouts), bottom CTA changed to "Join Westside" with mailtowestside/sponsors.html-- Sponsors page with fixed nav (no Tryouts)westside/success.html-- Repurposed from tryout confirmation to general "Thanks for reaching out" pagepublic/westside/assets/images/-- Coach photos, logo, favicons, OG image for static servingvite.config.js-- Added westside + 3 static HTML pages as rollup inputsindex.html-- Added Westside Landing card to hub Projects sectionTest Plan
npm run buildsucceeds with no errors (verified)Review Checklist
Related
Self-Review Findings
Checked
npm run buildpasses cleanly, zero warnings.public/westside/assets/for Vite static handling, verified in dist output.$state()runes,onclickhandlers,class:is-opendirective -- proper Svelte 5 syntax.Fixed in review
5b8bf2e): Movedonclickfrom non-interactive<ul>to individual<a>elements. Removed unusedonMountimport and dead code. Build now produces zero Svelte warnings.Noted (non-blocking)
style.cssretains.tryout-bannerCSS classes (unused). Issue spec explicitly says "CSS and JavaScript files require no modifications" so this is intentional.VERDICT: APPROVE
PR #6 Review
DOMAIN REVIEW
Tech stack: Svelte 5 + Vite (static site, no SvelteKit). HTML pages with inline JS for mobile nav toggle. CSS design system with custom properties. This is a playground prototype -- not a production SvelteKit app.
Svelte/Component architecture:
App.sveltecorrectly uses Svelte 5$state()rune viaNav.sveltefor reactive mobile menu toggle. Clean component decomposition: Nav, Footer, and App are separate Svelte components for the index page.staff.html,sponsors.html,success.htmlare plain HTML (not Svelte) -- appropriate for a multi-page static build via Vite rollup inputs.westside/index.htmluses the correct Svelte 5mount()API (not the deprecatednew App()pattern).Accessibility:
aria-label="Main navigation",aria-expanded, andaria-controlson the hamburger toggle -- good.<img>usesalt=""(decorative) since the brand name text follows it -- correct pattern.alttext with name and role -- good.:focus-visiblestyling is defined in the CSS -- good.sr-onlyutility class is defined and available.Responsive design:
CSS quality:
--color-*,--space-*,--font-size-*).Content correctness (per issue #75 acceptance criteria):
success.htmlrepurposed from tryout confirmation to general "Thanks for Reaching Out" -- CORRECT.Performance:
loading="lazy") on staff photos that are below the fold. Not a blocker for a prototype.BLOCKERS
None.
This is a static HTML/CSS/Svelte playground prototype. There is no user input handling, no API calls, no authentication, no database access, and no server-side logic. The BLOCKER criteria do not apply:
NITS
Dead CSS:
.tryout-bannerclasses remain inwestside/style.css(lines defining.tryout-banner,.tryout-banner-date,.tryout-banner-location,.tryout-banner .btn). The issue spec sayscss/style.cssshould not be touched in the production repo, and the PR body says the CSS is "805 lines, unchanged per issue spec." This is consistent with the constraint, but when this prototype is promoted to production, the dead tryout CSS should be stripped. Not blocking for playground.DRY: Nav + Footer + mobile toggle script duplicated across 3 HTML pages.
staff.html,sponsors.html, andsuccess.htmleach contain identical nav markup, footer markup, and the same ~15-line mobile toggle IIFE. This is the expected pattern for plain HTML pages (no component system available outside Svelte), but worth noting for the promotion step -- the Svelte components (Nav.svelte,Footer.svelte) exist and should be used if these pages are ever converted to Svelte.Hub card description says "travel schedule" but no travel schedule page exists in this PR. The card reads: "Public site refresh -- cleaned content, staff page, travel schedule." Issue #77 (travel schedule) is separate future work. Minor copy inaccuracy in the hub index.
.tryout-banner + .heroCSS rule is dead code (no element with class.tryout-bannerexists in any page). Same category as nit #1.success.htmlhas<meta name="robots" content="noindex">-- good practice for a confirmation page. No issue, just noting it is correctly handled.SOP COMPLIANCE
5-feat-westside-landing-page-prototype-strreferences svelte-playground issue #5)#75in westside-app)## Relatedsection (has## Review Checklistinstead). The PR body does not reference a plan slug, which is acceptable since issue #75 states "Standalone -- no plan phase".envfiles committedPROCESS OBSERVATIONS
svelte-playgroundcorrectly references parent issue inwestside-app(#75). Issue #5 in svelte-playground tracks the local work.VERDICT: APPROVED