Hi Michael,

I'm thrilled that there has been prior interest and implementation on the 
subject! Thank you for sharing. Yeah, it is similar to cypher-rs in that 
cypher-rs too serves a Cypher file on a specific route. The differences, as 
far as I can see are:

   - koa-neo4j is a separate server, it's completely isolated from the 
   Neo4j instance. E.g. one can expose APIs defined in koa-neo4j while Neo4j 
   is not accessible outside the box on which it's installed
   - It is designed to bring the best of two worlds together: Cypher and 
   Javascript. With preProcess and postProcess hooks, one can modify the 
   results given-to/taken-from the Cypher endpoint. This has proved really 
   useful in my company as data representation in database stays intact while 
   custom format is needed in some presentation layers (to give you a concrete 
   example on this, a website we're designing needs dashes in place of empty 
   time slots, using postProcess we augment the response from Neo4j with these 
   dashes)
   - It gives structure to a project, queries are organised as files 
   (instead of strings), I can see the logic of my app in a folder that 
   contains .cyp files!

Documentation is WIP, at the repo:
https://github.com/satratech/koa-neo4j

I've put together a demo at:
https://github.com/satratech/koa-neo4j-example
comments in `server.js` in the example are as far as I got in describing 
how it works.

Please do let me know if anything needs clarification,
Cheers,
K

On Friday, September 16, 2016 at 5:41:10 PM UTC+4:30, Michael Hunger wrote:
>
> Really nice,
>
> do you have an an example project and perhaps a blog post or screencasts 
> that demoes it in action?
>
> It's kinda similar to my github.com/jexp/cypher-rs project, that stores 
> cypher queries at an endpoint and then allows GET/POST requests on those?
>
> Michael
>
> On Thu, Sep 15, 2016 at 12:20 PM, Keyvan Mir Mohammad Sadeghi <
> keyvan.m...@gmail.com <javascript:>> wrote:
>
>> Hi everyone,
>>
>> I have developed and open-sourced a NodeJs package that allows serving 
>> Neo4j as domain-specific REST APIs. Using this package, one can define her 
>> own REST routes instead of endpoints (REST or Bolt) provided by Neo4j 
>> instance.
>>
>> Comments and feedback very much appreciated!
>>
>> https://www.npmjs.com/package/koa-neo4j
>>
>> koa-neo4j is a framework for creating web servers that embody 
>>> application's logic powered by a Neo4j Graph Database 
>>> <https://neo4j.com/> backend.
>>>
>>> In a Neo4j enabled application, conducting queries directly from client 
>>> side might not be the best choice:
>>>
>>>    - Database is exposed to the client, unless some explicit security 
>>>    mechanism is in place; one can *see* the innards of the database by View 
>>>    page source
>>>    - There is no one server to rule them all, queries are strings, 
>>>    scattered around different clients (web, mobile, etc.)
>>>    - Third-party developers might not be familiar with Cypher
>>>
>>> koa-neo4j addresses all of the above issues:
>>>
>>>    - Stands as a middle layer between clients and database
>>>    - Gives structure to your server's logic in form of a file-based 
>>>    project; finally a home for Cypher! All of the clients can then talk to 
>>> an 
>>>    instance of this server
>>>    - Converts Cypher files to REST routes, a cross-platform web 
>>>    standard that developers are familiar with, it does so on top of the 
>>>    widely-adapted koa <http://koajs.com/> server, ripe for further 
>>>    customization
>>>
>>> In addition it comes with *goodies*:
>>>
>>>    - Lifecycle hooks, enabling one to tweak incoming and outgoing data 
>>>    based on one's needs, allowing her to utilize the full power of 
>>>    nodejs and javascript ecosystem in the process
>>>    - Non-opinionated user management, you describe (in Cypher) how your 
>>>    users and roles are stored, the framework provides authentication and 
>>>    role-based access management
>>>
>>> Cheers,
>> Keyvan
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to neo4j+un...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to