← All work
Product · 2014–15

Graph-Backed Social Network Platform (Symfony2 + Neo4j)

Overview

A full-featured social-network web application built on Symfony2, backed by a Neo4j graph database for modelling people and their relationships. An ambitious early-career product project that pulled together the whole modern-PHP stack of its day: activity timelines, messaging, comments, real-time notifications, payments and an admin backend.

The Challenge

Social graphs (friends-of-friends, follows, mutual connections) are awkward to express in a relational schema. The project explored using a native graph store (Neo4j via everyman/neo4jphp and an OGM) for the relationship layer while keeping Doctrine/ORM for conventional entities, all inside a single Symfony2 application.

What We Built

A complete Symfony 2.5 product skeleton (app/, src/, web/, provisioning) wiring together: Neo4j graph persistence with a custom console tool to reset nodes/relations for dev; activity timelines via the author’s own TimelineBundle; FOSUserBundle, FOSMessageBundle and FOSCommentBundle for accounts, messaging and comments; real-time fan-out through Pusher and Redis/PHP-Resque queues; JWT auth and a Nelmio-documented REST API with CORS; payments via Payum (PayPal IPN / Express Checkout); Sonata admin; ACL management; and Keen.io analytics. Shipped with Vagrant dev boxes, Doctrine migrations, Jenkins and Codeship CI badges, and Capifony staging/production deploys.

Technologies & Approach

Symfony 2.5 with Doctrine ORM plus a Neo4j graph layer for the social model. Heavy use of the FriendsOfSymfony ecosystem, Redis-backed queues for asynchronous work, Pusher for live updates, and a provisioned Vagrant + Capistrano workflow for reproducible environments and deploys.

Outcome / Impact

A working, broadly-scoped social platform that demonstrates end-to-end product engineering: data modelling across relational and graph stores, real-time delivery, payments, REST APIs and a complete CI/CD and deployment pipeline. Archived as an early-career flagship of full-stack Symfony2 capability.

Capabilities Demonstrated

  • Designing social/relationship data on a native graph database (Neo4j)
  • Building real-time activity feeds and notification systems
  • Integrating the full FriendsOfSymfony/Doctrine ecosystem into a cohesive product
  • Standing up CI/CD, provisioned dev environments and automated deployment
More work See all →