sip | title | description | author | status | type | created |
---|---|---|---|---|---|---|
18 |
Cross-Platform Wallet UI |
Cross-Platform Wallet UI |
blankey1337, ohager |
Final |
Informational |
2019-01-06 |
Currently, the Signumdesktop wallet is a fork of the NXT wallet which was built in 2014. It is written in jQuery and supports most of the features of the Signum blockchain. In the past few years, JavaScript applications have evolved in capabilities and standards. Without proper support, front-end applications tend to age quickly; and the Burst desktop wallet is no exception.
The current Signum desktop wallet has a fair share of bugs, is hard to maintain, and uses outdated libraries that could pose a security risk. Further, because the desktop wallet uses old technology, there are many advantageous new features and patterns that Signum wallet developers are missing out on.
As for mobile, there are currently two Signum mobile wallets: (1) Android (launched), and (2) iOS. The Android wallet was developed in JavaScript by a previous development team, where the iOS wallet is being developed in Objective-C by a community member. Currently, none of the Signum wallets (desktop, ios, android) share any code or similar conventions.
We propose to revamp the Signum wallets using the latest application development technologies and best practices. Further, we propose an application architecture that will support multiple platforms: desktop (Windows, OSX, Linux), mobile (Android and iOS), and web (in-browser). Such a platform will improve collaboration, streamline development, and simplify the software development lifecycle of Burst wallets into the future.
A multi-platform application architecture is made possible through a few key front-end technologies: React Native, Angular, and Electron. By using these technologies in conjunction, Burst wallet developers will enjoy a modern application development workflow without sacrificing the quality of the end-product.
See it live at https://github.com/signum-network/phoenix
A desktop application will be built using Angular/TypeScript, and exported to an executable/installer using Electron. Angular is a framework for building rich JavaScript apps, and Electron is tool used to generate standalone installers for OSX/Windows/Linux from JavaScript apps. We picked Angular and TypeScript due to its declarative, opinionated nature and strict conventions. Compared to other front-end frameworks, we believe Angular is better suited for a loosely-organized open source project like this one.
The desktop application will be a Progressive Web Application, and as such, will run in the browser. This will be the same desktop application that gets bundled into a standalone installer using Electron (see above). As a result, we basically get this for free.
A mobile app for Android and iOS will be developed on a single codebase using React Native, a framework for building native apps using JavaScript. It provides a component library suitable for rich native application development while also providing useful hooks into mobile SDKs.
All proposed wallet implementations use Javascript (ES6+, TS) as their basic language. That way it's possible to create a common code base as a library that can be used for all UI implementations. The library contains an abstraction of the Signum API (Signum-Node), various cryptographic classes/function, and further reusable functionalities. Done right, we can reduce future development times drastically, while guaranteeing a constant level of quality.
Copyright and related rights waived via CC0.