onflow / developer-grants

Grants for developers that contribute to the broader developer ecosystem
Apache License 2.0
50 stars 18 forks source link

Flow Flutter SDK #240

Closed christian-rogobete closed 8 months ago

christian-rogobete commented 11 months ago

Flow Flutter SDK

Grant category

Developer tools / services

Description

The goal of the Flutter SDK for Flow is to make it easier for Flutter developers to interact with the Flow Network by abstracting the Flow specific logic, so that developers can focus on implementing app logic.

Problem statement

Many developers use Flutter to implement multi-platform applications from a single codebase. It supports the development of applications on six platforms: iOS, Android, Web, Windows, MacOS and Linux. Flutter excels as a cross-platform development framework by offering features such as:

Currently we are not offering an easy way for Flutter developers to access the Flow Network.

Target audience

Flutter developers.

Evidence for the need

Flutter is the most popular cross-platform mobile framework used by global developers. See here and here.

I am the main developer and maintainer of the Flutter Stellar SDK. The SDK has 67 Stars on GitHub and is used to access the Stellar Network. It is used by many onboarding Wallets and other applications that interact with the Stellar Network.

Flutter is often used to implement applications such as wallets but also for game development. Here is an example for game development with Flutter: SuperDash with Flutter.

Proposed solution

Implement a Flutter SDK for the Flow Network.

Impact

The Flow Flutter SDK will make it easy for Flutter developers to access the Flow Network. This SDK will increase the number of projects using the Flow Blockchain.

Milestones and funding

The Flutter SDK for Flow will be implemented with Dart, can be used on all platforms supported by Flutter and will offer following functionality:

The open source SDK will include documentation, examples and tests on GitHub. The package will be published to pub.dev.

Milestone Deliverables Timeline Risks USD proposal
1. Query Data from Flow Access Nodes see below 6 weeks after grant approval - 20.000
2. Execute scripts see below 8 weeks after grant approval - 6.000
3. Transactions, Keys and Accounts see below 12 weeks after grant approval - 12.000
4. FCL implementation see below 18 weeks after grant approval - 20.000
Maintenance Resolving issuing and fixing bugs. Continuous improvement and expansion of the SDK in line with quarterly roadmaps. after Milestone 4. - 10.000 / per quarter after approved roadmap

Total funding proposed: $58.000 (Milestones 1 - 4)

Submission deliverables:

[Deliverable 1]: Query Data from Flow Access Nodes

  1. Brief description: You can query data from any Flow Access Node using the SDK. The SDK supports both gRPC and HTTP methods of communication with Access Nodes.
  2. How to measure completion: Source code, docs and tests available on GitHub. First release of the SDK published to pub.dev. The SDK will be able to query following data:
    • Blocks: Block by Id, latest block, block by height, block Header by Id, latest block Header, block header by height.
    • Collections: Collection by Id
    • Transactions: Transaction by Id, transactions by block Id.
    • Transaction results: Transaction result by transaction Id, transaction results by block Id.
    • Accounts: Account by address at latest block, account by address at block height.
    • Events: Events for height range, events for block Ids.
    • Streaming/Subscriptions: Subscribe/stream events, subscribe/stream execution data.
    • Other: Network parameters, execution result for block Id, ping
  3. Estimated date of completion: 6 weeks after grant approval
  4. Budget: $20.000

[Deliverable 2]: Execute scripts

  1. Brief description: You can execute scripts at any Flow Access Node using the SDK. The SDK supports both gRPC and HTTP methods of communication with Access Nodes.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev. The SDK can execute scripts as follows:
    • execute script at latest block: executes a read-only Cadence script against the latest sealed execution state.
    • execute script at block id: executes a ready-only Cadence script against the execution state at the block with the given Id.
    • execute script at block height: executes a ready-only Cadence script against the execution state at the given block height.
  3. Estimated date of completion: 8 weeks after grant approval
  4. Budget: $6.000

[Deliverable 3]: Transactions, Keys and Accounts

  1. Brief description: You can sign and submit transactions, generate keys and create accounts using the SDK.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev. The SDK offers following features:
    • Generate key pairs: ECDSA key pairs on the P-256 (secp256r1 or secp256k1) elliptic curve.
    • Create accounts: Supported hashing algorithms: SHA2_256, SHA2_384, SHA3_256, SHA3_384, Keccak_256
    • Sign transactions: In memory signing of transactions (multiple times by one or more parties)
    • Submit transactions: Send signed transactions to the Flow Network.
  3. Estimated date of completion: 12 weeks after grant approval
  4. Budget: $12.000

[Deliverable 4]: FCL implementation

  1. Brief description: You can interact with FCL compatible wallets in order to authenticate the user and authorize transactions on their behalf.
  2. How to measure completion: Source code, docs and tests available on GitHub. A new version of the SDK is published to pub.dev. The SDK offers following features: configuration, discovery, authentication, pre-authz, authorization, user-signature, authn-refresh, account-proof as described in FLIP45.
  3. Estimated date of completion: 18 weeks after grant approval
  4. Budget: $20.000

Extended roadmap:

Keep the SDK up to date, maintain and make proposals for extending and improving the SDK (e.g. support for templates).

Team

Name Nickname Role Bio Contact
Christian Rogobete Soneso Developer MCS. Blockchain developer since 2017. Main developer and maintainer of the Flutter Stellar SDK and the iOS Stellar SDK. c.rogobete@soneso.com
christian-rogobete commented 11 months ago

Hi guys, are you still reviewing my submission? I would be very happy to receive your feedback.

christian-rogobete commented 10 months ago

Hi @SeanRobb, can you please give me some feedback on my proposal? Are you interested in a Flutter SDK as described above?

christian-rogobete commented 8 months ago

My offer is no longer valid. It was ignored for months.