Maps a website as a graph.
Go to file
Askill 60e4801951 add samples for E-List 2026-03-07 16:17:52 +01:00
.vscode clean up 2026-03-07 14:24:32 +01:00
cached cclean up 2021-12-29 11:43:45 +01:00
config add samples for E-List 2026-03-07 16:17:52 +01:00
docs added package stuff 2022-01-01 23:43:11 +01:00
src/Star-Mapper added package stuff 2022-01-01 23:43:11 +01:00
templates add samples for E-List 2026-03-07 16:17:52 +01:00
.gitignore neo4j connection 2026-03-06 17:34:01 +01:00
README.md add samples for E-List 2026-03-07 16:17:52 +01:00
app.py add samples for E-List 2026-03-07 16:17:52 +01:00
layout_engine.py neo4j connection 2026-03-06 17:34:01 +01:00
requirements.txt add samples for E-List 2026-03-07 16:17:52 +01:00
setup.py added package stuff 2022-01-01 23:43:11 +01:00

README.md

Star-Mapper

Star-Mapper is a Flask-based graph exploration service for Neo4j.

It provides an interactive browser UI where you can run Cypher queries, visualize large graph results, inspect schema metadata, and tune layout/visual settings in real time. Layout computation is performed server-side in Python (igraph/networkx) for better performance on larger graphs.

Current Goal

Make Neo4j graph data explorable and understandable through:

  • Fast query-to-visualization workflow.
  • Multiple layout algorithms with automatic selection by graph size.
  • Interactive graph navigation (zoom/pan/highlight/search) plus a tabular result view.

Core Functionality

  • Neo4j HTTP Transactional API integration.
  • Cypher execution endpoint with graph extraction (nodes, relationships) and tabular rows.
  • Server-side layout precomputation with algorithms such as:
    • auto
    • force_directed
    • force_directed_hq
    • community
    • circle
    • drl / kamada_kawai (when python-igraph is available)
    • spectral (fallback when igraph is unavailable)
  • Node coloring by label and size scaling by degree.
  • Client features:
    • Graph/table view toggle.
    • Hover/select neighborhood highlighting.
    • Node search and focus.
    • Minimap.
    • Visual controls (edge style, node/label size, spacing, iterations).
  • Built-in demo graph generation (/api/demo) so UI can be tested without Neo4j data.

Project Structure

  • app.py: Flask app and API endpoints.
  • layout_engine.py: Graph layout computation and algorithm selection.
  • config/sample_queries.json: Sample Cypher query definitions loaded by /api/sample-queries.
  • templates/index.html: Frontend UI (canvas rendering with D3-powered interactions).
  • src/Star-Mapper/: Legacy website crawler code (kept in repository, not the primary current service path).

API Endpoints

  • GET /: Serves the explorer UI.
  • POST /api/query: Execute Cypher and return graph + records + stats.
  • GET /api/schema: Return labels, relationship types, property keys.
  • GET /api/connection-test: Verify Neo4j connectivity.
  • POST /api/reconnect: Update Neo4j connection settings at runtime.
  • GET /api/layouts: Return available layout algorithms.
  • GET /api/sample-queries: Return built-in sample Cypher queries.
  • POST /api/demo: Generate synthetic graph data for demo/testing.

Configuration

Environment variables used by app.py:

  • NEO4J_HTTP_URL (default: http://localhost)
  • NEO4J_USER (default: neo4j)
  • NEO4J_PASSWORD (default: empty)
  • NEO4J_DATABASE (default: neo4j)
  • SAMPLE_QUERIES_FILE (default: config/sample_queries.json)

Local Development

  1. Install dependencies:
pip install -r requirements.txt
  1. Optionally set Neo4j connection details:
set NEO4J_HTTP_URL=https://your-neo4j-host
set NEO4J_USER=neo4j
set NEO4J_PASSWORD=your-password
set NEO4J_DATABASE=neo4j
  1. Run the app:
python app.py
  1. Open:

http://localhost:5555

Notes

  • The current service is the Flask app in app.py.
  • Legacy crawler functionality still exists in src/Star-Mapper/main.py, but the existing web UI and API are designed for Neo4j graph exploration.