Last updated 2 years ago
Flutter is the fastest growing mobile app developer community but currently there's no Flutter library support in the Cardano ecosystem.
Publish an open-source Flutter library to encourage mobile app development in the Cardano ecosystem.
This is the total amount allocated to Cardano Wallet Flutter SDK.
## Project Deliverables:
* https://github.com/reaster/blockfrost_api - Dart binding to BlockFrost Cardano REST API.
* https://github.com/reaster/cardano_wallet_sdk - A Cardano wallet library written in Dart.
* https://flutter-cardano-wallet.web.app/ - A live Flutter wallet app built on the cardano_wallet_sdk. TRY ME!
## Why Flutter?
Flutter is a cross-platform mobile framework that allows you to develop one code-base that runs on both iOS and Android devices.
Flutter is known for its beautiful user interfaces, simplicity, speed, modern design and ROI value. As a developer who has maintained both iOS and Android versions of the same app, I can attest that Flutter is more productive than either platform, meaning you get more than two for the price of one. Despite only being around for 4 years, it's
already caught up to market leader, React Native. Finally, with the full backing of Google, it won't be going away anytime soon. For further reading:
* https://medium.com/flutterdevs/the-growth-of-flutter-development-3years-after-the-birth-of-alpha-78baee809dff
* https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/
## Why a Wallet?
A wallet is a foundational component of any app that wishes to interact with the Cardano ecosystem by allowing the sending and receiving of ADA to the Cardano blockchain. Having an open-source wallet allows developers to build value on top of this basic functionality.
## Cardano Adoption Accelerant
As with most digital technologies, public adoption of Cardano will occur largely on mobile platforms. Inspiring and facilitating the Flutter developer community could double the Cardano mobile apps published in the coming years.
## Goals and Scope
Duplicating everything written in Haskell or JavaScript needed to write a full function wallet app in Dart in one go is not a realistic goal. Instead, the aim will be to lay the foundation for future development by gathering needed Dart resources and implementing a few representative tasks to serve as templates for further development. Likewise, this may identify possible missing components in the Dart ecosystem. Leveraging BlockFrost eliminates the need to manage or communicate with a Cardano node. And mostly importantly, removing the mobile app itself to a separate (possible future Catalyst) project eliminates all UI costs.
## Deliverable Breakdown
**-- https://github.com/reaster/blockfrost_api**
Serving as the means of communication with the Cardano blockchain, this component is largely a code generation artifact produced from the OpenAPI BlockFrost REST specification (https://docs.blockfrost.io). It should be 90% completed before this project is funded.
**-- https://github.com/reaster/cardano_wallet_sdk**
A full wallet SDK is a complex piece of software, adhering to the highest levels of security and at a mimimum, requires the following functionality:
* list, create, update, or delete wallets
* create, submit or track transactions and their fees
* create, import and manage wallet addresses
* manage and communicate with various networks
* manage private and public keys
* sign and validate messages
* collect, store and manage user information
The primary focus of this project will be assembling the needed resources and writing a few strategically choose features to demonstrate the feasibility of a Dart-based Cardano wallet and lay the ground work for future development. To limit scope, initial service implementations will use hard-coded data (public/private keys, wallet addresses, etc.) and be limited to the Shelley protocol. API organization will mirror existing Haskell and JavaScript libraries. The work will focus on the following core tasks:
* BlockFrost account setup
* list transactions using the BlockFrost API
* implement cryptographic functionality on an as-needed basis
* implement CBOR binding based on shelley.cddl and validate functionality with tests
* implement ADA receive transaction
* implement ADA send transaction
* implement a price oracle (optional)
* generate and store public/private keys (optional)
* implement wallet generation (optional)
Staking, native tokens, token exchange, smart contracts and other features are beyond the scope of this project.
**-- https://flutter-cardano-wallet.web.app/**
To lower the scope and cost of this project, it was decided to not open source the UI component at this time. Instead, this will be publicly accessible as a live demo project on the web. (Did I mention Flutter 2.0 now supports web deployments?)
In addition to demonstrating and validating functionality, a working UI keeps the use cases focused, improving SDK design.
Inspired by the MetaMask wallet design, this app will initially use mock data which will gradually be replaced by cardano_wallet_sdk provided (testnet) data as each function is completed. The UI layout should be 90% finished before this project is funded and development will not be billed to this project. If the community shows interest in supporting this app, it will be offered as a project in a future funding round.
## Roadmap and Performance
Code will be continually pushed to GitHub throughout the duration of the project and catalyst funded work should be completed 2 months after the start date.
Future work will be driven by community interest and developer adaption.
Performance indicator (KPI) will be downloads and developer involvement in these Github libraries. Any downloads in the first two months would be a good short-term indicator. Longer term, having a few serious developers contribute or fork these libraries, or seeing competing Flutter Cardano modules developed would be cause for celebration.
## Budget
The budget is for 100 hours of development time at $100 USD/hour. Hours will be tracked in a Google spreadsheet and made available on request. The UI work will not be billed to this project unless reviewers want it included, in which case I'd request another 100 hours.
## License
The entire outcome of this project will be open-sourced under Apache License 2.0.
NB: Monthly reporting was deprecated from January 2024 and replaced fully by the Milestones Program framework. Learn more here
2.5 years Flutter/Dart
10 years iOS/Android
25 years Server-side Java
9 years FinTech
6 years tooling/code generation
3 months Haskell