#Social-Connection A graph based social connection web application. This application contains graph of persons on which user can query the following
- List of persons in graph
- Path between two person.(Like linked-In, when logged in user visits someone's profile, Linked-In shows him the path of person and friends, who can introduce him with this person i.e friends of friends)
- Get count of persons(path) between two given persons.
This Graph is acheived via two ways
- Neo4j, Graph Database
- Home grown Graph Implementation using Adjacency list
For detailed design overview see wiki, Wiki-Design
Below is the technology stack
<ul>
<li> <b> Language: Java 8, Groovy</b> </li>
<li> <b> Framework: Spring, SpringMVC </b> </li>
<li> <b> Database: Neo4j </b> </li>
<li> <b> Testing: JUnit, Mockito </b> </li>
<li> <b> Functional Testing: Groovy Spock </b> </li>
<li> <b> UAT Testing: Cucumber </b> </li>
<li> <b> Build Tools: Maven, Gradle </b> </li>
<li> <b> Dev ops: Vagrant </b> </li>
</ul>
Pre-requisite
For running web app
- Git clone this repo and CD to root of that folder
- Run maven command 'mvn clean install tomcat7:run'
- Application will be deployed and initialized with a small person data set. Tomcat server will boot at port 8080. Below is the data set
Verify REST web service calls
- Set Accept header as application/xml or application/json
- GET http://localhost:8080/socialconnection/api/social/1.0/person
- GET http://localhost:8080/socialconnection/api/social/1.0/person?fromName=Foo&toName=Tim
- GET http://localhost:8080/socialconnection/api/social/1.0/person/count?fromName=Foo&toName=Tim
For running FT and UAT test case (Make sure the tomcat server is up at localhost:8080)
- Run command at root of the clone folder 'gradle build'
For detailed deployment or deployment using vagrant see wiki Wiki-Deployment