Welcome to the Dialogue Editor Tool, a comprehensive solution for creating and managing dialogue systems for various applications. This tool offers an intuitive interface for designing dialogue flows, managing participants, and customizing interactions.
Feel free to test out the released version of our Dialoguer Tool!
- Interactive Dialogue Canvas: Easily create and edit dialogue nodes in easy to understand graph mode.
- Participant Management: Add and categorize dialogue participants.
- Project Management: Create, load, and manage multiple projects.
- Customizable Styles: Tailor the look and feel with custom CSS.
- Auto-Save Functionality: Ensures your work is saved periodically to prevent data loss.
The project is organized in a way that separates components, hooks, and styles for better maintainability and scalability. Below is the structure of the project:
βββ πsrc
βββ πbase
βββ BaseNodesStyle.css
βββ BaseStyle.css
βββ ColorPalette.css
βββ ReactFlowOverride.css
βββ πcomponents
βββ DialogueCanvas.js
βββ πdialogueEdges
βββ baseEdge.js
βββ DialogueEditor.js
βββ πdialogueNodes
βββ answerNode.js
βββ baseNode.js
βββ closeDialogueAutomaticNode.js
βββ closeDialogueNode.js
βββ jumpToNode.js
βββ leadNode.js
βββ startNode.js
βββ DialogueParticipants.js
βββ πeditorComponents
βββ DialogueEditorCanvas.js
βββ DialogueEditorDetails.js
βββ DialogueEditorSettings.js
βββ DialogueEditorToolbar.js
βββ DialogueRow.js
βββ InfoModal.js
βββ ReportBug.js
βββ SpawnNewNode.js
βββ πgeneral
βββ DialogueParticipantsHeader.js
βββ DialogueParticipantsList.js
βββ EditCategoryItem.js
βββ EditParticipantItem.js
βββ ParticipantCategoriesHeader.js
βββ ParticipantCategoriesList.js
βββ LandingPage.js
βββ LoadProject.js
βββ MobileView.js
βββ NewProject.js
βββ NewProjectDetails.js
βββ πobjects
βββ Button.js
βββ Dropdown.js
βββ FileDrop.js
βββ Modal.js
βββ ReadOnlyText.js
βββ ScrollList.js
βββ ScrollListItem.js
βββ Slider.js
βββ Textblock.js
βββ TextInput.js
βββ Title.js
βββ ParticipantCategories.js
βββ πcomponentStyles
βββ DialogueCanvas.css
βββ DialogueEditor.css
βββ πdialogueNodes
βββ customNode.css
βββ DialogueParticipants.css
βββ πeditorComponentStyles
βββ DialogueEditorCanvas.css
βββ DialogueEditorDetails.css
βββ DialogueEditorSettings.css
βββ DialogueEditorToolbar.css
βββ πeditorObjects
βββ InfoModal.css
βββ ReportBug.css
βββ LandingPage.css
βββ LoadProject.css
βββ MobileView.css
βββ NewProject.css
βββ NewProjectDetails.css
βββ πobjects
βββ Button.css
βββ Dropdown.css
βββ Modal.css
βββ ReadOnlyText.css
βββ ScrollList.css
βββ ScrollListItem.css
βββ Slider.css
βββ Textblock.css
βββ TextInput.css
βββ Title.css
βββ ParticipantCategories.css
βββ πconfig
βββ nodeForm.json
βββ projectDetails.json
βββ πcontexts
βββ SelectionContext.js
βββ πhelpers
βββ autoSaveHelpers.js
βββ debounce.js
βββ exportCategoriesHelper.js
βββ exportDialogueRowsHelper.js
βββ exportParticipantsHelper.js
βββ exportProjectHelper.js
βββ importCategoriesHelper.js
βββ importParticipantsHelper.js
βββ projectManager.js
βββ validationHelpers.js
βββ πhooks
βββ useAutoSave.js
βββ useAutoSaveNodesAndEdges.js
βββ πicons
βββ addIcon.svg
βββ bugReportIcon.svg
βββ deleteIcon.svg
βββ discordIcon.svg
βββ downloadIcon.svg
βββ editoIcon.svg
βββ favoriteIcon.svg
βββ helpIcon.svg
βββ redoIcon.svg
βββ removeIcon.svg
βββ searchIcon.svg
βββ settingsIcon.svg
βββ undoIcon.svg
βββ uploadIcon.svg
βββ App.css
βββ App.js
βββ App.test.js
βββ AppContext.js
βββ FileProvider.js
βββ index.css
βββ index.js
βββ indexedDB.js
βββ logo.svg
- components/: Contains all the React components used in the application.
- dialogueNodes/: Components related to dialogue nodes such as
answerNode.js
,baseNode.js
, etc. - editorComponents/: Components used in the dialogue editor like
DialogueEditorCanvas.js
,DialogueEditorDetails.js
, etc. - general/: General components like
DialogueParticipantsHeader.js
,DialogueParticipantsList.js
, etc. - objects/: Reusable UI components like buttons, dropdowns, modals, etc.
- DialogueCanvas.js: The main container component for the dialogue canvas.
- DialogueEditor.js: Main editor component.
- DialogueParticipants.js: Manages dialogue participants.
- LandingPage.js: The landing page component.
- LoadProject.js: Component for loading existing projects.
- NewProject.js: Component for creating a new project.
- NewProjectDetails.js: Detailed view for configuring the new project.
- ParticipantCategories.js: Manages participant categories.
- dialogueNodes/: Components related to dialogue nodes such as
- componentStyles/: CSS files for styling the components.
- editorComponentStyles/: Styles for editor components.
- objects/: Styles for UI components.
- dialogueNodes/: Styles for dialogue nodes.
- hooks/: Custom React hooks.
- useAutoSave.js: Hook that provides automatic saving functionality.
- icons/: SVG icons used in the application.
- base/: Base styles and CSS variables.
The application is built with a variety of components organized into different categories for better maintainability and scalability. Here is an overview of the key components:
- answerNode.js: Handles user answers in dialogues.
- baseNode.js: The base class for all dialogue nodes.
- closeDialogueAutomaticNode.js: Automatically closes the dialogue.
- closeDialogueNode.js: Manually closes the dialogue.
- jumpToNode.js: Jumps to a specific node in the dialogue.
- leadNode.js: Leads the conversation forward.
- startNode.js: The starting point of the dialogue.
- DialogueEditorCanvas.js: The main canvas for editing dialogues.
- DialogueEditorDetails.js: Provides details for the dialogue editor.
- DialogueEditorToolbar.js: The toolbar with editing options.
- DialogueParticipantsHeader.js: Header for the dialogue participants section.
- DialogueParticipantsList.js: List of dialogue participants.
- EditCategoryItem.js: Edit items in participant categories.
- EditParticipantItem.js: Edit individual participants.
- ParticipantCategorierHeader.js: Header for participant categories.
- ParticipantCategoriesList.js: List of participant categories.
- Button.js: Reusable button component.
- Dropdown.js: Reusable dropdown component.
- Modal.js: Reusable modal component.
- ScrollList.js: Reusable scrollable list component.
- ScrollListItem.js: Items within the scrollable list.
- TextInput.js: Reusable text input component.
- Title.js: Reusable title component.
- DialogueCanvas.js: The main container component for the dialogue canvas.
- DialogueEditor.js: Main editor component for dialogues.
- DialogueParticipants.js: Manages dialogue participants.
- LandingPage.js: The landing page component.
- LoadProject.js: Component for loading existing projects.
- NewProject.js: Component for creating a new project.
- NewProjectDetails.js: Detailed view for configuring the new project.
- ParticipantCategories.js: Manages participant categories.
To build and run the app locally, follow these steps:
- Node.js (v14.0.0 or higher)
- npm (v6.0.0 or higher)
-
Clone the Repository:
git clone https://github.com/yourusername/dialogue-editor-tool.git
-
Navigate to the Project Directory:
cd dialogue-editor-tool
-
Install Dependencies:
npm install
-
Start the Development Server:
npm start
This will start the development server and open the app in your default browser. The app will automatically reload if you make changes to the code.
-
Build the App for Production:
npm run build
This will create a
build
folder with the production build of the app.
- Open the app in your browser.
- On the landing page, enter a project name and click "Continue".
- Configure the project details, including participant categories and dialogue participants.
- Click "Start" to begin working on the project.
- On the landing page, use the load project section to load an existing project from the list or upload a
.mnteadlg
file.
The app automatically saves the project data to local storage every time categories or participants are updated. This ensures that your work is not lost if you accidentally close the browser or navigate away from the app.
We welcome contributions! Please see our CONTRIBUTING.md for guidelines on how to get started.
This project is licensed under the MIT License - see the LICENSE file for details.
We appreciate the contributions from the open-source community and the following libraries that made this project possible: