What it is
Neo4j is a graph database. Instead of rows in tables, it stores nodes and the relationships between them, and both can carry properties. A relationship is stored as data in its own right, so following a chain of connections does not need a pile of joins. That makes queries several hops deep practical, where the same query in SQL grows harder to write and slower to run.
It is queried with Cypher, a declarative language that describes patterns of nodes and arrows, much as you would sketch them on a whiteboard. Graph databases suit questions about paths and networks: who reports to whom, what depends on what, and how something got from one place to another. Neo4j offers a free community edition you host yourself and a managed cloud service, AuraDB, run by the company.
How I use it
- Built a multi-user family tree web app on Neo4j: members are nodes, and parent-of, spouse-of and sibling-of relationships are edges, queried with Cypher through the official neo4j-driver from a Node and Express API.
- React, Vite and Tailwind front end with an interactive tree canvas (React Flow with Dagre auto-layout), JWT and bcrypt sign-in, password reset, audit events, and document uploads with OCR linked to family members.
- Wrote backup and restore scripts for the Neo4j data. It first ran in Docker Compose on a small EC2 instance; in October 2026 I moved it to serverless (Lambda, S3 and CloudFront in front of Neo4j AuraDB Free), so it now costs almost nothing while idle. It is live at familytree.mervinc.com with a made-up 226-person demo family.
- My AI coding agents read each codebase as a graph of functions, routes and calls, and query it with Cypher-style queries before they change anything.
- Fits I see next: equipment that moves between job sites, Rental Pilot's contact "reports to" chain, and code dependency graphs.
A graph database is the right tool when the connections are the point of the question, not the records. A family tree is exactly that, which is why I built one on Neo4j. That app ran on a small EC2 instance until October 2026, when a database server running around the clock cost too much for its traffic. I rebuilt the hosting as serverless on AuraDB Free, and it is live again at familytree.mervinc.com, with a fictional demo family anyone can browse.
Questions
Have you built anything on Neo4j?
Yes. I built a multi-user family tree web app with Neo4j behind a Node and Express API, with relationships modelled as edges and queried in Cypher. It ran on a small EC2 instance until October 2026; it now runs serverless on Neo4j AuraDB Free and is live at familytree.mervinc.com with a made-up demo family.
When is a graph database better than SQL?
When the question is about paths and connections, such as family lines, reporting chains, dependencies or how an item moved between places. For ordinary records, invoices and totals, a relational database such as MySQL is usually the better fit.