Nidora static website in React, built with Vite.
- Node.js
^20.19.0 || >=22.12.0— enforced by theenginesfield in package.json; CI runs Node 22 - npm
npm install
npm run devOpen http://localhost:3000 to view the app. Changes are applied instantly via hot module replacement.
| Script | Description |
|---|---|
npm run dev (or npm start) |
Start the Vite dev server on port 3000 with HMR. |
npm run build |
Production build into build/ (minified, hashed filenames). |
npm run preview |
Serve the contents of build/ locally to verify a production build. |
npm run type-check |
Type-check the app and tooling configs with tsc --build. |
npm run lint |
Lint with ESLint (flat config, typescript-eslint + react-hooks). |
- index.html — Vite entry HTML (SEO/OG tags, structured data, theme bootstrap script)
- src/index.tsx — React entry point
- src/components/ — page sections and shared components
- src/i18n/ —
en/trtranslations and language context - src/styles/ — global stylesheet
- src/assets/ — images imported from code (hashed at build time)
- public/ — files copied verbatim to the site root (
favicon.ico,manifest.json,robots.txt,sitemap.xml,logo.png,videos/bg.mp4)
Build and test configuration lives in vite.config.ts. Static assets that must keep a stable URL belong in public/ and are referenced with an absolute path (e.g. /logo.png); anything imported from src/ is fingerprinted by the bundler.
Pushing to main runs .github/workflows/workflow.yml, which type-checks, lints, builds, and deploys build/ to S3 with a CloudFront invalidation.