Giter Site home page Giter Site logo

balance-io / balance-open Goto Github PK

View Code? Open in Web Editor NEW
289.0 30.0 41.0 287.89 MB

Balance Open: A GPL3-licensed macOS menu bar app for all the world’s currencies.

Home Page: https://balance.io

License: GNU General Public License v3.0

Swift 98.62% Objective-C 0.78% Gherkin 0.39% Shell 0.20%
swift bitcoin bitcoin-wallet ethereum ethereum-dapp macos mac iphone ios

balance-open's People

Contributors

alaycock avatar burtonageo avatar christianbaroni avatar einsteinx2 avatar joeblau avatar lfarah avatar naranjo074 avatar reddavis avatar ricburton avatar rolvar avatar wolffan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

balance-open's Issues

[Idea] Support for Tokens

Tokens powered by the Ethereum Request for Comment (ERC20) specification are becoming very popular.

I am increasingly concerned about the phishing attacks people are falling victim to at MyEtherWallet.com. It seems that lots of people are losing money when they are tricked into visiting websites that look similar to the open source, Chrome-based wallet.

I think people would be much less likely to fall for a phishing attack if they had to go to a separate application on their Mac to manage their tokens.

Here is the summary of my research into the area so far:

https://theethereum.wiki/w/index.php/ERC20_Wallet_Support
https://ethereum.stackexchange.com/questions/9054/are-there-ethereum-wallets-other-that-mist-that-provide-support-for-test-netwo
https://www.reddit.com/r/ethereum/comments/669dmp/best_wallets_for_erc20_tokens/
https://ethereum.stackexchange.com/questions/15806/where-is-the-erc-20-token-code?newreg=bcb0e4522a1e476398d8b842a1aa584e
https://github.com/ConsenSys/Tokens

I would like to better understand what’s involved in building native support for tokens into Balance Open.

Add Danger

Danger is an amazing tool for open source projects. It automates a shit ton of the boring part of reviewing PRs.

I used it on past projects including Awesome iOS

danger-screenshot-074f084c

Blog about multiple OS types that represent the same "structure"

eg:

#if os(iOS) || os(tvOS)
    import UIKit
    typealias NSLayoutRelationGeneric = NSLayoutRelation
    typealias NSLayoutAttributeGeneric = NSLayoutAttribute
#else
    import AppKit
    typealias NSLayoutRelationGeneric = NSLayoutConstraint.Relation
    typealias NSLayoutAttributeGeneric = NSLayoutConstraint.Attribute
#endif

Example the SnapKit PR

Add the ability to send money via coinbase

I would love to be able to quickly send people money through the Coinbase email functionality.

  • switch the readonly token for a readwrite token in coinbase
  • This may be a blocker for shapeshift API to work

Integrate GDAX

Integrate the GDAX (https://www.gdax.com/) API (https://docs.gdax.com/) in Balance Open.

  • Develop using the sandbox url
  • Create self contained library as much as posible
  • Readonly, for now just read the funds that a person may have
  • Write (trading will be pending UI, but if you have time can be started)

1.0 Internal Changes

  • Fill in Syncer class syncAccountsAndTransactions function to use new sources #23
  • Add Sparkle update framework #25
  • Implement cert pinning for Sparkle and all APIs #26
  • Change how account balances are stored in the db to facilitate many currency types #32

[Idea] Balance for Business

Balanced Software, Inc. and Balanced Software, Ltd. is holding a basket of digital assets, cryptographic currencies, and magical Ethereum Request for Comment Number 20 tokens (ERC20).

We need to have a separate interface for businesses to view, manage and interact with these digital assets.

We need to understand the tax implications of each investment and the legal reporting requirements.

Change how account balances are stored in the db to facilitate many currency types

Right now we store account balances and transaction amounts in cents. That works for USD and other 2 decimal currencies, but doesn't work for things like bitcoin which have an indeterminate amount of decimal places. Also we make assumptions in the code when we do things like sorting by price that will need to take currencies into account.

For now, we don't need to figure everything out, since we aren't showing transactions yet, we just need a currency agnostic way to store the values for accounts that are still easily queryable.

Improve Look of View when Scrollbar preferences is set to Always on

Summary:

When the macOS preference for scrollbars is set to 'Always', improve the look for the window

Steps to Reproduce:
Go to System Preferences > General and set the scrollbar preference to Always
screen shot 2017-06-17 at 09 46 20
Launch Balance and have at least two currencies visible.

Actual Results:
The width of the window increases to accommodate the scrollbar gutter. Due to the colour of the cells, this is somewhat noticeable.
screen shot 2017-06-17 at 09 45 32

Expected Results:
This is a tricky one... It wouldn't be worth creating a custom scrollview where you could implement your own scrollbar ultimately. Perhaps the colour of the cells could change to have less of a contrast

Notes:
On the whole, it's low priority. I'm filing this because I have the scrollbar preference on to catch out edge cases like this 😎

Coinbase server side authentication flow

Create whatever functions are necessary in the subscription server to complete the authentication process using our API key. Basically converting temp tokens to client usable tokens.

Poloniex client side authentication flow

I'm not familiar with the API to I'll leave the details to @wolffan. This issue is to track whatever is needed to complete an authentication on the client side. An authenticate function in the PoloniexApi struct, plus whatever else is needed.

Prepare Balance for Localization

In order to make Balance more approachable, and to enhance the experience, you should consider localising the app. It's better to start thinking about this earlier, rather than later.

To get started with this right now, I guess the first thing would be to move all text into a localizable.strings file.

That way, all in-app copy is contained with that one file, and people will then be able to easily edit that if they were to add their own translations to the app.

Something to avoid when considering this would be text in images.

Integrate Coinbase

  • Coinbase client side authentication flow #15
  • Coinbase server side authentication flow #16
  • Create CoinbaseApi struct with static API functions #17
  • Create CoinbaseAccount object which parses the response #18
  • Create function to create native Accounts from CoinbaseAccounts #19

Accessibility

We want Balance to be able to help people with poor eyesight to stay on top of their finances. We have made some moves in this direction but there is so much further to go.

[Idea] Support for ShapeShift

ShapeShift partners with lots of people to create an exchange for digital assets. I just listened to it's founder, Eric Voorhees, speak on this podcast.

Epicenter – Podcast on Blockchain, Ethereum, Bitcoin and Distributed Technologies: #190 Erik Voorhees: Prism – The World’s First Portfolio Market Platform
https://overcast.fm/+BuoRJjmOE

I want to dive into their technology more.

Don't allow users to hide all accounts in an institution

Summary:
When you have deselected all currencies in the Preferences, Balance looks very empty. :(

Steps to Reproduce:
Open Preferences, go to Accounts, and deselect everything!

Actual Results:
screen shot 2017-06-17 at 10 00 06

Expected Results:
Perhaps there could be some placeholder text or a button to tell you that you need to enable some currencies.

Notes:
Extreme edge case, but the details make the app.

Show Currency Price

right now it shows the total value of holdings for a currency but not the current price of 1 unit of the currency itself which would be handy

Coinbase client side authentication flow

This issue is to track whatever is needed to complete an authentication on the client side. An authenticate function in the CoinbaseApi struct, plus whatever else is needed.

Add a timeout option for logging back in

I love TouchID but I don’t like touching it every time I tap on Balance.

It’d be nice if there was a way to set a timeout in minutes.

Here’s how 1Password does it:

Integrate Poloniex

  • Poloniex client side authentication flow #10
    -Poloniex server side authentication flow #11 (not needed)
  • Create PoloniexApi struct with static API functions #12
  • Create PoloniexAccount object which parses the response #13
  • Create function to create native Accounts from PoloniexAccounts #14

Decrease minimum window height

Summary:
When you have only one currency visible, Balance looks a bit wacky.

Steps to Reproduce:
Open preferences, go to Accounts, and show only one currency.
Return to the main view and observe

Actual Results:
screen shot 2017-06-17 at 09 57 02

Expected Results:
The minimum window height should be that to perfectly accommodate one cell.

Notes:
The minimum height seems to be fairly arbitrary right now. It's too short to perfectly accommodate two cells, and too tall for one!

[Idea] Support for Melonport

Melonport is ”Blockchain Software for Asset Management”

After meeting with @thehighfiveghost and seeing him present the concepts behind Melonport, I am really excited about the project. They are going to move asset management onto the blockchain. I want to have a fully decentralised fund that tracks the overall value of the blockchain economy as soon as possible.

It would be amazing if people could track their Melonport funds from within Balance. Eventually we could even support the creation of funds right within Balance. I have spent a little time trying to set up a fund and the process is being worked on. Here is my feedback on the onboarding experience: https://github.com/melonproject/portal/issues/303

Here was my initial research:

https://melonport.com/
https://github.com/thehighfiveghost
https://twitter.com/ricburton/status/882671702731313156
https://github.com/melonproject/portal

1.0 UI Changes

  • Modify AccountsTabViewController UI to match mockup #21
  • Create vector graphics for the institution buttons #22
  • Create vector graphics for the institution headers #28
  • Finish implementing UI locking #35

Font rendering issue on Dell U2412M, @1920x1200

NathanielHunt.com reports:

01998974-596a-449c-86e0-8e0562dbd5e8.png

" invoking Balance on the built-in MBPr display doesn't show any of those oddities—at least so far (I don't expect they'd ever show up on the Retina Display, but I'll let you know if they do). They only seem to appear (intermittently) on the Dell. "

Coinbase balances not updating

Problem
The balance in Balance does not reflect the balance in Coinbase. This is likely due to the one-an-hour rolling of keys.

Steps to recreate
I am not sure of the best way to get the app to do this again because when I refresh my keys the balance will be updated.

Attachments
My logs are attached:
balance-open-not-updating-coinbase-logs.zip

Better README

The app is Awesome, but we need to work on the README.md.

First thing I tried to do was to run the command line, but that didn't work 😞
Then I had to go to 3 different websites to try to install sqlcipher. I installed it, but no luck on getting that command line to work. Then I opened the BalanceOpen.xcodeproj and pressed the "Build and Run" button 🤘

We need a tutorial on the README page, teaching the user go from git clone to opening the app on the menu bar.
Besides installation, the README.md also lacks other information. I created a README template to help it out

Add autolaunch

Since we're not in the app store we can use the simple method for this at least for first release.

[Bug] Adding the same account creates multiple account instances in the app

Problem Description
When you add a new account with Coinbase the app syncs that Account with Balance and when you keep repeating "Add new account" with the same Coinbase account the app creates more Coinbase account instances of an account that already exists.

Suggestion For Solution
I have not really researched how you get all the information from the Coinbase account, however, if you could get an account ID from there and sync that with the account in Balance you could prevent creating another instance of that account if it already exists in the system.

Here is a screenshot of the multiple accounts (same Coinbase account)
screen shot 2017-07-19 at 14 18 35

Double Focus Ring on Launch Screen

Summary:

When the full keyboard access Preference is on, a double selection ring will appear around the Coinbase button.

Steps to Reproduce:

Go to System Preferences > Keyboard > Shortcuts and turn this option on:
screen shot 2017-06-17 at 09 37 39
Launch Balance (before you have signed in)

Actual Results:
screen shot 2017-06-17 at 09 34 23

Expected Results:
For there to be a single focus ring around the button.

Notes:
I suspect this is down to the difference in button sizes between normal and hover - macOS is drawing both, or possibly there's a wider click target than the button which is why it's not flush with the button edges

Add Swiftlint

Swiftlint is an amazing tool to help us write better code. It has a really big amount of extra rules that add warnings and errors to the project if you're not following the swift guidelines.
Examples:
force unwrap, variables starting with uppercased letter, legacy constructor (Using CGRect make instead of CGRect(x:, y:. width:, height:)

Implementing it will be a big task because we currently have 999+ warnings and 704 errors, so we'd have to push smaller fixes at a time

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.