MindMapper: Harnessing the Power of AI for Interactive Mindmaps
Tags: react, webdev, tutorial, opensource
Published: 2023-06-05 01:12:53

## MindMapper: Harnessing the Power of AI for Interactive Mindmaps

The result: [My website mindmap](https://dynamicapproach.dev/infoPages/mindmapper)

For years, I've utilized mindmaps for various purposes - from understanding complex subjects during my studies to planning designs for different projects, and even preparing for exams. The ability to visualize topics and their interconnected subcategories has always helped me in efficiently organizing my ideas and thoughts. This, in turn, led to a question - what if we could automate this process, leveraging the power of AI? This question was the inspiration behind the Mindmapper project and this post will outline the basic process taken.

## The AI Connection

The seed of the idea was sown during one of my sessions with OpenAI's ChatGPT. I realized how this AI, with its dynamic prompt responses, could potentially be used to create mindmaps on demand. With this realization, the concept of the Mindmapper was born.

## From Concept to Reality

### The Prompt Selection: The First Step

Finding the perfect prompt was a challenge. After multiple trials and fine-tuning with different prompts, I finally got the AI to provide output in a parsable format. This was a crucial step that paved the way for the automation of mindmap creation.

### The Parser: Transforming the AI Output

With the correct prompt in hand, the next hurdle was to interpret the AI's output into a usable format. I decided to build a parser that would convert the AI's output markdown into JSON format. The reason behind choosing JSON was its compatibility with the "MarkmapJS" library, a tool capable of generating interactive SVG views.

### The Tree Structure: Building the Mindmap

Once the JSON conversion was complete, I parsed it into a tree structure. Here, each line of the output became a node, with every node connected to a parent - the root node was formed from the first line of the output. Each subsequent line served as a child of the preceding line, establishing the structure of the mindmap.

### The Final Touch: Generating and Displaying the Mindmap

With the tree structure ready, I employed MarkmapJS to generate the SVG view of the mindmap. This view was then beautifully rendered on the webpage, delivering an interactive and intuitive mindmap to the user.

## Behind the Scenes: The Tech Stack and Implementation

The Mindmapper project was developed using a plethora of technologies and programming languages, including React, TypeScript, and OpenAIApi. The asynchronous handling of data retrieval and processing is specifically implemented for creating or enhancing an existing map. The application also incorporates functions for managing different states like loading and errors, and for modifying or appending to the existing markdown.

The mindmap generation is facilitated by the `fetchAndAppendData` and `fetchData` functions. They process the input data and generate a detailed mindmap. To make the mindmap as expansive and thorough as possible, the application utilizes the OpenAI API's capabilities to produce detailed completions. Other features include the ability to switch between APIs, clear the existing mindmap, and handle the submission of new map data.

## Conclusion

The Mindmapper project exemplifies the fascinating intersection of AI and everyday utilities. It showcases how AI can automate and simplify our processes, leading to more efficient work and study routines. `MindMapper.tsx`, written in React and TypeScript, provides a compelling example of an interactive mind map application. Using modern JavaScript features like hooks and callback functions, it creates a user-friendly tool that is visually appealing and effective. Combined with the power of the OpenAI API, this project is a testament to the potential of AI in revolutionizing how we approach tasks like note-taking and studying - Creating maps that previous could have taken hours in mere minutes.

## Next Steps

My future aim with the development of this project consists of a two way front. One in which shall focus on the development of an Android app in Compose, the other to enhance functionality of the current web app. The Android app will be an advanced implementation of the web app, with the ability to save and load maps from the device's storage. The web app will be enhanced with the ability to save and load maps from the browser's local storage, as well as the ability to export the map as a PNG or SVG file. Currently, this is a work in progress, and I hope to have a working prototype soon. Stay tuned for more updates!