Skip to content
This repository

Java framework for mobile and web applications based on the graph database Neo4j

The Structr Project

Build Status

Structr (pronounce it like 'structure') is a Java framework for mobile and web applications based on the graph database Neo4j. It was designed to simplify the creation of complex graph database applications by providing a comprehensive Java API and a set of features common to most use cases. This enables developers to build a sophisticated web or mobile app based on Neo4j within hours.

Main components

  • Object-to-Graph mapper (OGM)
  • REST server
  • CMS frontend

For detailed feature lists of these components see


Backend Features

Frontend Features


Structr was awarded with the Graphie Award for the Most Innovative Open Source Graph Application in 2012.

Getting started

Structr uses Apache Maven, so you can use Maven to get a demo project up and running in 5 minutes with our simple example archetype.


A simple “city” entity in Java..

public class City extends AbstractNode {

    // define a 1:n relationship between “City” and “Person”
    public static final Property<List<Person>> persons =

        new CollectionProperty<Person>(
            "persons",               // the name of the property
            Person.class,            // the end node type
            RelType.LIVES_IN,        // the relationship type
            Direction.INCOMING,      // the direction
            true                     // 1:n instead of n:m

    // define the public view of a City to contain name and persons
    public static final View publicView = new View(Person.class, PropertyView.Public,
        name, persons

.. its creation via REST using the demo server

curl -si -XPOST -d '{"name":"Berlin"}'

HTTP/1.1 201 Created                                                                                                                                                                                                                                         
Content-Type: application/json; charset=UTF-8                                                                                                                                                                                                                
Transfer-Encoding: chunked                                                                                                                                                                                                                                   
Server: Jetty(8.1.0.RC5)                                                                                                                                                                                                                                     

..and its JSON output

curl -si

HTTP/1.1 200 OK                                                                                                                                                                                                                                              
Content-Type: application/json; charset=utf-8                                                                                                                                                                                                                
Transfer-Encoding: chunked                                                                                                                                                                                                                                   
Server: Jetty(8.1.0.RC5)                                                                                                                                                                                                                                                                                                                                               

    "query_time": "0.071098661",                                                                                                                                                                                                                               
    "result_count": 1,                                                                                                                                                                                                                                         
    "result": [                                                                                                                                                                                                                                                
            "id": "2fe1180289db49f59827f9a88aefa707",
            "name": "Berlin",
            "persons": []
    "serialization_time": "0.000401979"


There are these two main components: Structr Server and Structr UI.

Structr Server provides libraries and modules building the backend.

Structr UI is a frontend for CRUD operations and basic CMS functionalitiy, e.g. for handling pages, files, images, users/groups.

Learn more

For updates and news around Structr, follow @structr on Twitter.


For submitting feature requests or bug report, please use Github's issue tracking system.

In order to contribute to structr, you must sign the Structr Contributor’s License Agreement, which can be found here.


Copyright and License

Copyright 2010-2013 Axel Morgner

Structr is licensed under the GPLv3 and AGPLv3 (structr UI).

Something went wrong with that request. Please try again.