{"id":49875430,"url":"https://github.com/jeetbhow/dialnode","last_synced_at":"2026-05-15T12:03:30.899Z","repository":{"id":308461249,"uuid":"1031929605","full_name":"jeetbhow/dialnode","owner":"jeetbhow","description":"An open-source, graph-based dialogue editor built for game devs.","archived":false,"fork":false,"pushed_at":"2025-12-05T09:26:36.000Z","size":20961,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-08T18:24:14.104Z","etag":null,"topics":["dialogue","editor","godot","graph-based","videogame"],"latest_commit_sha":null,"homepage":"","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeetbhow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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":"2025-08-04T14:43:53.000Z","updated_at":"2025-12-05T09:26:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1ce4af4-1b74-4255-b5a0-ea9bfde5e5a4","html_url":"https://github.com/jeetbhow/dialnode","commit_stats":null,"previous_names":["jeetbhow/dialnode"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jeetbhow/dialnode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeetbhow%2Fdialnode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeetbhow%2Fdialnode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeetbhow%2Fdialnode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeetbhow%2Fdialnode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeetbhow","download_url":"https://codeload.github.com/jeetbhow/dialnode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeetbhow%2Fdialnode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33066132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dialogue","editor","godot","graph-based","videogame"],"created_at":"2026-05-15T12:03:28.066Z","updated_at":"2026-05-15T12:03:30.890Z","avatar_url":"https://github.com/jeetbhow.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDialnode\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eAn open-source, graph-based dialogue editor built for indie game developers.\u003c/strong\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cem\u003eCurrently in proof-of-concept stage.\u003c/em\u003e\u003c/p\u003e\n\n![Example](./images/example.gif)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/jeetbhow/dialnode/releases\"\u003eGet the pre-release version\u003c/a\u003e\n\u003c/p\u003e\n\n\n**Note: This repo is deprecated. I'm currently in the process of migrating this to Tauri, which offers superior memory efficiency, performance, and binary size.**\n\n## What problem does this solve?\n\n While working on my own indie game, I found that managing complex, branching dialogue with skill checks in traditional text files was a nightmare. It was difficult to visualize the flow of conversation, track different paths, and ensure all branches connected correctly.\n\nTo solve this, I created Dialnode: a visual, graph-based editor designed to make dialogue creation intuitive and efficient. Instead of getting lost in lines of code or tangled scripts, you can build your conversations visually, node by node, just like a flowchart.\n\n## What is this not?\nDialnode is not:\n- A plugin for a game engine\n- A dialogue system for a game engine\n\nInstead, it exports a file (JSON, TOML, YAML, etc.) that implements a specification. You will then build your game's dialogue system around that specification. This will typically involve parsing the file and then converting it into some internal representation that your game can understand. \n\nThis is an example of the JSON file produced by this program: \n```json\n[\n  {\n    \"id\": \"35ccc1a7-7203-4bf2-91aa-ccb37dd16809\",\n    \"type\": \"start\",\n    \"next\": \"6eef3c3e-84e7-4a08-b8a3-50219c45957f\"\n  },\n  {\n    \"id\": \"6eef3c3e-84e7-4a08-b8a3-50219c45957f\",\n    \"type\": \"text\",\n    \"text\": \"What's your favourite color? \",\n    \"speaker\": \"Jeet\",\n    \"next\": \"9256b0a2-f87e-4f11-b702-9e5e1eac547e\"\n  },\n  {\n    \"id\": \"9256b0a2-f87e-4f11-b702-9e5e1eac547e\",\n    \"type\": \"branchContainer\",\n    \"branches\": [\n      \"175250a8-2783-4792-9952-35c5c7cbf8b1\",\n      \"b1a367cd-1ddd-4678-a0ac-7198323305d5\"\n    ]\n  },\n  {\n    \"id\": \"175250a8-2783-4792-9952-35c5c7cbf8b1\",\n    \"parentId\": \"9256b0a2-f87e-4f11-b702-9e5e1eac547e\",\n    \"type\": \"branch\",\n    \"text\": \"Blue\",\n    \"next\": \"2d8289c9-9570-49ca-9d72-d4983e8bf132\"\n  },\n  {\n    \"id\": \"b1a367cd-1ddd-4678-a0ac-7198323305d5\",\n    \"parentId\": \"9256b0a2-f87e-4f11-b702-9e5e1eac547e\",\n    \"type\": \"branch\",\n    \"text\": \"Red\",\n    \"next\": \"603462cd-c28e-4005-b0c1-41228e693c52\"\n  },\n  {\n    \"id\": \"2d8289c9-9570-49ca-9d72-d4983e8bf132\",\n    \"type\": \"text\",\n    \"text\": \"Cool, I'm a big fan of red as well.\",\n    \"speaker\": \"Jeet\",\n    \"next\": \"5cd0c026-cbec-43e4-b634-c3f15c2974d9\"\n  },\n  {\n    \"id\": \"603462cd-c28e-4005-b0c1-41228e693c52\",\n    \"type\": \"text\",\n    \"text\": \"That color sucks.\",\n    \"speaker\": \"Jeet\",\n    \"next\": \"5cd0c026-cbec-43e4-b634-c3f15c2974d9\"\n  },\n  {\n    \"id\": \"5cd0c026-cbec-43e4-b634-c3f15c2974d9\",\n    \"type\": \"end\"\n  }\n]\n```\n\nWhen parsing this file in your game, you should use the `type` property to implement different behaviour. You should use the `next` property of a node to navigate to the next node in the dialogue. \n\n## Features\n- Visual graph-based editor for building complex branching video-game dialogues\n- Repository manager for storing your dialogues, portraits, speakers, and skills associated with a particular project all in one folder\n- Explorer on the sidebar to organize your dialogues into folders and view them\n- Export to JSON for use in a game engine (portraits only work with Godot for now)\n\n\n## Technologies Used\n- [Svelte](https://svelte.dev/) – UI framework\n- [Electron](https://www.electronjs.org/) – For building cross-platform desktop apps\n- [Node.js](https://nodejs.org/) – Runtime environment\n- [TypeScript](https://www.typescriptlang.org/) – Type-safe code\n- [SQLite](https://www.sqlite.org/) – Database\n\n## Building the project\nThis section is for users that want to build the project on their own. If you just want to use the app, you can download it from the [releases page](https://github.com/jeetbhow/dialnode/releases).\n\n### Recommended IDE Setup\n\n[VSCode](https://code.visualstudio.com/) + [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) + [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode)\n\n### Project Setup\n\n#### Install\n\n```bash\nnpm install\n```\n\n#### Development\n\n```bash\nnpm run dev\n```\n\n#### Build\n\n```bash\n# For Windows\nnpm run build:win\n\n# For macOS\nnpm run build:mac\n\n# For Linux\nnpm run build:linux\n```\n\n## License\nThis project is licensed under the MIT License – see the [LICENSE](LICENSE) file for details.\n\n## Author\nCreated by [Jeet Bhowmik](https://github.com/jeetbhow).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeetbhow%2Fdialnode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeetbhow%2Fdialnode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeetbhow%2Fdialnode/lists"}