We

We built a type-safe Python ORM for RedisGraph/FalkorDB

Hacker News

We built a type-safe Python ORM for RedisGraph/FalkorDB

We were tired of writing raw Cypher — escaping quotes, zero autocomplete, refactoring nightmares — so we built GraphORM: a type-safe Python ORM for RedisGraph/FalkorDB using pure Python objects. What it does Instead of fragile Cypher: query = """ MATCH (a:User {user_id: 1})-[r1:FRIEND]->(b:User)-[r2:FRIEND]->(c:User) WHERE c.user_id <> 1 AND b.active = true WITH b, count(r2) as friend_count WHERE friend_count > 5 RETURN c, friend_count ORDER BY friend_count DESC LIMIT 10 """ You write type-safe Python: stmt = select().match( (UserA, FRIEND.alias("r1"), UserB), (UserB, FRIEND.alias("r2"), UserC) ).where( (UserA.user_id == 1) & (UserC.user_id != 1) & (UserB.active == True) ).with_( UserB, count(FRIEND.alias("r2")).label("friend_count") ).where( count(FRIEND.alias("r2")) > 5 ).returns( UserC, count(FRIEND.alias("r2")).label("friend_count") ).orderby( count(FRIEND.alias("r2")).desc() ).limit(10) Key features: • Type-safe schema with Python type hints • Fluent query builder (select().match().where().returns()) • Automatic batching (flush(batch_size=1000)) • Atomic transactions (with graph.transaction(): ...) • Zero string escaping — O'Connor and "The Builder" just work Target audience • AI/LLM agent devs: store long-term memory as graphs (User → Message → ToolCall) • Web crawler engineers: insert 10k pages + links in 12 lines vs 80 lines of Cypher • Social network builders: query "friends of friends" with indegree()/outdegree() • Data engineers: track lineage (Dataset → Transform → Output) • Python devs new to graphs: avoid Cypher learning curve Data insertion: the real game-changer Raw Cypher nightmare: queries = [ """CREATE (:User {email: "alice@example.com", name: "Alice O\\'Connor"})""", """CREATE (:User {email: "bob@example.com", name: "Bob \\"The Builder\\""})""" ] for q in queries: graph.query(q) # No transaction safety! GraphORM bliss: alice = User(email="alice@example.com", name="Alice O'Connor") bob = User(email="bob@example.com", name='Bob "The Builder"') graph.add_node(alice) graph.add_edge(Follows(alice, bob, since=1704067200)) graph.flush() # One network call, atomic transaction Try it in 30 seconds pip install graphorm from graphorm import Node, Edge, Graph class User(Node): __primary_key__ = ["email"] email: str name: str class Follows(Edge): since: int graph = Graph("social", host="localhost", port=6379) graph.create() alice = User(email="alice@example.com", name="Alice") bob = User(email="bob@example.com", name="Bob") graph.add_node(alice) graph.add_edge(Follows(alice, bob, since=1704067200)) graph.flush() GitHub: https://github.com/hello-tmst/graphorm We'd love honest feedback: • Does this solve a real pain point for you? • What's missing for production use? • Any API design suggestions?

Share card

Actual performance

5points
6comments
Did not reach leaderboard

Launch Intel predictions

Analyze your own launch →
Indie HackersFits the IH revenue-focused audience · Missing: supports, reddit linkedin, podcasting
89%89% predicted probability of success on Indie Hackers, based on ML models trained on real launch data.
best fitHighest predicted score across all platforms for this description.
Product HuntOn track for Day 1 leaderboard · Strong signals: agent, user, new · Missing: mac, agents, macos
78%78% predicted probability of success on Product Hunt, based on ML models trained on real launch data.
Hacker NewsStrong engagement from HN community · Strong signals: 000, io · Missing: https docs, excited, just released
54%54% predicted probability of success on Hacker News, based on ML models trained on real launch data.
nativeThis product was originally launched on this platform.
TrustMRRLess likely to generate early MRR · Missing: mobile apps, ios, personal
44%44% predicted probability of success on TrustMRR, based on ML models trained on real launch data.
AppSumoMay struggle as an AppSumo deal · Strong signals: host, builder · Missing: plus, platform, intuitive
44%44% predicted probability of success on AppSumo, based on ML models trained on real launch data.
Acquire.comPre-revenue stage for this audience · Strong signals: active · Missing: arr, mrr, revenue
23%23% predicted probability of success on Acquire.com, based on ML models trained on real launch data.
BetaListMay not resonate with beta-testers · Missing: web3, chat, crypto
0%0% predicted probability of success on BetaList, based on ML models trained on real launch data.

Incorrect prediction on native model

Similar products

Re
Rescue – type-safe exceptions for Python38%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

Rescue – type-safe exceptions for Python

Hacker News7
I
I wrote a safe templating langage POC for python31%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

I wrote a safe templating langage POC for python

Hacker News2
A
A sum-type decorator for python47%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

A sum-type decorator for python

Hacker News2
I
I made type-safe Firestore ORM and call it Typesaurus52%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

I made type-safe Firestore ORM and call it Typesaurus

Hacker News3
C8
C8x type safe K8s deployments42%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

C8x type safe K8s deployments

Hacker News2
Ne
Newzly-phantom – Asynchronous type-safe Scala DSL for Cassandra49%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

Newzly-phantom – Asynchronous type-safe Scala DSL for Cassandra

Hacker News16
I
I built type-safe dynamic arrays for C after struggling with stb_ds.h52%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

I built type-safe dynamic arrays for C after struggling with stb_ds.h

Hacker News1
A
A Python with Hindley-Milner-like type annotations, compiling to C63%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

A Python with Hindley-Milner-like type annotations, compiling to C

Hacker News134
Ma
Math Type for Python57%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

Math Type for Python

Hacker News4
NextStd
NextStd51%Launch Intel prediction score: how likely this product is to succeed on its source platform, based on its name, tagline, and description.

Type-Safe alternative to stdio.h for C

Product Hunt+1