Thanks for wanting to make Markhand better. Markhand is a fully client-side drawing studio, so most contributions are small, focused, and easy to test in a browser.
-
Fork the repository and clone your fork:
git clone https://github.com/<your-username>/markhand.git cd markhand
-
Install dependencies:
npm install
-
Start the dev server:
npm run dev
The app runs at
http://localhost:5173.
- Run
npm run lintand fix anything it reports. - Run
npm run buildand make sure it passes. Note this runstsc -bfirst, so TypeScript errors fail the build. - Test your change with a real drawing: draw with each tool you touched, try the eraser, and switch canvas themes to check recoloring.
- If your change touches export code, export a PNG and an SVG and open both.
- Bug fixes with clear reproduction steps (tell us the input device: mouse, touch, or pen)
- Accessibility improvements (keyboard navigation, focus states, screen reader labels)
- New canvas themes (see "Adding a New Theme" in the README, it is a two-step process)
- Export improvements (formats, fidelity, print layout)
- Performance work on the drawing or erasing path
- Documentation fixes
For larger changes (new tools, changes to the stroke/erase model, new dependencies), open an issue first so we can agree on the direction before you build it.
src/components/canvas/- drawing canvas and the bottom toolbarsrc/components/controls/- pen and theme controlssrc/components/exports/- export modal (PNG/SVG/copy/print)src/components/gallery/- My Drawings gallery and thumbnailssrc/components/landing/- the landing pagesrc/components/layout/- share, instructions, product toursrc/components/ui/- shared UI pieces (Button, ColorPicker, Slider)src/hooks/-useDraw(drawing/erasing) and keyboard shortcutssrc/lib/- smoothing, themes, storage, sharing, cursorssrc/types/- shared TypeScript definitions
Deeper architecture notes live in the README under "Project Structure" and "Directory Overview".
Keep them short and prefixed when it fits:
fix:bug fixesfeat:new featuresperf:performance workrefactor:code changes with no behavior changedocs:documentation onlystyle:styling only
- TypeScript with React function components and hooks
- Tailwind CSS v4 utility classes
- Match the formatting of the file you are editing
- Do not add new npm dependencies without asking first
Use the GitHub issue templates. Include the browser you used, your input device (mouse, touch, pen), and steps to reproduce.
By contributing, you agree that your contributions are licensed under the MIT License, the same license that covers the project.