[GENERAL] Name and Surname of Main Applicant
Aditya Bharadwaj
[GENERAL] Email address of Main Applicant
adi@nighthawkapps.com
Additional Applicants
Pacu (@pacu on ideascale)
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
11
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language.
No
[GENERAL] Does your project have any dependencies on other organizations, technical or otherwise?
Yes
[GENERAL] If YES, please describe what the dependency is and why you believe it is essential for your project’s delivery. If NO, please write “No dependencies.” in this field.
Yes, partially. (Blockfrost APIs and Demeter.run for infrastructure for development)
[GENERAL] Will your project outputs be fully Open Source?
Yes
[GENERAL] If NO, please describe which outputs are not going to be open source. If YES, please write “Project will be fully open source.” in this field.
The project will be fully open source.
[METADATA] Category of Proposal
Dev Tools, API or Library
[METADATA] SDG rating
N/A
[IMPACT] Please describe your proposed solution.
Our goal is to foster the adoption of the Cardano ecosystem by facilitating interaction between native Android and Apple application developers and the Cardano Blockchain. Currently, Cardano offers JavaScript and TypeScript tools that are primarily useful for developers using React-Native stacks. However, these tools have limited applicability for "native" application development using Swift, Kotlin, or Java.
To bridge this gap and empower all types of applications to engage with the Cardano ecosystem, we propose the creation of Software Development Kits (SDKs) in Swift and Kotlin. These SDKs will provide Cardano Wallet functionalities to mobile and desktop platforms within the Apple and Android ecosystems, respectively. This will enable seamless integration of Cardano Blockchain capabilities into a wide range of applications developed using Swift, Kotlin, or Java.
Concrete Artifacts/Deliverables:
Swift:
- Iterative Delivery of Functional Swift SDK for Cardano
- Swift SDK Open Source repository
- Swift SDK distribution over Swift Packages and indexed through https://swiftpackageindex.com/
- Documentation through Swift DoC
- Linux support (best effort)
- Continuous Integration and testing through Github Actions Free tier
Kotlin
- Iterative Delivery of Functional Kotlin SDK for Cardano
- Kotlin SDK Open Source repository
- Kotlin SDK distribution over JitPack
- Documentation
- Kotlin Multiplatform support to enable Desktop / Web / Mobile (best effort)
- Continuous Integration and testing through Github Actions Free tier
Demo Application for Android (Jetpack Compose) and Apple Platforms (Swift UI)
A Software Development Kit (SDK) is a set of tools, libraries, documentation, and sample code that software developers use to create applications for a specific platform, framework, or programming language. It provides a standardized way for developers to build software applications by offering pre-built components and resources that can be easily integrated into their projects.
SDKs are typically created and provided by platform or framework vendors to enable developers to leverage the functionalities and capabilities of their systems. They serve as a bridge between developers and the underlying platform, abstracting complex operations and providing higher-level interfaces for developers to work with.
An SDK usually includes the following components:
- Libraries: These are pre-compiled code modules that contain functions, classes, and methods that developers can use in their applications. Libraries provide ready-made implementations of common tasks, such as handling network communication, file operations, user interface components, and more.
- Documentation: The SDK includes comprehensive documentation that describes the functionalities, features, and usage guidelines for the included libraries and APIs (Application Programming Interfaces). The documentation typically includes tutorials, code samples, reference manuals, and troubleshooting guides to assist developers in understanding and utilizing the SDK effectively.
- Tools: SDKs often provide specialized tools to aid in the development process. These tools may include code editors, debuggers, emulators or simulators, profiling utilities, and building systems, which help developers write, test, and deploy their applications more efficiently.
APIs: APIs are interfaces that define how different software components can interact with each other. SDKs expose APIs that allow developers to access and utilize the platform's functionalities, services, and resources. APIs provide a way for developers to integrate their applications with various system features, such as accessing hardware sensors, utilizing cloud services, interacting with databases, and more.
SDKs can be platform-specific, such as Android SDK for Android app development or iOS SDK for iOS app development. They can also be language-specific, like the Java SDK for Java development or the .NET SDK for .NET framework-based development. Additionally, there are SDKs for frameworks and services like web development frameworks (e.g., React, Angular) or cloud service providers (e.g., AWS, Google Cloud).
[IMPACT] How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Lower Entry barriers to the ecosystem:
Having both Cardano Wallet SDKs for Swift and Kotlin will simplify and accelerate the software development process by providing developers with the necessary tools, libraries, and resources tailored to the Android and Apple platforms and native programming languages. They will enable developers to leverage existing functionality, reduce development time, and build applications that seamlessly integrate with Cardano.
Key enabler factors for Engineering Management and Decision Makers:
We believe that this will make Cardano more attractive than its competitors when it comes to integrating a Blockchain from Android, iOS, iPad, and MacOS. Few blockchain projects provide native support for mobile applications. We believe that this will work as an adoption driver for Cardano.
Decentralization of End-User Cardano ecosystem:
Currently, our ecosystem has a handful of wallets to choose from. We believe in decentralization as the key factor of the democratization of Blockchain technology and the ultimate enabler to get global and massive adoption.
Having a Cardano SDK that supports the biggest mobile platforms natively will increase our outreach immensely, allowing builders from all across the globe to integrate into our Blockchain and provide tailor-made, culturally fit experiences for their users.
The Swift and Kotlin SDKs will allow many non-custodial wallet projects to support and bring Cardano to their users and therefore integrate those users into Cardano.
[IMPACT] How do you intend to measure the success of your project?
Since this is an Open Source project that will be hosted on GitHub. We will use metrics available in GitHub Insights to track the development activity and other metrics such as:
- Issue Tracking: GitHub has a built-in issue-tracking system. You can access the issues by clicking on the "Issues" tab on the repository page. GitHub provides filters and labels to categorize and track issues. By analyzing the number of open and closed issues, as well as the response time for issue resolution, you can assess the project's issue-tracking performance
- Community Engagement: GitHub offers various features to foster community engagement. These include discussions, pull requests, and code reviews. You can track community engagement by monitoring the activity and participation in these features. Additionally, you can integrate external communication channels like mailing lists or forums and link to them in your GitHub repository to capture community engagement metrics beyond the platform
- Commits/Code Changes: GitHub displays the commit history for a repository. You can navigate to the repository's main page and click on the "Commits" tab to view the commit history. The frequency and volume of commits can give you an idea of the project's development activity.
- User Feedback/Satisfaction: GitHub provides a platform for users to submit issues, comments, or feedback. Monitoring the issue comments, pull request discussions, or external feedback linked in your repository can help capture user feedback and satisfaction.
[IMPACT] Please describe your plans to share the outputs and results of your project?
We intend to share the progress in several ways.
Developers and code-savvy folks: Our Code will be open source from day one. Those who like to get involved in the project will be able to track our progress, even test and submit issues through GitHub.
Cardano Community: we will aim for bi-weekly or monthly reports through the Cardano Forums.
General Public / Crypto Enthusiasts: We intend to share briefings of the community reports on social media like Twitter and Threads. Also, we plan to launch Twitter Space to celebrate the kick-off of the project.
[CAPABILITY/ FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability?
Pacu
Twitter - @thecodebuffet
Pacu is a software developer with more than 10 years of experience developing iOS SDKs and Applications for millions of users.
He has developed and delivered the first [iOS SDK for the Zcash blockchain](https://github.com/zcash/ZcashLightClientKit/) which enabled the first shielded transactions using Zk-proofs using an iOS application. He created the first [Zcash Reference wallet](https://github.com/zcash/zcash-ios-wallet) as part of his work at Electric Coin Company.
Pacu also has a Master’s degree in Software Engineering for which he researched and elicited open-source mobile cryptocurrency wallets and published his research in renowned conferences peer reviewed by Software Engineering pioneers at the Pattern Language of Programs Conference of 2022.
Adi
LinkedIn - https://www.linkedin.com/in/adityabharadwaj
Twitter - @aiyadt was part of the Plutus Pioneers 2021 First Cohort
As the Nighthawk Apps Team Lead, with 10 years of experience in the Android ecosystem, has been contributing to the cutting-edge Zero Knowledge Proofs - Zcash ecosystem for the past four years. Their efforts in development, transparency, and accountability have resulted in delivering value through the Zcash Community Grants. Notably, they have launched the first Zcash Shielded-by-Default Wallet (https://nighthawkwallet.com/) on Google Play, F-Droid, and the Apple App Store, while also maintaining the globally distributed infrastructure for the light client services (https://lightwalletd.com/) and the Zcash Block Explorer (https://zcashblockexplorer.com/).
[CAPABILITY/ FEASIBILITY] What are the main goals for the project and how will you validate if your approach is feasible?
The main goal for the project is to create native mobile SDKs written in Kotlin and Swift that cover the set of requirements of a basic crypto wallet using the Cardano Blockchain we’ve detailed in the table below. So that any Swift and Kotlin developers can integrate their applications into Cardano.
We want to start with the core functionality and let the users and community extend it further. SDKs can be really opinionated in terms of designs, so we want all the feedback from other Cardano developers as much as we can get, and iterating it’s the best way to do so.
The scope of the project will be supporting this subset of requirements that we have described as user stories.
We will validate our approach with demo applications that serve as code snippets as we’ve portrayed in the [Zcash SDKs](https://github.com/zcash/ZcashLightClientKit/)
[CAPABILITY/ FEASIBILITY] Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.
Milestone 0. Project Kick-off, team announcement, and preliminary research
Milestone 1: Requirements Research and Development kick-off
Milestone 2: SDK Development:
Milestone 3: Demo App and SDK Optimization
Milestone 4: Quality Assurance and Release
Our goal is to deliver the highest quality of the SDKs, provide developers with documentation, and facilitate a seamless release process.
Epics for Building Wallet Support
Sure, here are the table contents converted into formatted statements:
- Public and private key management
- Epic: New Wallet (E-01)
- Story id 1: As a User, I'd like to create a new seed phrase so that I can use my Wallet.
- Epic: Seed phrase support (E-02)
- Story id 2: As a Security Engineer, I'd like a reminder to users who protect their phrase, so that users effectively protect their seed phrase.
- Story id 3: As a User, I want to be able to see my seed phrase and my initial block, so that I'm able to protect my seed.
- Story id 4: As a User, I want to be able to copy my seed phrase to the clipboard, so that I'm able to protect my seed.
- Epic: Restore Wallet from the phrase (E-03)
- Story id 5: As a User, I want to be able to restore my wallet from an initial phrase and block, so that I'm able to protect my seed.
- 2. Operations
- Epic: Receive funds (E-04)
- Story id 6: As a User, I want to be able to visualize my address in a QR, so that I can receive funds by scanning that code from another wallet.
- Story id 7: As a User, I want to be able to visualize my address as text and copy it to the clipboard, so that I'm able to share it by electronic means to other people.
- Epic: Send funds (E-06)
- Story id 12: As a User, I want to be able to scan a wallet QR code, so that I'm able to send funds to her.
- Story id 13: As a User, I want to be able to paste an address from the clipboard, so that I can send funds to it.
- Story id 14: As a User, I want to see if the address entered is correct so that I can validate that they gave me a correct fact for the shipment of funds.
- Story id 15: As a User, I want to be able to enter an amount, so that I can send those funds to another wallet.
- Story id 16: As a User, I want to receive a transaction shipping confirmation, so that I'm able to confirm that it has been sent without errors.
- Story id 17: As a User, I want to receive a link (URI) with information for payment, so that I'm able to make a transaction to a third party with all the information required for it, without the need to enter the data myself.
- Story id 18: As a User, I want to see the errors that have occurred during the shipment of the transaction, so that I'm able to confirm that it has not been sent.
- 3. Wallet status
- Epic: Balance (E-05)
- Story id 8: As a User, I want to be able to visualize pending funds, so that I can confirm that they have sent me funds.
- Story id 9: As a User, I want to be able to visualize change, so that I can differentiate it from my funds available.
- Story id 10: As a User, I want to see a special screen if I don’t have funds so that I do not perform unnecessary actions.
- Story id 11: As a User, I want to be able to visualize my available funds, so that I can send them.
- 4. Transaction history
- Epic: (E-07)
- Story id 19: As a User, I want to see pending confirmation transactions, so that I know the details of the transactions that I have sent or received recently.
- Story id 20: As a User, I want to see failed transactions in my history, so that I'm able to know the history of recent shipments accurately.
- Story id 21: As a User, I want to see the transactions received historically so that I'm able to know the history of recent transactions accurately.
- Story id 22: As a User, I want to see the amount and date of the transactions sent and received, so that I'm able to know the history of recent transactions accurately.
- Story id 23: As a User, I want to see the transaction ID performed, so that I'm able to see it in a blockchain block explorer.
- 5. Operations
- Epic: Sync up (E-08)
- Story id 24: As a User, I want to be up to date with the blockchain, so that I'm able to know my balance updated to the last mining block and have my funds.
- Story id 25: As a User, I want to know if the wallet is synchronizing with a percentage so that I know that the application is not hung and that it is working.
- Story id 26: As a User, I require that the wallet is always updated to the ‘Best Chain’, so that the wallet is always up to date with the latest info.
[CAPABILITY/ FEASIBILITY] Please describe the deliverables, outputs and intended outcomes of each milestone.
We will approach this development with Agile methodologies in mind plus an initial Research and Requirement engineering phase to identify key interfaces, risks, and possible blockers in an early stage of the project.
Even though we are dividing the project into five milestones the SDKs will be developed iteratively so that pre-alpha, alpha, snapshots, and beta releases are cut regularly for the broad community and partners that want to adopt the SDK can track its progress, test it and provide feedback.
Milestone 0. Project Kick-off, team announcement, and preliminary research
- Set up of dev environments and dev Infrastructure
- Team announcement, establishing comms channels with the community.
- Sourcing of the Support developers
Milestone 1: Requirements Research and Development kick-off
- Requirements engineering:
- In-depth research of the Cardano Blockfrost infrastructure APIs and RYO approach support
- Research the different existing SDKs for common interfaces, key requirements, and idiomatic particularities of the Cardano Protocol
- Generalization of interfaces
- Documentation of the Design decisions
- List of requirements
- Development Kick-off:
- Definition of elicited interfaces
- Proof-of-Concept of the Cardano Client abstraction over BlockFrosts APIs
- Test-driven development over those interfaces
Milestone 2: SDK Development:
- Refinement of task breakdown from the previous stage
- Develop Abstract Cardano Blockchain APIs
- Implement Blockfrost API over Abstraction
- Development of Theme “Public and private key management”
- Development and Unit Testing of “New Wallet” Epic
- Development and Unit Testing of “Seed Phrase Support” Epic
- Development and Unit Testing of “Restore Wallet” Epic
- Development of Theme “Client/Wallet Operations”
- Development and Unit testing of “Receive Funds” Epic
- Development and Unit testing of “Sync Funds” Epic
- Development and Unit testing of “Send funds” Epic
- Development of the Theme “Wallet/Client Status”
- Development and Unit testing of “Balance” Epic
- Development and Unit testing of “Transaction History” Epic
- Development and Unit testing of chain undo’s / ReOrgs
Milestone 3: Demo App and SDK Optimization
- Demo app development leveraging the APIs from the SDK: In this stage, our team will focus on developing a demo application that showcases the capabilities and functionalities of the SDK. By utilizing the various APIs provided by the SDK, we will create a user-friendly and interactive demo app that highlights the key features and benefits of the technology.
- Triage issues with the SDK and improve API usage: We will thoroughly examine the SDK and identify any existing issues or bugs that may impact its performance or functionality. Through rigorous testing and analysis, we will triage these issues, addressing them promptly to ensure a stable and reliable SDK. Additionally, we will continuously strive to improve the usage of the SDK's APIs, optimizing their efficiency and enhancing their usability for developers.
Milestone 4: Quality Assurance and Release
- Publishing the production versions of the SDKs and their documentation.
- Documenting the SDKs comprehensively, including installation instructions, usage guidelines, API references, and troubleshooting information.
- Making the documentation easily accessible through a dedicated developer portal or website.
- Conducting final checks and preparations for a smooth release, including testing, verifying documentation accuracy, and organizing release materials.
[RESOURCES & VALUE FOR MONEY] Please provide a detailed budget breakdown of the proposed work and resources.
Milestone 0: Project Kick-off
50,000 ADA
2 Leads working for 0.5 month
Milestone 1: Research and Development
250,000 ADA
2 Leads and 2 support developers working for 3 months
Milestone 2: SDK Development
500,000 ADA
2 Leads and 2 support developers working for 4 months
Milestone 3: Demo App Development, Testing, and Audit
250,000 ADA
2 Leads working for 2 months
Milestone 4: Quality Assurance and Release
150,000 ADA
2 Leads working for 2 months
[RESOURCES & VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
Callisto SDKs will help bring more revenue to a business by driving platform adoption, expanding the ecosystem, enabling new use cases by facilitating service integration, leveraging partner and developer programs, and enabling upselling and cross-selling opportunities to the applications adopting Cardano by using the SDKs. By providing tools and resources that attract developers and facilitate application development, SDKs contribute to the growth of the Cardano Ecosystem.
Our proposal specifically focuses on these points:
- Platform Adoption: By delivering the Callisto SDK, we will encourage developers to build applications that integrate Cardano with their platform or services. This leads to increased adoption of Cardano in mobile (and Apple desktop) applications, as developers are more likely to choose a platform that provides the necessary tools and resources to create applications efficiently. The more developers that build on Cardano, the larger the user base and potential use cases will be supported on it.
- Ecosystem Expansion: SDKs enable third-party developers to extend the functionality of a platform or service by building complementary applications or integrations. This expands the ecosystem around the platform, attracting more users and customers who benefit from the added value provided by these third-party applications. A vibrant ecosystem increases the appeal of the platform and can drive revenue growth through increased usage and customer acquisition.
- Service Integration: Our SDKs will facilitate the integration of a business's services or APIs into third-party applications. By providing Cardano Swift and Kotlin SDKs that simplify the integration process, we can attract more developers and encourage them to incorporate Cardano into their applications. This integration can lead to increased usage and adoption of Cardano by bringing a user base that is crypto-curious but hasn’t found use cases that make them feel ready to use blockchain technology.
- Attract new Partners and Developers: Cardano can leverage the Swift and Kotlin SDKs as part of partner or developer engagement. By nurturing relationships with developers and offering a wide range of tools we can encourage developers to choose Cardano over other competing blockchains.
[IMPORTANT NOTE] The Applicant agreed to Fund10 rules and also that data in the Submission Form and other data provided by the project team during the course of the project will be publicly available.
I Accept