Giter Site home page Giter Site logo

trentpiercy / trace Goto Github PK

View Code? Open in Web Editor NEW
1.1K 44.0 327.0 124.24 MB

Modern crypto portfolio & market explorer. Built with @Flutter

Home Page: https://play.google.com/store/apps/details?id=com.trentpiercy.trace

License: GNU General Public License v3.0

Java 0.18% Objective-C 0.32% Dart 98.29% Ruby 0.95% Shell 0.27%
flutter mobile-app cryptocurrency finance

trace's Introduction

Trace

Modern Crypto Portfolio & Market Explorer. Built with Flutter.
Open Source. Lightweight. Clean. Straightforward. Fast. Powerful.

Download for Android on Google Play. Join Android Beta!
Building for iOS works just fine, but I'm not giving Apple $99 to put this on the AppStore right now.

Get it on Google Play

Features

๐Ÿ’ฐ Portfolio Overview
๐ŸŒŽ Aggregate Market Explorer
๐Ÿ“Š Detailed Aggregate/Exchange Specific Market Data for every Coin
๐Ÿ“ˆ Portfolio Timeline
๐Ÿ“… Transaction History
โญ•๏ธ Portfolio Breakdown
๐ŸŒ“ Automatic, Light, Dark & Dark OLED Theme Options
โšก 7.3MB - Fast & Lightweight

๐Ÿ“น Full Video

Screenshots

๐Ÿ’ฐ Portfolio

  • Home screen displaying portfolio value, 7D Change, 24h Change, and value and amount of each coin
  • Sort coins by name, holdings, and 24h change percent
  • Add transactions using bottom right button

๐ŸŒŽ Aggregate Markets

  • Swipe to second tab displaying aggregate market stats of every cryptocurrency
  • Search by any coin's symbol or name
  • Sort coins by name, market cap, 24h trade volume and 24h change percent

๐Ÿ“ˆ Portfolio Timeline

  • Navigate to timeline through drawer menu or swipe from breakdown
  • Tap clock to control timeline period from 1 day to all
  • Includes portfolio value high/low, change percent and change amount over period
  • Scroll down to view all transaction history

โญ•๏ธ Portfolio Breakdown

  • Navigate to breakdown through drawer menu or swipe from timeline
  • Pie chart breakdown of portfolio
  • Displays total portfolio value, net percent, net amount and total cost
  • Lists each coin as percent of total portfolio

๐Ÿ“Š Detailed Market Data

  • Tap on any coin to view detailed market data
  • Tap clock to control candlestick data period from 1 hour to 1 year
  • Includes price high/low and change percent over period
  • Tap arrows to control candlestick width from 1 minute to 14 days
  • Swipe to view list of all exchanges for specific coin
  • Includes 24h trade volume along with price and 24h change
  • Sort by exchange name, 24h volume, price and 24h change
  • Tap on any exchange to get even more detailed data

โ˜€๏ธ Light Theme

๐ŸŒ™ OLED Dark Theme

โš™๏ธ Settings

  • Navigate to settings through drawer menu
  • Theme Toggles: automatic, light, dark and dark OLED
  • Abbreviate Numbers switch
  • Export/Import portfolio JSON to/from text
  • Clear Portfolio

Building Source

  • Set your working directory to the root of your git clone
  • Make sure your Android SDK and Flutter are up to date (flutter upgrade)
  • Execute flutter run

trace's People

Contributors

mustafatufan avatar trentpiercy 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trace's Issues

Feature Request: Widgets

It would be great to be able to put a widget on the home screen. Maybe similar to robinhood's, but add in your portfolio balance and the price per coin
image
(picture just found on google images, those aren't crypto, but the idea is the same)

Make Widget tree smaller

There are some file in which the widget tree es too large, I suggest you create a sub folder, and write some small widgets that can be re-used and make these widgets tree more readable.

FileSystemException: Getting current working directory failed, path = '' (OS Error: Too many open files, errno = 24)

weibodeiMac:trace weibo$ flutter run
Launching lib/main.dart on iPhone X in debug mode...
Unhandled exception:
FileSystemException: Getting current working directory failed, path = '' (OS Error: Too many open files, errno = 24)
#0      _uriBaseClosure (dart:io-patch/directory_patch.dart:61)
#1      Uri.base (dart:core-patch/dart:core/uri_patch.dart:20)
#2      current (package:path/path.dart:82)
#3      new Context (package:path/src/context.dart:31)
#4      LocalFileSystem.path (package:file/src/backends/local/local_file_system.dart:26)
#5      _ZipToolBuilder.createZip.<anonymous closure>.<anonymous closure> (package:flutter_tools/src/zip.dart:87)
#6      _rootRunUnary (dart:async/zone.dart:1134)
#7      _CustomZone.runUnary (dart:async/zone.dart:1031)
#8      _FutureListener.handleValue (dart:async/future_impl.dart:129)
#9      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633)
#10     Future._propagateToListeners (dart:async/future_impl.dart:662)
#11     Future._complete (dart:async/future_impl.dart:467)
#12     _SyncCompleter.complete (dart:async/future_impl.dart:51)
#13     _completeOnAsyncReturn (dart:async-patch/dart:async/async_patch.dart:292)
#14     DevFSByteContent.contentsAsBytes (package:flutter_tools/src/devfs.dart:166)
#15     new Future.microtask.<anonymous closure> (dart:async/future.dart:200)
#16     _rootRun (dart:async/zone.dart:1126)
#17     _CustomZone.run (dart:async/zone.dart:1023)
#18     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:949)
#19     _microtaskLoop (dart:async/schedule_microtask.dart:41)
#20     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#21     _runPendingImmediateCallback (dart:isolate-patch/dart:isolate/isolate_patch.dart:113)
#22     _RawReceivePortImpl._handleMessage (dart:isolate-patch/dart:isolate/isolate_patch.dart:166)

Include project link, watchlist, and price alert to Trace app

Why the suggestion.

I tried to get some information about a token, and I did not find a way to. And I think it would be good if the project owner could add a feature to every token which will link to the project site to get more info about the token I.e if I want to know about steem. There will be a button which will lead me to the project site through the app. This could be added to a section on the token details. It will work to take the user to the project site, and on every click, it will ask for the browser to use on mobile.

This is a feature that could be achieved with basic HTML, but the effect on the app is useful.

Mock up for the first suggestion

The first image on the left side shows the app current look, while the second image shows how the suggestion implementation could look like.

The second set of mockups shows when a click has been initiated on the options, and the possible options; such as Open in the browser, copy link URL and share the link.

Watchlist

I want to also propose the addition of a watchlist feature. This feature will allow users to add Cryptos that they like to watch how it move in the market. This feature will work for easy accessibility of tokens that the user want to get quick information about. I.e if I want to know when verge, bitcoin, and doge steem and ripple moves. I can easily list them all in this watchlist to know when to buy and sell them this also could be added to the home menu page or aggregate markets tab.

Mock ups for the watchlist

The image on the right side shows how the watchlist could look like on the project aggregate market. (Just mock up, this could be placed in another part of the app)

This mock up displays how the watchlist could look like when clicked or pressed. The image on the right side shows I have not added any token to my watchlist.

These mockups show that I have added Steem to my watchlist. The feature will work to contain as many tokens as possible.

Price Alert

The last feature I will propose is the addition of a price alert feature. This will work perfectly with the proposed watchlist. The price alert will work to alert users on a particular price that the user set a token to. Eg. When I want to get an alert or notification on a price. I could set that I should get an alert when Steem is $ 0.42. This feature will work to notify me when the steem price is $0.42. This could also be added to the menu section.

Mock up for Price alert

As shown, I added the Price alert feature to the menu page for easy accessibility.

On click, it will show a small page that user will fill in the token they want to get an alert for. The option could be, Token name, exchange, token alert, and value.

And when the alert is created, the alert will trigger itself when the token reached the set price, and it will show on my device as shown in the image below.

Benefit

The link to the project site will help users to know about the project without any hassle. Users will be able to navigate to the project site to get the information they wanted, without the need to search google. I have already explained the benefit of the watchlist in my explanation about it. It is a feature I like so much. It will let token traders keep track of the value of the tokens they hold, or the ones they want to know the price constantly.

The price alert is the feature I call a life saver and profit giver this will help users to get a prompt notification on every set price alert. Users will not miss the right time to make transactions on the token they have or the ones they want to buy.

Thank you for reading this idea contribution.

Compile errors

When I try to build in Android studio I am getting the following compilation errors:

10:48:09.270 1 info flutter.tools Launching lib/main.dart on Android SDK built for x86 in debug mode...
10:48:09.305 2 info flutter.tools Initializing gradle...
10:48:11.889 3 info flutter.tools Resolving dependencies...
10:48:17.888 4 info flutter.tools Running 'gradlew assembleDebug'...
10:48:30.825 5 info flutter.tools compiler message: lib/tabs.dart:312:47: Error: Getter not found: 'TextCapitalization'.
10:48:30.825 6 info flutter.tools compiler message:                           textCapitalization: TextCapitalization.none,
10:48:30.825 7 info flutter.tools compiler message:                                               ^^^^^^^^^^^^^^^^^^
10:48:30.825 8 info flutter.tools compiler message: lib/tabs.dart:312:27: Error: No named parameter with the name 'textCapitalization'.
10:48:30.825 9 info flutter.tools compiler message:                           textCapitalization: TextCapitalization.none,
10:48:30.825 10 info flutter.tools compiler message:                           ^^^^^^^^^^^^^^^^^^
10:48:30.825 11 info flutter.tools compiler message: file:///home/anton/Documents/software/flutter/flutter/packages/flutter/lib/src/material/text_field.dart:99:9: Context: Found this candidate, but the arguments don't match.
10:48:30.825 12 info flutter.tools compiler message:   const TextField({
10:48:30.825 13 info flutter.tools compiler message:         ^
10:48:30.825 14 info flutter.tools compiler message: lib/settings_page.dart:344:23: Error: No named parameter with the name 'focusedBorder'.
10:48:30.826 15 info flutter.tools compiler message:                       focusedBorder: new OutlineInputBorder(
10:48:30.826 16 info flutter.tools compiler message:                       ^^^^^^^^^^^^^
10:48:30.829 17 info flutter.tools compiler message: file:///home/anton/Documents/software/flutter/flutter/packages/flutter/lib/src/material/input_decorator.dart:1747:9: Context: Found this candidate, but the arguments don't match.
10:48:30.829 18 info flutter.tools compiler message:   const InputDecoration({
10:48:30.829 19 info flutter.tools compiler message:         ^
10:48:32.549 20 info flutter.tools compiler message: lib/portfolio/transaction_sheet.dart:440:49: Error: Getter not found: 'TextCapitalization'.
10:48:32.549 21 info flutter.tools compiler message:                             textCapitalization: TextCapitalization.characters,
10:48:32.549 22 info flutter.tools compiler message:                                                 ^^^^^^^^^^^^^^^^^^
10:48:32.550 23 info flutter.tools compiler message: lib/portfolio/transaction_sheet.dart:440:29: Error: No named parameter with the name 'textCapitalization'.
10:48:32.550 24 info flutter.tools compiler message:                             textCapitalization: TextCapitalization.characters,
10:48:32.550 25 info flutter.tools compiler message:                             ^^^^^^^^^^^^^^^^^^
10:48:32.550 26 info flutter.tools compiler message: file:///home/anton/Documents/software/flutter/flutter/packages/flutter/lib/src/material/text_field.dart:99:9: Context: Found this candidate, but the arguments don't match.
10:48:32.550 27 info flutter.tools compiler message:   const TextField({
10:48:32.550 28 info flutter.tools compiler message:         ^
10:48:32.550 29 info flutter.tools compiler message: lib/portfolio/transaction_sheet.dart:554:49: Error: Getter not found: 'TextCapitalization'.
10:48:32.550 30 info flutter.tools compiler message:                             textCapitalization: TextCapitalization.none,
10:48:32.550 31 info flutter.tools compiler message:                                                 ^^^^^^^^^^^^^^^^^^
10:48:32.562 32 info flutter.tools compiler message: lib/portfolio/transaction_sheet.dart:554:29: Error: No named parameter with the name 'textCapitalization'.
10:48:32.562 33 info flutter.tools compiler message:                             textCapitalization: TextCapitalization.none,
10:48:32.562 34 info flutter.tools compiler message:                             ^^^^^^^^^^^^^^^^^^
10:48:32.563 35 info flutter.tools compiler message: file:///home/anton/Documents/software/flutter/flutter/packages/flutter/lib/src/material/text_field.dart:99:9: Context: Found this candidate, but the arguments don't match.
10:48:32.563 36 info flutter.tools compiler message:   const TextField({
10:48:32.563 37 info flutter.tools compiler message:         ^
10:48:36.792 38 info flutter.tools Compiler failed on /home/anton/git/trace/lib/main.dart
10:48:36.844 39 info flutter.tools 
10:48:36.845 40 info flutter.tools FAILURE: Build failed with an exception.
10:48:36.845 41 info flutter.tools 
10:48:36.845 42 info flutter.tools * Where:
10:48:36.845 43 info flutter.tools Script '/home/anton/Documents/software/flutter/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 435
10:48:36.845 44 info flutter.tools 
10:48:36.851 45 info flutter.tools * What went wrong:
10:48:36.851 46 info flutter.tools Execution failed for task ':app:flutterBuildDebug'.
10:48:36.851 47 info flutter.tools > Process 'command '/home/anton/Documents/software/flutter/flutter/bin/flutter'' finished with non-zero exit value 1
10:48:36.851 48 info flutter.tools 
10:48:36.851 49 info flutter.tools * Try:
10:48:36.851 50 info flutter.tools Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
10:48:36.851 51 info flutter.tools 
10:48:36.851 52 info flutter.tools * Get more help at https://help.gradle.org
10:48:36.851 53 info flutter.tools 
10:48:36.851 54 info flutter.tools BUILD FAILED in 18s

key.properties

Hello

When I try build I am getting the following error:

trace/android/key.properties (No such file or directory)

Apologies if this is an obvious issue. Can you tell me what content should be in this file? Is there a procedure for generating this, or do I write it by hand?

Thanks

F-Droid release?

Will it be possible to release this app to F-Droid as well? The open source community will be so happy to have this app FOSS.
Also because there's not many applications (I would even say "no applications") like this on the F-Droid repo.

Transactions not deleting

When I delete a transaction, it clears from the total, but not the screen.

If I clear the portfolio, the total does not show zero till I add a new first transaction.

One transaction produced two items. Both had correct coin logos. One had incorrect name, price and quantity of correct token, but zero total, and it would not disappear.

On Android 6.0.1, LG Nexus 5

method 'setMockMethodCallHandler' isn't defined ; & The getter 'subhead' and 'body2' isn't defined for the class 'TextTheme'.

/C:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.4.3/lib/shared_preferences.dart:146:15:
Error: The method 'setMockMethodCallHandler' isn't defined for the class 'MethodChannel'.

  • 'MethodChannel' is from 'package:flutter/src/services/platform_channel.dart' ('/C:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart').
    Try correcting the name to the name of an existing method, or defining a method named 'setMockMethodCallHandler'.
    _kChannel.setMockMethodCallHandler((MethodCall methodCall) async {
    ^^^^^^^^^^^^^^^^^^^^^^^^
    lib/tabs.dart:206:32: Error: The getter 'body2' isn't defined for the class 'TextTheme'.
  • 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/flutter/packages/flutter/lib/src/material/text_theme.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'body2'.
    .body2
    ^^^^^
    lib/tabs.dart:288:62: Error: The getter 'subhead' isn't defined for the class 'TextTheme'.
  • 'TextTheme' is from 'package:flutter/src/material/text_theme.dart' ('/C:/src/flutter/flutter/packages/flutter/lib/src/material/text_theme.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'subhead'.
    style: Theme.of(context).textTheme.subhead,
    ^^^^^^^

Failing to build

Launching lib/main.dart on iPhone 11 Pro Max in debug mode...
Warning: Missing build name (CFBundleShortVersionString).
Warning: Missing build number (CFBundleVersion).
Action Required: You must set a build name and number in the pubspec.yaml file version field before submitting to the App Store.
Warning: Podfile is out of date
This can cause a mismatched version of Flutter to be embedded in your app, which may result in App Store submission rejection or crashes.
If you have local Podfile edits you would like to keep, see flutter/flutter#24641 for instructions.
To regenerate the Podfile, run:
rm ios/Podfile

Running Xcode build...
Xcode build done. 15.3s
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized.
If you're running an application and need to access the binary messenger before runApp() has been called (for example, during plugin initialization), then you need to explicitly call the WidgetsFlutterBinding.ensureInitialized() first.
If you're running a test, you can call the TestWidgetsFlutterBinding.ensureInitialized() as the first line in your test's main() method to initialize the binding.
#0 defaultBinaryMessenger. (package:flutter/src/services/binary_messenger.dart:76:7)
#1 defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:89:4)
#2 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:140:62)
#3 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:35)
#4 getApplicationDocumentsDirectory (package:path_provider/path_provi<โ€ฆ>
Syncing files to device iPhone 11 Pro Max...

Can't enter data when adding a new transaction

I'm trying to add a new transaction, but I cannot even input a symbol. Tapping on the text field will place the cursor there, so it clearly recognizes that I've tapped there. However, it never opens the keyboard to let me type a symbol (or maybe it's supposed to open a modal dialog that presents me with a list of options?). Similarly, I cannot enter data into Quantity, Price, or Notes fields. Tapping on Exchange will allow me to select "Aggregated" but that seems to be the only control that responds properly.

Pixel 2 on the latest Android 9
Trace version 1.0.1 (2)

screenshot_20180810-110332

'flutter pub get' doesn't work

Hello.

I work at the Nevercode. We are a Continuous Integration platform for mobile applications, and currently working on the flutter integration.
I used your app for some tests, but faced an issue with flutter pub get: it doesn't get any dependencies from the pubspec.yaml. Have you faced this issue on your local device?

Best regards
Jan.

Error: The method 'setMockMethodCallHandler' isn't defined for the class 'MethodChannel'.

/C:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.4.3/lib/shared_preferences.dart:146:15: Error: The method 'setMockMethodCallHandler' isn't defined for the class 'MethodChannel'.

  • 'MethodChannel' is from 'package:flutter/src/services/platform_channel.dart' ('/C:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart').
    Try correcting the name to the name of an existing method, or defining a method named 'setMockMethodCallHandler'.
    _kChannel.setMockMethodCallHandler((MethodCall methodCall) async {
    ^^^^^^^^^^^^^^^^^^^^^^^^

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.