Skip to content

spbu-coding-2024/graphs-graphs-team-4

Repository files navigation

GraphVizScript

Kotlin Gradle Compose License build

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:

IMG_20250527_172715

White theme:

image_2025-05-28_22-35-59

Dark Theme - 5k vertices and 10k edges:

image

Video demonstration on YouTube:

Video demonstration

🔧 Main functionality

  • 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

🖼 Interface

The application uses the MVVM architectural pattern. Graphs are displayed in a convenient interactive form with visualization of the algorithms' results

🧪 Testing

  • Unit tests for algorithms, SQLite
  • Integration tests with user scenarios (SQLite saving and loading + Ford Bellman and Find Cycles)

📦 Technologies

  • Language: Kotlin
  • Async: Kotlin Coroutines
  • GUI: Jetpack Compose
  • DataBases: SQLite, Neo4j
  • Building system: Gradle
  • Testing: JUnit5

🚀 Get started

  • 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

Model

Our model supports multiple graph types:

Algorithms

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

img.gif

img.gif

img.gif

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

img.gif

  • 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

Supported languages:

  • English
  • Russian
  • Chinese

📄 License

This project is licensed under the MIT License.

📌 Authors

  • Vladimir Pugovkin'
  • Rafael
  • Tatyana Gromova

© 2025

About

graphs-graphs-team-4 created by GitHub Classroom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages