Skip to content

Commit 1892edd

Browse files
committed
Added useful information to the README file.
1 parent 291932c commit 1892edd

File tree

5 files changed

+48
-12
lines changed

5 files changed

+48
-12
lines changed

README.md

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,55 @@
11
# Cryptofolio
22

3-
### This project is still being developed, and isn't finished.
3+
## The desktop application is still being developed.
44

5-
A web, mobile, and desktop application to track your cryptocurrency holdings.
5+
### What is Cryptofolio?
6+
7+
Cryptofolio is an open-source, and self-hosted solution for tracking your cryptocurrency holdings. It features a web interface, an Android mobile app, and a cross-platform desktop application for Windows, macOS, and Linux. These three platforms all work using a RESTful API, which you'd have to host yourself.
8+
9+
### What's the tech stack?
10+
11+
The web interface is just HTML/CSS with vanilla JS, the mobile app was made with React Native, the desktop app is essentially a clone of the website and uses Electron. The RESTful API was coded in PHP.
12+
13+
### Can I import my wallets or transact?
14+
15+
No. Cryptofolio is solely able to keep track of the value of any cryptoassets you manually add. It does not communicate or integrate with any blockchain.
16+
17+
### What can it do?
18+
19+
It can provide you with a quick glance at the market, while also keeping track of your assets and their value. It also includes a feature that allows you to share your portfolio in a read-only way with anyone you choose to give the link to. In order to set this up, please go into the "Settings" section of the web interface, enable portfolio sharing, set a PIN code, and use the generated URL to view your assets without having to login. This allows you to share your portfolio with friends, family, or strangers without them being able to modify it.
20+
21+
### Is it secure?
22+
23+
Since no private keys or actual funds are held on Cryptofolio, your assets aren't at risk in any way. User passwords are hashed with bcrypt, and there are client-side validation checks when performing actions that modify any data. However, since this is a self-hosted application that's only intended to be used by one person, there aren't that many validation checks on the server-side, so if you tried to break it on purpose, you'd probably succeed. The idea here is that you wouldn't try to mess up your own data. In any case, if you do break things, deleting "account.json", "holdings.json", and "settings.json" in the "/api/data/" directory, and subsequently logging in again would generate a fresh working copy of the files (though you'd lose your data).
24+
25+
### How do I set it up?
626

727
**Initial Password**: admin
828

9-
### Progress
29+
First, download the latest release from the [Releases](https://github.com/Xtrendence/Cryptofolio/releases) section. You'll then have to set up a server on your network using a guide such as [this](https://www.ionos.co.uk/digitalguide/server/tools/xampp-tutorial-create-your-own-local-test-server/) one. Ideally though, you wouldn't want to host the API on the same device you use the website unless you keep the device on 24/7. A Raspberry Pi would be perfect in this situation.
30+
31+
*If you'd rather host it online though, you can use a service such as [this](https://www.000webhost.com/free-php-hosting) one in order to get free PHP hosting. Your holdings and such are stored in plaintext though, so keep in mind that the hosting provider would be able to see your data. This option is a lot easier though, you'd essentially just have to upload the "api" and "website" with whatever interface the hosting service provides, and you'd be done.*
32+
33+
Once you've set up a server, extract the content of the ZIP archive you downloaded from the Releases section, and copy-paste the "api" folder to wherever your server's DocumentRoot directory is (usually C:/xampp/htdocs/), and take note of the URL pointing to the "/api/" directory. For example, if you're hosting it on your own network, the URL would look something like:
34+
35+
http://192.168.1.58:8080/api/
36+
37+
Or on port 80:
38+
39+
http://192.168.1.58/api/
40+
41+
If everything is working correctly, opening that URL with a browser should output the following:
42+
43+
```{ "status": "online" }```
44+
45+
You can then copy the "website" folder into the DocumentRoot directory as well. Install the APK file on your Android phone, launch the app, and enter the URL you took note of earlier, and enter "admin" as your password (you can and should change this in the "Settings" page after you first log in).
46+
47+
### Please keep the following points in mind:
1048

11-
|Platform |Completion|Stage |
12-
|-----------|----------|-----------|
13-
|API |100% |Finished |
14-
|Website |100% |Finished |
15-
|Mobile App |100% |Finished |
16-
|Desktop App|0% |Development|
49+
- Since the CoinGecko API is used to fetch and utilize market data (such as the price of a cryptocurrency), your IP will most likely be logged by CoinGecko as you'd be making requests to their servers.
50+
- Coin rankings and data might defer from other websites such as CoinMarketCap. Any inaccuracy would be due to CoinGecko's data being wrong.
51+
- Your PIN code for sharing your portfolio is stored in plaintext.
52+
- CoinGecko's API is limited in terms of both functionality, and how often requests can be made. As such, be careful not to refresh **too** often. Any rate limits are temporary though, you won't get banned or anything permanently.
1753

1854
![Image](https://i.imgur.com/XcDdWHP.png)
1955
![Image](https://i.imgur.com/eL5jRzj.png)

api/data/account.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

api/data/holdings.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

api/data/settings.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

api/index.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?php
2+
echo json_encode(array("status" => "online"), JSON_PRETTY_PRINT);
3+
?>

0 commit comments

Comments
 (0)