{"_id":"graffeine","_rev":"41-b6b1c5e55b76833234bd3f5aeafc9501","name":"graffeine","description":"Caffeinated Neo4J Graph Admin","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"graffeine","version":"0.0.1","description":"Caffeinated Neo4J Graph Exploration","contributors":[{"name":"Julian Browne"}],"homepage":["https://github.com/julianbrowne/graffeine"],"repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"keywords":["neo4j","d3","admin","graph"],"author":{"name":"Julian Browne"},"scripts":{"start":"node server.js"},"gitHead":"bf98fc30e71141fc4a07bce1714f14c912a6ef4e","main":"server.js","directories":{"doc":"doc","test":"test"},"dependencies":{"d3":"~3.1.6","js-yaml":"~2.1.0","neo4j":"~0.2.20","node-static":"~0.6.9","socket.io":"~0.9.14"},"license":"LGPL-3.0","_id":"graffeine@0.0.1","dist":{"shasum":"4142ab0e0a89765015b4e464e8cf6d4b7cc7d0c9","tarball":"https://registry.npmjs.org/graffeine/-/graffeine-0.0.1.tgz","integrity":"sha512-CEPCRNkUNKYOLHtHp6dzjNQ0pKrr/W+fcV1EOjDqF91sjPLd5dLRvhEFtlGbktluwjlzaKpZNe8MT1Oll4CHSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzyPQFrX0kt+xEpWta0EcxKUzZkEtYJHM0QO69JMpLcAIhAItmrt8tPf0jdviSxn6a355XziyYfgS7m5CnEaoY/SdD"}]},"_npmVersion":"1.1.71","_npmUser":{"name":"julianbrowne","email":"julianbrowne@gmail.com"},"maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}]},"0.0.2":{"name":"graffeine","version":"0.0.2","description":"Caffeinated Neo4J Graph Exploration","contributors":[{"name":"Julian Browne"}],"homepage":"https://github.com/julianbrowne/graffeine","repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"keywords":["neo4j","d3","admin","graph"],"author":{"name":"Julian Browne"},"scripts":{"start":"node server.js"},"gitHead":"bf98fc30e71141fc4a07bce1714f14c912a6ef4e","main":"server.js","directories":{"doc":"doc","test":"test"},"dependencies":{"d3":"~3.1.6","js-yaml":"~2.1.0","neo4j":"~0.2.20","node-static":"~0.6.9","socket.io":"~0.9.14"},"devDependencies":{},"license":"LGPL-3.0","bugs":{"url":"https://github.com/julianbrowne/graffeine/issues"},"bundleDependencies":["d3","js-yaml","neo4j","node-static","socket.io"],"_id":"graffeine@0.0.2","dist":{"shasum":"113a35933e73bed34df0e7c4cdc32ad1676de501","tarball":"https://registry.npmjs.org/graffeine/-/graffeine-0.0.2.tgz","integrity":"sha512-sJuL7WQxmoaQh4sNXR/3m5FPanXyDKS9clNwB1r1+z8YrvcJ87iOpoG0Jy2AxAhq+yoQFGGpck+kSO0A29xrMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxZK/LBT1m7Eltgj0E57nyaoKW3mbq/q/PlpQQAr0kxQIhAPWl+LyOabGiPteM/tl1rvjYpYFnb1qNdEiEmkl4KthE"}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"julianbrowne","email":"julianbrowne@gmail.com"},"maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}]},"0.0.3":{"name":"graffeine","version":"0.0.3","description":"Caffeinated Neo4J Graph Exploration","contributors":[{"name":"Julian Browne"}],"homepage":"https://github.com/julianbrowne/graffeine","repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"keywords":["neo4j","d3","admin","graph"],"author":{"name":"Julian Browne"},"scripts":{"start":"node server.js"},"gitHead":"bf98fc30e71141fc4a07bce1714f14c912a6ef4e","main":"server.js","directories":{"doc":"doc","test":"test"},"dependencies":{"d3":"~3.1.6","neo4j":"~0.2.20","node-static":"~0.6.9","socket.io":"~0.9.14"},"devDependencies":{},"license":"LGPL-3.0","bugs":{"url":"https://github.com/julianbrowne/graffeine/issues"},"bundleDependencies":["d3","js-yaml","neo4j","node-static","socket.io"],"_id":"graffeine@0.0.3","dist":{"shasum":"fbe9132af503b14999514ecad4487f826a440947","tarball":"https://registry.npmjs.org/graffeine/-/graffeine-0.0.3.tgz","integrity":"sha512-0AtkymMOhyup1ubEOwNP9x/DhmdhQj/jiLvQl4W2BQjQg4dOCZs2VMm3ob8euQDyME17ByvyBK1A2X8HCb+Ikw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMcLurTTCCOOJ4x4e4drYktWVOZDyh0EtmEhLrCERCigIhAInU/MrzBlN8P48UF2w2lPqWg1D9xQfT3h5LAgcAyMnL"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"julianbrowne","email":"julianbrowne@gmail.com"},"maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}]},"0.0.4":{"name":"graffeine","version":"0.0.4","description":"Caffeinated Neo4J Graph Admin","contributors":[{"name":"Julian Browne"}],"homepage":"https://github.com/julianbrowne/graffeine","repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"keywords":["neo4j","d3","admin","graph"],"author":{"name":"Julian Browne"},"scripts":{"start":"node server.js"},"gitHead":"bf98fc30e71141fc4a07bce1714f14c912a6ef4e","main":"server.js","directories":{"doc":"doc","test":"test"},"dependencies":{"d3":"3.1.10","neo4j":"1.1.0","node-static":"0.6.9","socket.io":"0.9.17"},"devDependencies":{},"license":"LGPL-3.0","bugs":{"url":"https://github.com/julianbrowne/graffeine/issues"},"bundleDependencies":["d3","js-yaml","neo4j","node-static","socket.io"],"_id":"graffeine@0.0.4","dist":{"shasum":"069854d91ef587ec54694d1a66a33acf9a5c868d","tarball":"https://registry.npmjs.org/graffeine/-/graffeine-0.0.4.tgz","integrity":"sha512-H78KLD71bkMxpMZjEiweLWBvvAJhgs/En+A6JnE1Tr4FKmP8Pcc3dYY4oIfsl6jJho9sCCVP6FLBzvP5nTf7Xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHN38cftXc9r3agwnjv3aAcY538Xk8u6huNsGJdGIE6bAiEA7orQi66D3YKIOD7XgYlVywgAPJvnPia1g8qKVKZyenE="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"julianbrowne","email":"julianbrowne@gmail.com"},"maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}]},"0.0.5":{"name":"graffeine","version":"0.0.5","description":"Caffeinated Neo4J Graph Admin","contributors":[{"name":"Julian Browne"}],"homepage":"https://github.com/julianbrowne/graffeine","repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"keywords":["neo4j","d3","admin","graph"],"author":{"name":"Julian Browne"},"scripts":{"start":"node server.js"},"gitHead":"bf98fc30e71141fc4a07bce1714f14c912a6ef4e","main":"server.js","directories":{"doc":"doc","test":"test"},"dependencies":{"d3":"3.1.10","neo4j":"1.1.0","node-static":"0.6.9","socket.io":"0.9.17"},"devDependencies":{},"license":"LGPL-3.0","bugs":{"url":"https://github.com/julianbrowne/graffeine/issues"},"bundleDependencies":["d3","js-yaml","neo4j","node-static","socket.io"],"_id":"graffeine@0.0.5","dist":{"shasum":"4e85963a757517629a7437fc3783f47b498afa2e","tarball":"https://registry.npmjs.org/graffeine/-/graffeine-0.0.5.tgz","integrity":"sha512-YFlONqAKIwuK4SeD2YhwfX8KZ2QJQXzdrT+eSDBrjr0SvPFP0FdDEkrdmrBielkhk8kt/Qf6vvjqRZQY4GFXvg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH7hryxMwGlXo8L12UlTnXv1NwrMn6qV1EVgqYEwoT+wIhAL4R5sDQh1va6u93OpAe9iDHAnwDEEZ5zQC7PpoV7XCB"}]},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"julianbrowne","email":"julianbrowne@gmail.com"},"maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}]}},"readme":"\n# Graffeine\n\nCaffeinated Graph Exploration for Neo4J\n\nGraffeine is both a useful interactive demonstrator of graph capability and a simple visual administration\ninterface for small graph databases.\n\nHere it is with the, now canonical, Dr Who graph loaded up:\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-drwho.jpeg)\n\n## Dependencies\n\n-   **node.js** v0.10+\n-   **neo4j** v2.0, V2.1\n-   a **modern browser** that is happy with [D3](http://d3js.org/) v2, [JQuery](http://jquery.com/) v1.9.1, JQuery UI, Underscore.JS and Font Awesome\n\n## Installation\n\nfrom github:\n\n    git clone https://github.com/julianbrowne/graffeine\n\n    cd graffeine\n\n    node server\n\nfrom npm:\n\n    npm install graffeine\n\n    cd node_modules\n\n    npm start graffeine\n\npoint a browser at:\n\n    http://localhost:8004\n    \n### Background\n\nGraph databases are amazing things.\n\nThey should be the easiest of all persistence technologies to understand because graphs think like us - human concepts connect together (Alice _knows_ Bob) and these connections have meaning (Alice knows Bob _since Tuesday_).\n\nCould you get more human than that? And yet, for reasons that are hard to fathom, graphs have taken a back seat to all the other nosql products.\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-alice-bob.jpeg)\n\nGraffeine was born because I wanted to show people how great graph thinking is and how close to the way we model things in our heads graphs like their data. Neo4J is the best graph tool I know of and despite there being plenty of complimentary tools out there all the ones I played with got in the way a bit when all I wanted to do was add a node (Alice), then another (Bob), and then **feel** all that graph loveliness coming through when I connected them and extended their relationships.\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-self.jpeg)\n\nI felt there was a tool missing. One that promotes the explaining of graphs, exploring of graphs, and above all the seeing of graphs. Graffeine is an initial attempt at this. It won't ever be a suitable tool for hard core admin tasks on large production systems but it could work for small systems, spikes, demos, and generally helping spread the graph awesomeness.\n\n### What is it?\n\nGraffeine plugs into Neo4J and renders nodes and relationships as an interactive D3 SVG graph so you can add, edit, delete and connect nodes. It's not quite as easy as a whiteboard and a pen, but it's close, and all interactions are persisted in Neo4J.\n\nYou can either make a graph from scratch or browse an existing one using search and paging. You can even \"fold\" your graph to bring different aspects of it together on the same screen.\n\nNodes can be added, updated, and removed. New relationships can be made using drag and drop and existing relationships broken.\n\nIt's by no means phpmyadmin for Neo4J, but one day it could be (maybe).\n\n\n### More Detail?\n\nThe schema-less nature of nodes and relationships in Neo4J makes them slightly problematic to model visually without some prior knowledge. Graffeine turns Neo4J nodes and relationships into ```GraffNodes``` which have name and type fields.\n\nThese fields are either from the actual name and type fields in the source graph, or inferred from other fields.\n\nFor example, Jim Webber's famous [Dr Who](https://github.com/jimwebber/neo4j-tutorial) graph does not use 'type' fields instead nodes are of the form:\n\n    { character: \"Rose Tyler\" }\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-draglet.jpeg)\n\nThis is a common situation. In fact for many graph applications using types and rigid schemas can be a bit of an anti-pattern (or a smell that the model is trying to be too rdbms-like). In the case of Dr Who, Graffeine uses the field 'character' as the 'type' and the contents (\"Rose Tyler\") as the display name.\n\nNode-to-GraffNode mappings are done in the ```graph.json``` file in ```{graffeine_home}/conf```. In this case by adding ```character``` to the list of ```nameFields``` (used in priority order to determine names of nodes) and a also setting ```useNameAsType``` to ```true```.\n\nTypes are not critical to Graffeine though, they're just useful for applying CSS to make the visualisation look nice. Similarly, names are only important because they're used to label the SVG circles in the UI.\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-styled.jpeg)\n\nThe ```graph.json``` file has a few other visualisation settings to determine which fields do what. These should be self-explanatory.\n\n* Check out the [configuration.md](configuration.md) file for more technical detail\n* Check out the [guide.md](guide.md) file for a basic user guide\n* Check out the [change log](changelog.md) for recent updates\n\n### Help?\n\nYes please.\n\n![ScreenShot](https://raw.githubusercontent.com/julianbrowne/graffeine/master/public/assets/images/screenshot-help.jpeg)\n\nThis started as a lunchtime play and grew fast. I've cleaned it up in phases but the code is still a bit untidy. Plus, there's always scope for new features.\n\nFeel free to drop me a line via julianbrowne.com or via Github with bugs, questions, features requests, suggestions, offers of help etc.\n","maintainers":[{"name":"julianbrowne","email":"julianbrowne@gmail.com"}],"time":{"modified":"2022-06-18T13:47:27.838Z","created":"2013-06-29T09:06:04.488Z","0.0.1":"2013-06-29T09:06:06.435Z","0.0.2":"2013-11-23T08:28:42.696Z","0.0.0":"2013-06-29T11:16:45.638Z","0.0.3":"2014-07-18T15:21:15.752Z","0.0.4":"2014-07-20T06:53:45.862Z","0.0.5":"2014-08-05T11:01:41.857Z"},"author":{"name":"Julian Browne"},"repository":{"type":"git","url":"https://github.com/julianbrowne/graffeine.git"},"homepage":"https://github.com/julianbrowne/graffeine","keywords":["neo4j","d3","admin","graph"],"contributors":[{"name":"Julian Browne"}],"bugs":{"url":"https://github.com/julianbrowne/graffeine/issues"},"license":"LGPL-3.0","readmeFilename":"readme.md"}