Awesome GUN - amark/gun GitHub Wiki
✨Awesome Gun✨
GUN is a realtime, decentralized, offline-first, graph protocol to sync the web. Guide Last Updated: 4/5/2024; Added Gustav's Guide, Bullet-Catcher, Gun-Vue again, Oshu-Gun, Buns And Guns, new Gun Azure Adapter
- GUN Guides
- Apps
- Plugins / Helpers
- Framework Integrations
- Alternative Implementations
- Storage Adapters
- Deployment
GUN Guides
Written Guides
- Gustav Corpas' take: Decentralized Database Mastery: A Unified Guide from Basics to Advanced with gunDB - Series Began, Jan 5th 2024; Intro to GUN, Graph Nodes, and Decentralized Systems
Alternate Javascript Engine
- BUNS and GUNS by JamesGibson14 James Gibson's use of BUN for JS Runtime for GUN
Permissions Systems
- Bullet Catcher by zrrzzt; By Geir Gåsodden "Restrict Put on GUN"; Create an inline reject/accept policy framework for changes to GUN DB Graphs, outside of Certificates (see Gustav's guide)
- Gun-Restrict by zrrzzt by Geir Gåsodden, Run GUN server with three methods of access: to GUN server directly, Authenticated Service Port, and Public Service Port
Framework Implementation Libraries
- See Gun-vue, as demonstration and Vue framework library; lower in Framework Implementations
Multi-Videoconferencing
- See Meething, a multi-user online conference software implementing GUN as NAT Relay, Database, and Network, thanks to a coalition of work and gifts/grants.
Alternate Networking Socket Protocols
- Dletta's DHT-Proxy for GUN, allowing GUN nodes and peers to find each other over DHT versus NAT-relaying through a GUN relay service. And Johannes Valbjørn's gun_torrent_signaling signaling based on Dletta's work.
- Oshu-Gun is a service that implements a POP-like mail server. It and other service protocols are listed in the Apps section and Plugins / Helpers section below.
Apps
- live-loc demo
- A decentralized live location sharing and navigation platform ~ By Raghav Yadav
- splitio demo
- A decentralized, p2p, e2ee, splitwise clone (bill splitting / expense-sharing webapp)
- readthis.space demo
- It's a decentralized, throwaway authoring platform.
- GUN Kanban demo
- A P2P KanBan!
- gun-poll demo
- Polls
- gun-calendar demo
- A calendar / scheduling app
- gun-editor
- An experimental collaborative editor (partial implementation)
- NotABug
- A decentralized link aggregator with reddit’s classic, open source UI
- Iris
- Iris is a social networking application that stores and indexes everything on the devices of its users and connects directly with peers who run the application - no corporate gatekeepers needed.
- LiveCodeStream
- Broadcast with ease, straight from your browser
- PushToTalk
- A Push to Talk demo with GUN db
- Maskbook
- Encrypt your posts & chats on You-Know-Where. Allow only your friends to decrypt.
- streams
- An experimental nanoblogging engine / anonymous group chat / outliner / productivity tool
- GiveMeCredit
- A Social media application designed to give communities political independence
- Trace
- ~ By PsychoLlama - live demo
- Connect-4
- ~ By PsychoLlama - live demo
- TodoMVC
- GoShareData
- An enterprise system for data sharing database data with colleagues
- JS-Trafficlights
- Trafficlights manager for limited resource access, like VPNs or remote desktops
- SENTINL
- Clustering the Kibi/Kibana Alerting & Reporting Application (watcher) ~ By lmangani and Sergey Bondarenko
- paStash
- Spaghetti I/O Event Processing, Interpolation, Correlation with Gun persistence ~ By lmangani
- fastify-gundb
- Fastify is a Fast and low overhead modular web framework, supporting persistence layer using Gun ~ By lmangani
- PiTherm
- Raspberry Pi thermostat application using Gun to sync client UIs ~ By paullj1
- Gewd Notes
- Workflowy clone using gun ~ By negue
- CHAIN
- Point of sale using gun w' no signup ~ By VETO
- OVGrid - Open Virtual Grid
- WebXR Educational Virtual World - Real-time shared experiences. ~ By estebanrfp
- Project progress videos - @ovgrid
- dKanban demo
- Distributed Real-time Kanban board that stores data in Gun. ~ By estebanrfp
- gun-voting demo
- Real-time distributed voting system embeddable in an iframe using Gun, Now chronological method, test it and share a voting link!. ~ By estebanrfp
- TheSource.fm demo
- The artificial intelligence that tuned the universe. ~ By The Resistance Foundation
- Ixnay demo
- Distributed manufacture and blueprint sharing. ~ By Antony Perillo
- Agregore
- a p2p web browser that uses gundb along with other p2p protocols. ~ By RangerMauve
- Oshu-gun
- a POP-like mail system, supporting invitation and group chat links
- gun-overlays
- Livestreaming Overlay along with Admin Interface, ala other broadcasting software controllers
- CIFNEW
- Decentralized Career Information For NewFish, a decentralized career information sharing application.
Plugins / Helpers
- gun-avatar
- SEA public key visualizer - great for gun user avatars and room backgrounds
- GunStreamer
- Streaming component for Gun db.
- gun-inspector
- Gun Node visualizer and editor
- visualGraph
- Gun Utility to Traverse Graph and use d3.js to visualize
- gun-graphin
- Gun Graph visualization and Navigation using Graphin library
- Gun-scape
- GunDB Cytoscape Graph Visualizer + Live Editor
- CRDT Continuous Sequence
- Makes CRDT sets orderable
- gunjs trust share key
- gun.js Trust and Share Key functions simple.
- polyGun
- GunDB Polyglot Server [ https/wss + letsencrypt ]
- gun-host
- GunDB HTTP/HTTPS Server and API ~ By Sergey Bondarenko
- gun-kibana-graph
- Visualization Plugin to display Gun graphs in Kibana ~ By lmangani
- gun-synclist Get an Array with full nodes on init, after that only the changed - full - node, its soul and its index. ~ By Stefdv
- gun-tag Tag, untag, filter and find intersects on nodes ~ By Stefdv
- gun-schema
- Schema validation module for node and the browser ~ By RangerMauve
- labelmaker
- Organize and index data into groups with tags ~ By PsychoLlama
- onward
- Listen for changes on an entire document at once ~ By amark
- reticle
- Namespace your data, preventing naming conflicts and adding clear separation between apps ~ By PsychoLlama
- synchronous
- gun-ws on Github
- load
- Load full document structures to Gun ~ By IMGNRY
- gun-most
- Extends gunDB with the ability to chain into most.js observables ~ By ctrlplusb
- graphql-gun
- Augmented graphql query interface for Gun
- bullet
- Alternative syntax to Gun, promise support, utility modules, and easy Gun adapter events.
- gun-appendOnly
- Support append only node keys on a first-come-first-served basis and allow modification to key content based on SEA users
- gun-hue
- Explore and change your hue lighting with gun! ~ By PsychoLlama
- gun-ui-lcd
- Component to attach an html lcd to Gun ~ By Stefdv
- gun-util
- Convenience and utility methods for Gun, including:
- DateTree: A time graph for efficient storage, iteration and lookup of time based data.
- Encryption: Easy bulk encryption.
- GunUser: Promises and safety checks for authentication.
- Convenience and utility methods for Gun, including:
- griffin
- A decentralized document-oriented database. Built with Gun and implements an API and query language similar to MongoDB.
- Lone Wolf Protocol
- A decentralized messaging protocol built with Gun.
- gun-fetch
- Use Gun with fetch and a uri scheme. ~ By resession
- Gunsafe (alpha API & CLI), NPM: Gunsafe
- A decentralized secure vault API and CLI built on Gun chain, secured by SEA, with gunsafe vault synchronization across devices ~ By Daniel Raeder
Framework Integrations
- @gun-vue
- A collection of Vue 3 composable functions, pluggable components and tech demos of using Gun with Vue reactivity system.
- Gun Phaser Multiplayer Boilerplate
- A boilerplate for starting a multiplayer web game project with Phaser + Gun by mimiza
- Google Cloud Function
- An example of using Google Cloud Function + Gun by mimiza
- svelte gundb example
- This is a project template for Svelte apps with the gun database.
- Remix.GUN - React v18
- Project template for deploying Remix http server/GUN relay server. Shipped with loader/ action context api.
- sapper/svelte gundb example
- This is a project template for Sapper/Svelte apps with the gun database. The server is served alongside the page and accessing at location.origin + "/gun". Sapper is a framework designed with svelte to facilitate offline first functionality and all svelte goodness.
- Weir
- Auto-generate react component data bindings to gundb nodes
- vue-gun
- Vue plugin to add Gun integration ~ By sjones6
- gun-react-native
- A distribution of Gun designed to work with React Native out of the box ~ By sjones6
- as
- Mark's personal UI Framework with deep assumptions and opinionated bindings to GUN ~ By amark
- gun-realm
- A React Native RealmJS adapter for GunJS ~ By sjones6
- gun-ui-gauge
- (Still under development to fit the latest Gun version ( 0.9.x ) )
- Add a GunDB controlled gauge to your webpage ~ By Stefdv
- Node-RED ~ By TotallyInformation
- purescript-bf-gun
- gundb bindings for purescript ~ by Yornaath
Alternative Implementations
- Typescript: ChainGun
- Java: JGUN, Gun.Java (not implemented fully)
- Python: PyGUNDB
- Golang: GUNDB Port Go, Esgopeta
Storage Adapters
-
gun-level A LevelDB adapter that works with the levelDB module ecosystem ~ By PsychoLlama
-
gun-level-browser-indexedDB Example of LevelDB binding with indexedDB in the browser with GUN and choo ~ By zrrrzzt
-
gun-mongo A MongoDB Adapter that stores entire nodes in Mongo documents ~ By sjones6
-
gun-mongo-key A MongoDB Adapter that stores nodes as key:value pairs in Mongo documents ~ By sjones6
-
gun-db(on Github) Sqlite/ODBC storage adapter for Gun ~ By d3x0r
- Depends on sack.vfs. Can provide encryption for storage.
-
gun-file(on Github) Local Storage adapter for Gun ~ By d3x0r
- Depends on JSON6
-
gun-cassandra Experimental Cassandra / Elassandra persistence layer for Gun ~ By lmangani
-
gun-elastic Experimental Elasticsearch persistence layer for Gun/Flint ~ By lmangani
-
gun-flint Micro-framework for building Gun adapters ~ By sjones6
-
gun-adapter-perf https://github.com/sjones6/gun-adapter-perf ~ By sjones6
Examples
Examples, demos and tools demonstrating Gun features and capabilities
-
GitHub Examples Original, up to date Gun examples
-
gun-scape GunDB Cytoscape Graph Visualizer with Live Editor
-
Next.js Example of how to get started with Next.js and GUN!
-
GunStore.io Storing data in Gun DB by sending simple HTTP requests & custom URLs
-
postMessage postMessage API integration for iframes. inner
-
Gun Voice Recording Simple audio recording using MediaRecorder with Gun.
-
Gun custom index An example of how you can index a list of items based on object property (in this case, index a list of people by gender and retrieve only the people of a certain gender in an efficient way)
-
User catalogue An example of how you can list all the users in your app based on registering users against a content addressed catalogue
React
-
gundb-react-todolist Simple todo-list using gun and react-gun
-
react minimalist example with hooks Minimalist example on how use gun with basic React hooks such as
useState
anduseEffect
and functional components:- subscribe to stream after mounting with
useEffect
hook - unsubscribe from stream when unmounting component
- create an item in a node
- list all items from that node
- delete item from node
- subscribe to stream after mounting with
-
react text search by indexed text Example on how to save a list of items in Gun, index them by name (or whatever prop you need) and perform a very efficient search.
-
gunDB + React + Express user auth example with:
- sign up/sign in/change password
- update user's "public" profile
- multi-tab session syncing
- access control using JWT access tokens and SEA certificates
Snippets
Snippets page with various examples of Gun patterns/features.
Deployment
- arsenal-dock A Docker container for running GunJS
Defunct
Items that have succumbed to link rot.
- Items with archived links
- Add any links to Internet Archive / Wayback machine or other sources here!
- These items unfortunately have no known archived links
- creeper.im
- Send public messages to nearby people.
- creeper.im
Archive
The old pages are: (these will be archived after migrated to this page)