Architecture and Development
GraNa-GraNo is a containerized application that is split into a web-based frontend and a backend that performs normalization and connects to graph stores, for which currently Neo4j and Memgraph are supported.
Configuration
The following environment variables need to be set in a .env file in order to run GraNa-GraNo:
USERNAME: The username, which the Neo4j graph store should usePASSWORD: The password, which the Neo4j graph store should use
Frontend
Web GUI
The frontend is a Next.js-based web-app that communicates with the backend trough a REST API. For visualizing the graphs and the dependencies cytoscape.js is used. The frontend is included into GraNa-GraNo as a submodule. The source code can be found at https://github.com/dmki-tuwien/lpg-normalization-demo.
To develop the frontend, node.js is required.
The frontend can be run in development mode by executing npm install and npm run dev in the submodule's root folder.
Backend
Python core
The REST API is provided by a Python-based core, which is - as the frontend - contained in a submodule. The source code can be found at https://github.com/dmki-tuwien/lpg-normalization.
To develop the backend Python version 3.14 or higher is required.
The backend can be run in development mode by executing pip install -r requirements.txt followed by fastapi dev restapi/restapi.py,
which runs the REST API in development mode.
Graph stores
The Python core currently supports the normalization of Cypher-based LPGs stored in Neo4j and Memgraph. Both graph stores are used in the form of Docker containers. For development purposes, the container running Neo4j binds on bolt://localhost:7687 and the container running Memgraph binds on bolt://localhost:7688.
Documentation
This documentations is based on Material for MkDocs.
To preview it locally mkdocs serve in the root folder of GraNa-GraNo's GitHub repository.
To deploy it to GitHub Pages run mkdocs gh-deploy.