|
1 | | -This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli). |
| 1 | +# Personal CryptoFolio |
2 | 2 |
|
3 | | -# Getting Started |
| 3 | + |
4 | 4 |
|
5 | | ->**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding. |
| 5 | +Personal Portfolio for crypto assets. |
6 | 6 |
|
7 | | -## Step 1: Start the Metro Server |
| 7 | +This mobile app allows you to track your portfolio registering all the transactions for each asset you have. It is very similar to many others that exists in the market, but with focus on privacy and data availability. |
8 | 8 |
|
9 | | -First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native. |
| 9 | +We think it's worth having a portfolio manager that allows you to keep your information isolated and private from anyone else. |
10 | 10 |
|
11 | | -To start Metro, run the following command from the _root_ of your React Native project: |
| 11 | +You can download the app directly from this GitHub repo. You can even get it automated with the <a href="https://obtainium.imranr.dev/">Obtainium</a> app. |
12 | 12 |
|
13 | | -```bash |
14 | | -# using npm |
15 | | -npm start |
| 13 | +Download and old unmaintained version from the Google Play Store: <a href='https://play.google.com/store/apps/details?id=com.improvein.personalcryptofolio'>old v1.x app</a> |
16 | 14 |
|
17 | | -# OR using Yarn |
18 | | -yarn start |
19 | | -``` |
20 | | - |
21 | | -## Step 2: Start your Application |
22 | | - |
23 | | -Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app: |
| 15 | +## Core principles - where we are different |
24 | 16 |
|
25 | | -### For Android |
26 | | - |
27 | | -```bash |
28 | | -# using npm |
29 | | -npm run android |
30 | | - |
31 | | -# OR using Yarn |
32 | | -yarn android |
33 | | -``` |
34 | | - |
35 | | -### For iOS |
36 | | - |
37 | | -```bash |
38 | | -# using npm |
39 | | -npm run ios |
40 | | - |
41 | | -# OR using Yarn |
42 | | -yarn ios |
43 | | -``` |
| 17 | +* **Data availability**: export and import your data and allow YOU to be the owner of it |
| 18 | +* **Privacy**: no 3rd parties involved in the storage of your data |
44 | 19 |
|
45 | | -If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly. |
| 20 | +## Features |
46 | 21 |
|
47 | | -This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively. |
| 22 | +* Track several crypto assets (we will add more) |
| 23 | +* Track each asset's transactions by registering your operations (buy or sell) |
| 24 | +* See your portfolio valuation and profit/loss |
| 25 | + * You can see it at a portfolio level by clicking on the total valuation amount in the main screen |
| 26 | + * Or you can see it an asset level in each asset's screen |
| 27 | +* Online price retrieval from different sources: |
| 28 | + * Binance |
| 29 | + * Bitfinex |
| 30 | + * Bitstamp |
| 31 | + * Bittrex |
| 32 | + * Kraken |
| 33 | +* Export your entire portfolio in JSON format<br> |
| 34 | + _(at the moment only available with the "share" option)_ |
| 35 | +* Import your entire portfolio in JSON format<br> |
| 36 | + _(at the moment only by copy-pasting the JSON content)_ |
| 37 | +* PIN protection for the app |
48 | 38 |
|
49 | | -## Step 3: Modifying your App |
| 39 | +## Privacy |
| 40 | +Some things to consider regarding your privacy: |
50 | 41 |
|
51 | | -Now that you have successfully run the app, let's modify it. |
| 42 | +* Your entire portfolio data is stored in your device. Nothing is sent to any server. |
| 43 | +* The only contact with the "outside world" is for price retrieval from price sources like exchanges. But in those cases, nothing from your portfolio is revelead except for the coin which you want to fetch the price for. |
| 44 | +* The App can be protected with a PIN. |
| 45 | +* Data is stored non-encrypted in the device. (see [future features](https://github.com/improvein/personal-cryptofolio/issues)).<br/> |
| 46 | + However, the isolation the modern OS provides protects you from other apps trying to access it in most cases. |
52 | 47 |
|
53 | | -1. Open `App.tsx` in your text editor of choice and edit some lines. |
54 | | -2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes! |
| 48 | +## Contribute |
| 49 | +You are more than welcome to contribute! |
55 | 50 |
|
56 | | - For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes! |
| 51 | +Just [report an issue](https://github.com/improvein/personal-cryptofolio/issues) or [make a pull request](https://github.com/improvein/personal-cryptofolio/pulls), whatever you want. |
57 | 52 |
|
58 | | -## Congratulations! :tada: |
| 53 | +## Development |
| 54 | +This is a React Native application. |
59 | 55 |
|
60 | | -You've successfully run and modified your React Native App. :partying_face: |
61 | | - |
62 | | -### Now what? |
| 56 | +So after cloning the repo make sure you install all the dependencies: |
| 57 | +``` |
| 58 | +npm install |
| 59 | +``` |
63 | 60 |
|
64 | | -- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps). |
65 | | -- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started). |
| 61 | +Then plug your phone or start an emulator for the OS you want. OS specific instructions below. |
66 | 62 |
|
67 | | -# Troubleshooting |
| 63 | +### Android |
| 64 | +Before starting you need to create the file `android/local.properties` with this: |
| 65 | +``` |
| 66 | +APP_RELEASE_STORE_FILE=/location/to/your/keystore.file |
| 67 | +APP_RELEASE_STORE_PASSWORD=your_store_password |
| 68 | +APP_RELEASE_KEY_ALIAS=your_key_alias |
| 69 | +APP_RELEASE_KEY_PASSWORD=your_key_password |
| 70 | +``` |
| 71 | +(if you have any doubt as for the use of these parameters, check the [android/app/build.grade](https://github.com/improvein/personal-cryptofolio/blob/master/android/app/build.grade) file) |
68 | 72 |
|
69 | | -If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page. |
| 73 | +Then run the project in debug mode in Android: |
| 74 | +``` |
| 75 | +react-native run-android --appIdSuffix "debug" |
| 76 | +``` |
| 77 | +(the suffix thing is because the app is configured to add a "debug" prefix to the package name when running on debug mode. That way it doesn't run into conflics with your production app that might be installed on the device) |
70 | 78 |
|
71 | | -# Learn More |
| 79 | +### iOS |
| 80 | +(@TODO: NEED MORE DETAILS HERE) |
72 | 81 |
|
73 | | -To learn more about React Native, take a look at the following resources: |
| 82 | +Run the project in iOS: |
| 83 | +``` |
| 84 | +npm run ios |
| 85 | +``` |
74 | 86 |
|
75 | | -- [React Native Website](https://reactnative.dev) - learn more about React Native. |
76 | | -- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment. |
77 | | -- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**. |
78 | | -- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts. |
79 | | -- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native. |
| 87 | +For more information about how to develop and build using React Native: https://facebook.github.io/react-native/ |
0 commit comments