パッケージ、リポジトリ、アプリカテゴリを検索

GitHub リポジトリadityapandey9/flutter-gun

flutter-gun

このライブラリは、DartおよびFlutter向けのGunDB jsのポートです。複数ユーザー間のP2P暗号化通信を可能にします。GUNは、コミュニティが運用し、暗号化されたアプリケーションを構築できるツールのエコシステムであり、オープンソース版Firebaseや分散型Dropboxのようなものです。

flutter-gun のプロジェクト画像
スター
32
フォーク
6
最終プッシュ(UTC)
2023/03/09
プロジェクト状態
公開中

元の README

以下は英語原文のスナップショットです。最新版は GitHub をご覧ください。

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 :)

Aditya kumar pandey GitHub avatar
GitHub 作者

Aditya kumar pandey ↗

Founder & Full-Stack AI Engineer | Bytesflow.ai

Bytesflow.aiKolkata
言語DartHTMLRubySwiftKotlinObjective-C

カテゴリー

このリポジトリが公開するパッケージ

使用している依存関係

依存関係一覧 11 件

プロジェクトに合うリポジトリを選ぶには?

用途で絞り込み、開発状況を比較し、採用前に元のリポジトリで要件を確認しましょう。

  1. 名前・作者・説明で検索し、技術トピックで絞り込みます。
  2. スター、フォーク、最近のプッシュを比較します。スターは関心の目安であり、品質の保証ではありません。
  3. 利用前に GitHub で README、ライセンス、Issues を確認します。

情報源と管理

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗