FLUTTER ECOSYSTEM

adityapandey9/flutter-gun

该库是 GunDB js 在 Dart 和 Flutter 中的移植版本。支持多个用户之间的点对点加密通信。GUN 是一套工具生态系统,可让您构建由社区运行且加密的应用程序——类似于开源 Firebase 或去中心化 Dropbox。

flutter-gun 项目封面
Stars
32
Forks
6
最近推送(UTC)
2023年3月9日
项目状态
未归档
Aditya kumar pandey GitHub avatar
GITHUB User

Aditya kumar pandey ↗

Founder & Full-Stack AI Engineer | Bytesflow.ai

Bytesflow.aiKolkata
语言DartHTMLRubySwiftKotlinObjective-C

技术话题

此仓库发布的插件

使用的依赖

依赖清单 11 项

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

展开 / 收起项目 README

Flutter GunDB

This library is a port of GunDB js for the Dart and Flutter. P2P encrypted Communication between multiple users. GUN is an ecosystem of tools that let you build community run and encrypted applications - like an Open Source Firebase or a Decentralized Dropbox.

Note: Some APIs like certify and user, not implemented completely (Trying to do so ;) )

Demo

Demo Gif

Features

  1. Multiplayer by default with realtime p2p state synchronization!
  2. Graph data lets you use key/value, tables, documents, videos, & more!
  3. Local-first, offline, and decentralized with end-to-end encryption.

Decentralized alternatives to Zoom, Reddit, Instagram, Slack, YouTube, Stripe, Wikipedia, Facebook Horizon and more have already pushed terabytes of daily P2P traffic on GUN.

Getting started

Add library to your app.

flutter pub add flutter_gundb

or

.....
dependencies:
  flutter_gundb: ^0.0.3
....

Usage

Short example is below. Added longer examples to /example folder.

import 'package:flutter_gundb/flutter_gundb.dart';

void main() {
    final chainGunClient = FlutterGunSeaClient();
    
    final getAditya = gun.get('aditya');
    getAditya.put({
      name: "Aditya Kumar Pandey",
      email: "janatig@janatig.com",
    });
    getAditya.on((a, [b, c]) {
      print('Getting Value:: $a');
    });
}

Example on how to store the data locally.

import 'package:flutter_gundb/flutter_gundb.dart';

void main() async {
    await initializeFlutterGun();
    final chainGunClient = FlutterGunSeaClient(registerStorage: true);
    
    final localFirstStorage = gun.get('local-first-storage');
    localFirstStorage.put({
      name: "Testing the Local First",
      anime_website: "animeloved.com",
    });
    localFirstStorage.on((a, [b, c]) {
      print('Getting Value:: $a');
    });
}

Example How to send other user encrypted data

import 'package:flutter_gundb/flutter_gundb.dart';

void main() {   
    () async {
      var aditya = await pair();
      var pandey = await pair();

      // On Aditya
      var shared = await secret(pandey.epub, aditya);
      var shared_enc = await encrypt('<Your Shared Data>', shared);
      
      // Now Share `shared_enc` to your friend pandey (Send shared_enc and aditya's public key)
      
      // On Pandey Side

      var decryptKey = await secret(aditya.epub, pandey);
      var decryptedData = await decrypt(shared_enc, decryptKey);
      
      // `decryptedData` This is your Decrypted Data
    } ();
}

Additional information

Some APIs like certify and user. If anyone wants to help, kindly send a PR. I would appreciate it. Thank you in advance :)