Static landing site for the Monynha infrastructure hub. Built with Vite, React and Tailwind CSS.
To keep immutable data consistent and shared across the UI, the application layer uses the Flyweight pattern. This reduces memory duplication and keeps architectural intent explicit for both humans and automation tooling. Flyweights live in src/flyweights/ and provide factory-style APIs that cache frozen instances for reuse.
The UI previously duplicated icons, language codes, and repeated Tailwind classes across components. Flyweights centralize these intrinsic values so that UI components only supply extrinsic state (like per-video labels, counters, or layout variants).
- Use
getIcon(name)to render lucide icons instead of importing fromlucide-react. - Use
getLanguage(code)andgetSupportedLanguageCodes()instead of hardcoding language strings. - Use
getStyle(key)for shared Tailwind class groups, then compose withcn(...). - Use the category and role factories to cache immutable metadata shared across the UI.
See the docs in docs/flyweights/ for design rationale and extension guidance.
npm install
npm run devThe dev server runs at http://localhost:5173 with hot reload enabled.
npm run buildA production-ready static bundle is generated in the dist/ directory.
npm run previewServes the contents of dist/ locally to verify the static build.
Upload the files in dist/ to any static hosting provider such as Netlify, Vercel, or GitHub Pages. No server-side rendering is required.
MIT