A cinematic, responsive landing page for the Fischer Product Lab product portfolio. It preserves the existing vinext/Next.js project shape for Sites while providing a native Next.js build for Vercel.
npm install
npm run devUse npm run build for the Sites production build, npm run build:vercel for the Vercel production build, and npm test for the rendered-page checks.
app/products.tsis the typed source of truth for product names, descriptions, statuses, accents, landmarks, and live destinations. Add or replace products there first.app/page.tsxcontains the reusable landmark, monument, annotation, product-index, interface-fragment, and section components. Truthful interface metrics sampled from each live demo are grouped in themetricsmap near the top.app/globals.csscontains the landscape, monument drawing, motion states, desktop-to-mobile recomposition, focus treatments, and reduced-motion fallback.public/og.pngis the social preview card.public/landscape-hero.webpandpublic/landscape-hero-mobile.webpare the responsive cinematic background plates; the CSS landscape remains visible as their fallback.
- Founder: replace the portrait placeholder and founder note in the
buildersection ofapp/page.tsx. For a real portrait, put an optimized WebP or AVIF inpublic/and replacebuilder-portraitwithnext/image. - Contact: replace both
mailto:hello@fischerproductlab.comvalues inapp/page.tsxwith the confirmed email or contact destination. - Social links: add confirmed profiles to the
footer-metablock; no unverified profiles are shipped by default. - Product screens: update the
metricsmap with verified live values or replace eachInterfaceFragmentwith optimized local captures. Keep the fragments inside the monuments and provide meaningful alternative text if a capture conveys new information. - Future products: add the typed product entry, a
metricstuple, a monument treatment inMonument, and its corresponding accent/position rules inapp/globals.css.
The entrance is stored only for the current browser session. Reduced-motion visitors bypass it automatically and receive the complete static composition.