Graph Database Engine
Graph-native data engine with a Cypher-like query language

Overview
Most student database projects wrap a relational engine. This one builds the graph engine itself — nodes, edges, transactions, and a query language — from first principles, then exposes it through a FastAPI backend and an interactive Streamlit visualizer.
Key features
- Custom Cypher-like query language for expressive node/edge traversal
- ACID-compliant transaction handling across writes
- Interactive graph visualization and live querying through Streamlit
- FastAPI layer exposing graph CRUD and query endpoints
Architecture & engineering decisions
FastAPI backend exposing graph CRUD and query endpoints
Custom Cypher-like query parser mapping expressions to graph traversals
ACID-compliant transaction layer guaranteeing consistency across writes
Streamlit interface for interactive graph visualization and live querying
Product gallery
View full gallery →
Challenges & how I solved them
Designing a transaction layer that preserves ACID guarantees without a full database engine underneath
Implemented write-ahead logging semantics around graph mutations so a failed transaction couldn't leave the graph in a partially-updated state.
Parsing a Cypher-like query language and mapping it to efficient graph traversals
Built a small recursive-descent parser producing an AST, then compiled that AST to traversal operations rather than interpreting query strings directly.
Rendering large graphs responsively inside Streamlit
Limited default render depth and let users expand subgraphs on demand instead of rendering the entire graph on every query.
Lessons learned
- Building a database engine — even a small one — teaches transaction and consistency concepts no course project centered on an existing DB can.
- Query language design is a UX problem: the parser needs to forgive minor syntax variance to feel usable.
Stack