GraphVizScript — is a desktop application with a graphical interface designed to visualize graphs, analyze their structure using modern and classical algorithms, and save the analysis results to various storages.
Screenshots:
Dark theme - 10k vertices and 20k edges:
White theme:
Dark Theme - 5k vertices and 10k edges:
Video demonstration on YouTube:
- Graph analysis:
- Algorithm for graph layout on the plane
- Search for communities using the Louvain algorithm
- Classical algorithms:
- Extraction of strongly connected components
- Search for cycles from a given vertex
- Construction of a minimum spanning tree (MST)
- Search for the shortest path - Ford Bellman
- Saving and loading graphs:
- Storing graphs in SQLite
- Integration with Neo4j
The application uses the MVVM architectural pattern. Graphs are displayed in a convenient interactive form with visualization of the algorithms' results
- Unit tests for algorithms, SQLite
- Integration tests with user scenarios (SQLite saving and loading + Ford Bellman and Find Cycles)
- Language: Kotlin
- Async: Kotlin Coroutines
- GUI: Jetpack Compose
- DataBases: SQLite, Neo4j
- Building system: Gradle
- Testing:
JUnit5
- To download project:
git clone git@github.com:spbu-coding-2024/trees-trees-team-4.git
- To build project:
./gradlew build
- To run application:
./gradlew run
- To run a local instance of Neo4j, make sure Docker is installed on your system. Then, start a Neo4j session using the following command:
docker run -d --name neo4j -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/Test1234554321 -v /home/vkinzin/data/neo4j/data neo4j
This will run Neo4j locally at http://localhost:7474 with default credentials:
Username: neo4j
Password: test
Our model supports multiple graph types:
The application provides a collection of classical graph algorithms, implemented in the algorithms package and available through the user interface:
- MST algorithm — Kraskal finds a minimum spanning forest of an undirected edge-weighted graph. If the graph is connected, it finds a minimum spanning tree
- Ford-Bellman algorithm — finds shortest paths in graphs that may include negative edge weights
- Find Cycle algorithm — determines whether a cycle exists involving a specified vertex
- Strongly connected - Kosaraju's algorithm — identifies and extracts strongly connected components in directed graphs
In addition to classical algorithms, the application features built-in layout algorithms for automatic graph visualization:
- Find Communities - Louvain Algoritms — The Louvain method for community detection is a greedy optimization method intended to extract non-overlapping communities from large networks
- Graph Layout - ForceAtlas2 is a force-directed layout algorithm based on physical simulation principles like gravity, repulsion, attraction
All algorithms are modularly implemented, making them reusable outside the user interface context
- English
- Russian
- Chinese
This project is licensed under the MIT License.
- Vladimir Pugovkin'
- Rafael
- Tatyana Gromova
© 2025







