{"id":15032478,"url":"https://github.com/lhrun/paint-board","last_synced_at":"2025-10-06T02:13:58.590Z","repository":{"id":64063329,"uuid":"534574923","full_name":"LHRUN/paint-board","owner":"LHRUN","description":"🎨  A powerful multi-end drawing board that brings together a lot of creative brushes to experience a whole new range of drawing effects!","archived":false,"fork":false,"pushed_at":"2025-09-21T14:20:44.000Z","size":5061,"stargazers_count":2463,"open_issues_count":1,"forks_count":279,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-09-21T16:23:03.183Z","etag":null,"topics":["canvas","canvas-game","drawing","drawing-board","drawingboard","javascript","sketch","whiteboard"],"latest_commit_sha":null,"homepage":"https://songlh.top/paint-board/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LHRUN.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-09T09:12:29.000Z","updated_at":"2025-09-21T14:18:49.000Z","dependencies_parsed_at":"2024-01-01T16:22:38.178Z","dependency_job_id":"626850a9-8919-4f88-82c1-ef1d0fae8128","html_url":"https://github.com/LHRUN/paint-board","commit_stats":{"total_commits":172,"total_committers":2,"mean_commits":86.0,"dds":"0.029069767441860517","last_synced_commit":"2be6694e69984061ec5b011ceef00fea2b5c544a"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/LHRUN/paint-board","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LHRUN%2Fpaint-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LHRUN%2Fpaint-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LHRUN%2Fpaint-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LHRUN%2Fpaint-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LHRUN","download_url":"https://codeload.github.com/LHRUN/paint-board/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LHRUN%2Fpaint-board/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547821,"owners_count":26004775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvas","canvas-game","drawing","drawing-board","drawingboard","javascript","sketch","whiteboard"],"created_at":"2024-09-24T20:18:31.470Z","updated_at":"2025-10-06T02:13:58.568Z","avatar_url":"https://github.com/LHRUN.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"240\" src=\"https://raw.githubusercontent.com/LHRUN/file-store/main/paint-board/logo.png\" alt=\"logo\"/\u003e\n\u003c/div\u003e\n\n\u003ch4 align=\"center\"\u003e\n  A fun art drawing board that supports multi-end operation\n\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/LHRUN/paint-board/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/LHRUN/paint-board\" alt=\"Stars Badge\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/LHRUN/paint-board\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/LHRUN/paint-board\" alt=\"Forks Badge\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/LHRUN/paint-board/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/LHRUN/paint-board\" alt=\"License Badge\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/LHRUN/paint-board\"\u003e\u003cimg src=\"https://img.shields.io/badge/Made%20with-React%20%26%20Vite-pink\" alt=\"Next\u0026Prisma\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/LHRUN/paint-board/releases\"\u003e\u003cimg alt=\"release\" src=\"https://img.shields.io/github/package-json/v/LHRUN/paint-board\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eEnglish\u003c/strong\u003e / \n  \u003ca href=\"./readmes/README.zh_cn.md\"\u003e中文(简体)\u003c/a\u003e / \n  \u003ca href=\"./readmes/README.zh_tw.md\"\u003e中文(繁体)\u003c/a\u003e / \n  \u003ca href=\"./readmes/README.ja.md\"\u003e日本語\u003c/a\u003e / \n  \u003ca href=\"./readmes/README.ko.md\"\u003e한국어\u003c/a\u003e\n\u003c/p\u003e\n\n\n## Preview\nLink: [https://songlh.top/paint-board/](https://songlh.top/paint-board/)\n\n\u003cdiv align=\"center\" style=\"width: 100%;\"\u003e\n  \u003cimg style=\"width: 100%\" src=\"https://raw.githubusercontent.com/LHRUN/file-store/main/paint-board/preview_device.png\" alt=\"preview\"/\u003e\n\u003c/div\u003e\n\n## Completed Features:\n+ Drawing Mode\n  - FreeStyle\n    - Provides 12 different styles of brushes, including Basic Brush, Rainbow Brush, Multi-Shape Brush, Multi-Material Brush, Pixel Brush, Multi-Color Brush, Text Brush, Multi-Line Connection Brush, Reticulate Brush, Multi-Point Connection Brush, Wiggle Brush, Thorn Brush. Satisfy the diversified drawing.\n    - All brushes support color and brush width configuration, in addition to multi-shape, multi-material, multi-color and other brushes support custom configuration.\n  - ShapeDraw\n    - A variety of common shapes are provided for drawing, with support for multi-point segments and arrows. The shapes support border and fill styles.\n+ Eraser Mode\n  - Eraser mode linearly erases all content and supports linear width configuration.\n+ Select Mode\n  - In the selection mode, you can frame the drawing content by clicking on it. The click handle supports dragging, zooming and rotating operations, providing flexible editing.\n  - Selecting images supports multiple filter configurations.\n  - Supports font and style settings when selecting text.\n  - Layer settings are supported for all drawings, including Move Layer Up, Move Layer Down, Move to Top, and Move to Bottom.\n  - All drawings support transparency configurations.\n  - All drawings support eraser or not erasable configuration.\n+ Drawing Board Configuration\n  - The drawing board supports background configuration, including colour, background image, and transparency.\n  - The drawing board supports customized width and height configurations.\n  - Supports painting caching, enabling caching will improve painting performance in the presence of large amounts of painted content, while disabling caching will improve canvas sharpness.\n  - Added Guide Line drawing feature.\n+ Multifunction Menu\n  - The bottom left button shows the current zoom ratio in real time, click it to reset the zoom ratio.\n  - The list of buttons in the center, in order from left to right, are: Undo, Redo, Copy Current Selection, Delete Current Selection, Draw Text, Upload Image, Clear Drawing, Save as Image, and Open File List.\n    - Upload images with support for background remove, image segmentation. This function needs WebGPU support in your browser.\n    - Save as image supports custom configurations. Rotate, Scale, Crop\n  - PC:\n    - Hold down the Space key and click the left mouse button to move the canvas, scroll the mouse wheel to zoom the canvas.\n    - Press and hold the Backspace key to delete the selection.\n    - Press and hold Ctrl + V at the same time to paste the clipboard image.\n  - Mobile:\n    - Supports dragging and zooming the canvas after a two-finger press.\n+ Multifile Configuration\n  - Support multiple canvas switching, each canvas can be customized title, add, delete, and provide upload and download.\n+ i18n\n  - Support 中文(简体), 中文(繁体), English, 日本語, 한국어.\n+ PWA support, offline access.\n\n## Future Plans\n+ Multi-platform authentication login and data synchronization\n+ AI Enhanced Drawing\n\n## V1.3.0 Video Demo\n\n\u003ca href=\"https://www.bilibili.com/video/BV1dJ4m1h7vg\"\u003e\n  \u003cimg width=\"500\" src=\"https://raw.githubusercontent.com/LHRUN/file-store/main/paint-board/v1.3.0_demo_bilibili.png\"/\u003e\n\u003c/a\u003e\n\n## Quick Start\n```\ngit clone https://github.com/LHRUN/paint-board.git\npnpm install\npnpm dev\n```\n\n### Docker Support\n\n1. Build a Docker image with the name `paint-board`.\n```sh\ndocker build -t paint-board .\n```\n\n2. Start a docker container.\n```sh\ndocker run -d -p 8080:80 --name paint-board paint-board\n```\n\n3. Accessed by opening `http://localhost:8080/paint-board/` in your browser.\n\n## Browser support\n\nWe recommend using the latest version of Google Chrome, the following is the minimum version support\n\n| [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png\" alt=\" Edge\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eEdge | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png\" alt=\"Firefox\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eFirefox | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png\" alt=\"Chrome\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eChrome | [\u003cimg src=\"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png\" alt=\"Safari\" width=\"24px\" height=\"24px\" /\u003e](http://godban.github.io/browsers-support-badges/)\u003c/br\u003eSafari |\n| :--: | :--: | :--: | :--: |\n| 80+ | 80+ | 70+ | 13+ |\n\n## Contact me\n\nIf you have any suggestions or good ideas, welcome to contact me at any time!\n\n+ Email: song.lhlh@gmail.com\n+ Telegram: https://t.me/longhao_song\n+ Twiter: https://twitter.com/Song_LongHao\n+ WeChat:\n\u003cimg style=\"width: 300px\" src=\"https://github.com/user-attachments/assets/719265e1-dbfa-4760-9482-aa0823b72df8\" alt=\"wechat\"/\u003e\n\n\n## Contributing\n\nI'm glad you're interested in contributing to PAINT BOARD. If you find a bug and want to fix it, please submit it in an Issue first. For new feature additions, please contact us in Discussions, or directly through the contact details provided above, and read the Contribution Guidelines below before contributing. Thank you for your support!\n\n[Contribution Guidelines](./CONTRIBUTING.md)\n\n## Document\n+ After refactoring with Fabric.js\n  - [Exploring the Canvas Series: combined with Transformers.js to achieve intelligent image processing](https://songlh.top/2024/11/23/Exploring-the-Canvas-Series-combined-with-Transformers-js-to-achieve-intelligent-image-processing/)\n  - [Exploring the Canvas Series: The Art of Time Reversal in the Canvas](https://songlh.top/2024/01/10/Exploring-the-Canvas-Series-The-Art-of-Time-Reversal-in-the-Canvas/)\n  - [Exploring the Canvas Series: Creative Brushes Part 1](https://songlh.top/2024/04/14/Exploring-the-Canvas-Series-Creative-Brushes-Part-1/)\n  - [Exploring the Canvas Series: Creative Brushes Part 2](https://songlh.top/2024/04/15/Exploring-the-Canvas-Series-Creative-Brushes-Part-2/)\n  - [Exploring the Canvas Series: Creative Brushes Part 3](https://songlh.top/2024/04/16/Exploring-the-Canvas-Series-Creative-Brushes-Part-3/)\n  - writing...\n+ Before refactoring with Fabric.js\n  - [Canvas Artistry：Mastering Selection, Dragging, and Scaling](https://songlh.top/2023/11/30/Canvas-Artistry1)\n  - [Canvas Artistry：Drawing magic with multiple effects](https://songlh.top/2023/12/01/Canvas-Artistry2)\n\n## License\n\nMIT License. See the [LICENSE](https://github.com/LHRUN/paint-board/blob/main/LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flhrun%2Fpaint-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flhrun%2Fpaint-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flhrun%2Fpaint-board/lists"}