{"id":13602455,"url":"https://github.com/thesephist/draw","last_synced_at":"2025-05-12T08:31:29.599Z","repository":{"id":57992996,"uuid":"264067942","full_name":"thesephist/draw","owner":"thesephist","description":"Real-time collaborative whiteboard on the web","archived":false,"fork":false,"pushed_at":"2020-05-16T18:38:29.000Z","size":85,"stargazers_count":128,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-07T05:39:25.564Z","etag":null,"topics":["go","torus-dom","websockets","whiteboard"],"latest_commit_sha":null,"homepage":"https://draw.linus.zone","language":"JavaScript","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/thesephist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-15T01:40:39.000Z","updated_at":"2024-11-07T03:38:43.000Z","dependencies_parsed_at":"2022-09-13T21:40:41.403Z","dependency_job_id":null,"html_url":"https://github.com/thesephist/draw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesephist%2Fdraw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesephist%2Fdraw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesephist%2Fdraw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesephist%2Fdraw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thesephist","download_url":"https://codeload.github.com/thesephist/draw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225130753,"owners_count":17425506,"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","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":["go","torus-dom","websockets","whiteboard"],"created_at":"2024-08-01T18:01:23.937Z","updated_at":"2024-11-18T04:46:52.449Z","avatar_url":"https://github.com/thesephist.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# draw 🖌\n\ndraw is a tiny in-memory collaborative whiteboard for the web. draw syncs pen strokes in real-time across all users in the room, as well as managing presence in real-time between all active users to show when users join and leave. I wouldn't call it production-ready, but it works well enough for my personal use cases of doodling with friends, and fits in a few megabytes of RAM.\n\nI usually use it to share drawings and doodle together with friends on iPads with the Apple Pencil, and works quite well even on slow connections and devices.\n\nIt's built on...\n\n- [Torus](https://github.com/thesephist/torus) as a light frontend UI library\n- [blocks.css](https://thesephist.github.io/blocks.css/) to add some spice to the UI design\n- [Gorilla WebSocket](https://github.com/gorilla/websocket) for initiating and managing WebSocket connections, and as a simple web server\n\n![draw screenshot](draw.jpg)\n\n## Deploy\n\nDeployment is managed by systemd. Copy the `draw.service` file to `/etc/systemd/system/draw.service` and update:\n\n- replace `draw-user` with your Linux user\n- replace `/home/draw-user/draw` with your working directory (path to repository or a copy of `static/`)\n\nThen start draw as a service:\n\n```sh\nsystemctl daemon-reload # reload systemd script\nsystemctl start draw   # start draw server as a service\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesephist%2Fdraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthesephist%2Fdraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthesephist%2Fdraw/lists"}