Project Name: Capacitor-Zenon Plugin
Description: This proposal is for a Capacitor plugin which will allow for building cross-platform applications (web, android, ios, desktop) with a single codebase, while still leveraging native SDKs. This is vital for developers in the long term since the only other viable alternative is Flutter, which has limitations in that the developer must know Dart and they are unable to use any web libraries in their app. With Capacitor, they will be able to utilize any web framework (React, Angular, Vue, Vanilla JS, etc.), any web libraries, and any native libraries. Once the plugin is complete, someone could take their existing web zApp and have it working on mobile devices within 5 minutes, with no code changes and optimized native performance.
URL: https://forum2.zenon.org/t/capacitor-plugin-w-native-mobile-sdks/531
Team: Currently the plan is to develop the first implementation alone, but the plugin/SDKs will be released as open-source upon completion. I am one of the core engineers for Ionic (the team that created Capacitor) and I have extensive knowledge on the ecosystem and requirements necessary as I have architected and maintained several plugins.
Phases
What is your high-level roadmap? In order to accomplish everything, there will need to be three phases, each encapsulating a similar amount of time and effort.
Phase 1
High level overview of main tasks:
- Kotlin SDK (for native Android apps)
Completion of Phase 1 will be measured by:
- Porting the Dart SDK to Kotlin with at least 90% compatibility.
- Publishing the SDK on Maven Central repository.
- General usage documentation.
- Uploading the code on Github for open-source contribution.
Phase 2
High level overview of main tasks:
- Swift SDK (for native iOS apps)
Completion of Phase 2 will be measured by:
- Porting the Dart SDK to Swift with at least 90% compatibility.
- Publishing the SDK on Cocoapods & Swift Package Manager.
- General usage documentation.
- Uploading the code on Github for open-source contribution.
Phase 3
High level overview of main tasks:
- Capacitor Plugin
Completion of Phase 3 will be measured by:
- Integrate official Typescript SDK for the web portion of the plugin.
- Integrate Kotlin SDK (from Phase 1) for the android portion of the plugin.
- Integrate Swift SDK (from Phase 2) for the iOS portion of the plugin.
- General usage documentation.
- Publishing the plugin on NPM.
- Uploading the code on Github for open-source contribution.
- Sample application code uploaded on Github.
Funding
Total Requested Funding = 5000 ZNN and 50,000 QSR
Project Duration = 4-7 months
How did you calculate your budget?
This project will be a significant amount of work since there is no Kotlin SDK or Swift SDK in development or production, which are prerequisites for a Capacitor plugin to function on every platform. The plugin itself will also contain a decent amount of work since I want to be thorough in integration and testing all of the functionality on all platforms. However, I have set the proposal up in a way that each deliverable phase will have tremendous benefits to the ecosystem as a whole. I estimate each phase to take at least 80 working hours and due to my full-time job and other obligations, I will not be able to dedicate more than 20 hours per week on the project.
Project and Payment Milestones:
Phase 1
Funding Request: 30% (1,500 ZNN and 15,000 QSR)
Duration: 1-2 months (80-160 hours)
Phase 2
Funding Request: 30% (1,500 ZNN and 15,000 QSR)
Duration: 1-2 months (80-160 hours)
Phase 3
Funding Request: 40% (2,000 ZNN and 20,000 QSR)
Duration: 2-3 months (160-270 hours)
Other Information
Risks, Assumptions, Known Issues, Dependencies: Since I will be developing the Kotlin and Swift SDKs independently, the only other dependency will be the usability of the official typescript SDK. If the typescript SDK proves unusable or unstable in any way, I will have to allocate time to make it functional before I am able to complete Phase 3.
Have you previously submitted a proposal (either in Acclerator-Z or Incubator)? No.
Why is Capacitor necessary when there is Flutter?
-
I would estimate that at least 95% of existing dApps are built with web technologies due to the technical challenges and hurdles that are present when trying to build for mobile. With a capacitor plugin, a developer could take any existing (or new) web zApp and easily make it compatible with mobile devices with no additional code changes.
-
Capacitor is framework-agnostic, meaning it allows for developers to leverage their existing knowledge and use the framework of their choice. This could be Ionic, React, Angular, Vue, Typescript, etc… While, Flutter requires developers to use Dart.
-
Capacitor will allow for web libraries, npm packages, web components, as well as any native mobile libraries of the developer’s choosing. Flutter is limited to only using existing dart packages and Flutter widgets.
-
Flutter is not known for high performance web apps. It is not SEO-friendly, there’s no live reload, limited debugging tools for inspecting elements, and it is notorious for high file sizes (slow initial load), low fps, and buggy scrolling. That’s not to say that a Flutter web app cannot have good performance metrics, however Capacitor is built for web first, while Flutter is built for mobile first.
Please comment any additional information needed or questions that you have and I would be glad to answer.