All Projects → hyperfiddle → Hyperfiddle

hyperfiddle / Hyperfiddle

Licence: epl-1.0
a Hypermedia Function

Programming Languages

clojure
4091 projects
clojurescript
191 projects

Projects that are alternatives of or similar to Hyperfiddle

Vue Dataflow Editor
Vue 2 dataflow graph editor
Stars: ✭ 73 (-82.7%)
Mutual labels:  graph, dataflow
Shenzhen Go
Experimental visual Go environment
Stars: ✭ 450 (+6.64%)
Mutual labels:  graph, dataflow
Blocks.js
JavaScript dataflow graph editor
Stars: ✭ 165 (-60.9%)
Mutual labels:  graph, dataflow
Pyflowgraph
Python Module for displaying flowgraphs using Pyside or PyQt.
Stars: ✭ 61 (-85.55%)
Mutual labels:  graph, dataflow
Vue Blocks
Vue2 dataflow graph editor
Stars: ✭ 201 (-52.37%)
Mutual labels:  graph, dataflow
Graph Visualizer
Visualizer for your Playable graphs
Stars: ✭ 367 (-13.03%)
Mutual labels:  graph
Samples
Sample projects using Material, Graph, and Algorithm.
Stars: ✭ 386 (-8.53%)
Mutual labels:  graph
Ggnn.pytorch
A PyTorch Implementation of Gated Graph Sequence Neural Networks (GGNN)
Stars: ✭ 360 (-14.69%)
Mutual labels:  graph
Rdf
RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.
Stars: ✭ 353 (-16.35%)
Mutual labels:  graph
Kglib
Grakn Knowledge Graph Library (ML R&D)
Stars: ✭ 405 (-4.03%)
Mutual labels:  graph
Competitive coding
This repository contains some useful codes, techniques, algorithms and problem solutions helpful in Competitive Coding.
Stars: ✭ 393 (-6.87%)
Mutual labels:  graph
Java Algorithms Implementation
Algorithms and Data Structures implemented in Java
Stars: ✭ 3,927 (+830.57%)
Mutual labels:  graph
Graphology
A robust & multipurpose Graph object for JavaScript & TypeScript.
Stars: ✭ 377 (-10.66%)
Mutual labels:  graph
Joern
Open-source code analysis platform for C/C++/Java based on code property graphs
Stars: ✭ 386 (-8.53%)
Mutual labels:  dataflow
Pytm
A Pythonic framework for threat modeling
Stars: ✭ 363 (-13.98%)
Mutual labels:  dataflow
Redis Graph
A graph database with Cypher query language as a Redis module
Stars: ✭ 404 (-4.27%)
Mutual labels:  graph
Communities
Library of community detection algorithms and visualization tools
Stars: ✭ 348 (-17.54%)
Mutual labels:  graph
Easy3d
A lightweight, easy-to-use, and efficient C++ library for processing and rendering 3D data
Stars: ✭ 383 (-9.24%)
Mutual labels:  graph
Cdp
Code for our ECCV 2018 work.
Stars: ✭ 391 (-7.35%)
Mutual labels:  graph
Awesome Knowledge Graph
A curated list of Knowledge Graph related learning materials, databases, tools and other resources
Stars: ✭ 382 (-9.48%)
Mutual labels:  graph

hyperfiddle.cljc — a Hypermedia Function http://www.hyperfiddle.net/

Hyperfiddle isolates your web clients from I/O, so your code can stay pure. If React.js is managed DOM, Hyperfiddle is managed network and database. This enables a new kind of composable primitive for constructing web software, with paradigm-changing implications.

Dependency coordinates — Todo

[com.hyperfiddle/hyperfiddle "0.0.0"]

Motivation

The hardest part of web dev is I/O: data sync between database, various services, UI and then back to the database. An async, slow, failure-prone concern wired throughout the full stack, and the reason why we all code the same web boilerplate over and over again, year after year.

Hyperfiddle makes data-sync invisible with immutability:

  • Fiddle graph captures service inter-dependencies as data (query X depends on queries Y and Z)
  • Fiddle graph captures application essense (API, UI, database) as one concern – no frontend/backend dichotemy
  • Optimizing I/O runtime – data sync reduces to a graph partitioning problem
  • Managed data sync – Userland is not concerned with effects, async, errors or latency
  • Transport layer independence – swap transport strategies (e.g. REST, websocket) without changing your app
  • Dynamic transport strategies can automatically balance caching and latency
  • Platform independence – run on any platform (e.g. browser, Node, mobile) without changing your app

Framework or library? Neither: Hyperfiddle is server infrastructure, like Apache or Nginx. There is a Clojure library for making custom servers (e.g. integrations and control over data sync) and a client library for talking to it.

How does it work?

The Cognitect stack has the right primitives to build "functional" data sync by orienting the entire stack around values and immutability.

  • Clojure/CLJC - Value-oriented programming on any platform
  • EDN - Extensible notation for values
  • Transit - Protocol for value interchange between foreign platforms
  • Datomic - Database as a value
  • (supplemented with React.js/Reagent)

Hyperfiddle uses the Cognitect stack as a basis to abstract over client/server data sync for APIs, by extending Datomic's immutable semantics to the API. Unlike REST/GraphQL/whatever, Hyperfiddle's data sync composes.

Managed I/O means, as a web dev, you are no longer concerned with remote data fetching or coding HTTP backends. In fact there is hardly any "web programming" left at all. But managed I/O is not the point. The point is: what does managed I/O make possible that wasn't possible before?

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].