How to run Meshly locally, build it, and contribute. For what Meshly is, see the README.
- Node.js 18+
- npm
npm install| Command | What it does |
|---|---|
npm run dev |
Start the Vite dev server with hot reload |
npm run build |
Type-check and build for production to dist |
npm run preview |
Serve the production build locally |
npm run lint |
Run ESLint over the project |
- React 18 + TypeScript (strict mode)
- Vite for dev/build
- Tailwind CSS for styling (design tokens in
tailwind.config.js) - lucide-react for icons
- html-to-image for PNG export
src/
lib/gradientEngine.ts OKLab mesh renderer (buildMesh, base tone, bleed, blur)
lib/serialize.ts share-link + autosave codec (schema v2)
lib/storage.ts localStorage autosave
lib/presets.ts restrained preset library
hooks/ useHistory (undo/redo), useAppShortcuts, useNotifications
components/ Header, GradientCanvas, Sidebar, ExportModal, HelpModal
components/sidebar/ Mesh / Grade / Frame / Motion tab panels
types/gradient.ts shared state types
Contributions are welcome. Please open an issue to discuss significant changes
before submitting a pull request. Keep changes focused, run npm run lint
before opening a PR, and match the existing code style (React function
components, TypeScript strict mode, Tailwind CSS).