This repo is a single-product React 19 + Vite 8 statically-prerendered content site ("From Dust to Zenith"). It uses npm (see package-lock.json). Standard scripts live in package.json (dev, build, lint, preview); prefer those.
- Dependencies are refreshed automatically on startup via the update script (
npm install). No extra system dependencies are required. - Dev server:
npm run devserves the full content site on port5173. All page content (stories, industries, lessons, about) comes from static local data insrc/data/, so the site works with zero backend. - Non-obvious gotcha:
npm run dev(Vite) does NOT serve the/api/*endpoints, andvite.config.jshas no proxy. The/api/*handlers are Vercel serverless functions; to exercise newsletter (api/subscribe.js), auth (api/auth/*), or dynamic OG images (api/og.js) locally you must run them under the Vercel dev runtime (e.g.npx vercel dev, since thevercelCLI is not a dependency). - Those backend features additionally require secrets that are not present by default:
JWT_SECRETand a Vercel Blob tokenBLOB_READ_WRITE_TOKEN(both required for auth/newsletter), plus optionalRESEND_API_KEY(email sending is silently skipped if unset). Without these, only the content site can be exercised end-to-end. npm run builddoes a client build + SSR build + static prerender of every route (seescripts/prerender.js) + sitemap/RSS generation. It is fast and requires no secrets.npm run lintruns Oxlint.