• Stars
    star
    280
  • Rank 147,492 (Top 3 %)
  • Language
    JavaScript
  • License
    GNU Affero Genera...
  • Created almost 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Track your cryptocurrency holdings/portfolio with an open-source web, mobile, and desktop application, along with a self-hosted RESTful API.

Image

Downloads

Based on GitHub Release downloads and DockerHub pulls.

What is Cryptofolio?

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.

Is it on the Google Play Store?

The Android mobile app is indeed on Google Play.

Is there a demo version?

Yes there is, but it's not intended for long-term use as it stores data in localStorage.

How can I view a list of upcoming features?

The project board will be updated with any features that are currently in development.

Do you accept donations?

If you'd like to donate, then please feel free to do so, it'd be much appreciated. However, I don't want you to feel obliged to do so, and there are no perks for it. If you decide to donate, please contact me afterwards so I can actually thank you, and I'd love to hear about any ideas you may have for Cryptofolio. If they're within the scope of the project, I'll probably implement them.

Click on the collapsible items in the list below to view the corresponding donation address.

ADA
addr1qyh9ejp2z7drzy8vzpyfeuvzuej5t5tnmjyfpfjn0vt722zqupdg44rqfw9fd8jruaez30fg9fxl34vdnncc33zqwhlqn37lz4
XMR
49wDQf83p5tHibw9ay6fBvcv48GJynyjVE2V8EX8Vrtt89rPyECRm5zbBqng3udqrYHTjsZStSpnMCa8JRw7cfyGJwMPxDM
ETH
0x40E1452025d7bFFDfa05d64C2d20Fb87c2b9C0be
BCH
qrvyd467djuxtw5knjt3d50mqzspcf6phydmyl8ka0
BTC
bc1qdy5544m2pwpyr6rhzcqwmerczw7e2ytjjc2wvj
LTC
ltc1qq0ptdjsuvhw6gz9m4huwmhq40gpyljwn5hncxz
DOT
12nGqTQsgEHwkAuHGNXpvzcfgtQkTeo3WCZgwrXLsiqs3KyA
NANO
nano_3ed4ip7cjkzkrzh9crgcdipwkp3h49cudxxz4t8x7pkb8rad7bckqfhzyadg

What's the tech stack?

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.

Is there any sort of documentation?

Yes, the API is documented.

Can I import my wallets or transact?

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.

What can it do?

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.

Is my data kept private?

Since your data never leaves whatever device the API is hosted on, it's as private as you make it. Cryptofolio doesn't ever send your data anywhere, and there's no centralized server or anything to phone home to; it's entirely self-contained and under your control.

Is it secure?

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).

How do I set it up?

If you use DockerHub, then simply follow the instructions on the page there.

Use docker pull xtrendence/cryptofolio:latest to quickly pull the latest image.

Initial Username: admin (the admin account must always have the username "admin")

Initial Password: admin

First, download the latest release from the Releases section. For the API and website, to ensure you don't get any unfinished code and that everything is compatible, download the "Source code (zip)" file from the Releases section rather than just downloading the source code containing the most recent commits. You'll then have to set up a server on your network using a guide such as this one.

If you'd rather host it online, you can use a service such as this one in order to get free PHP hosting. Your holdings and such are stored in plaintext, 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" folders with whatever storage interface the hosting service provides, and you'd be done.

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 (you'll need to know your server's local IP for this). For example, if you're hosting it on your own network, the URL would look something like:

http://192.168.1.58:8080/api/

Or on port 80:

http://192.168.1.58/api/

If everything is working correctly, opening that URL with a browser should output the following:

{ "status": "online" }

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).

What is the Coin ID when adding an asset?

V.2.0+

You no longer need to use the CoinGecko ID of a cryptoasset to add it to your holdings. They can be added using the appropriate symbol/ticker (such as BTC for Bitcoin, ADA for Cardano, ETH for Ethereum, DOT for Polkadot and so on).

Older Versions

In order to add an asset to your list of holdings, you will need to find out what its ID is on CoinGecko. You can find this by looking at the URL of whatever asset you're looking at. So, for example, the Moon token of r/CryptoCurrency can be found here, and as seen in the URL, its ID is simply "moon". This process might be made easier in the future if the demand is there, and I might add some form of search functionality, but this wouldn't really be possible with CoinGecko's current API.

Please keep the following points in mind:

  • 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.
  • Coin rankings and data might differ from other websites such as CoinMarketCap. Any inaccuracy would be due to CoinGecko's data being wrong or otherwise different.
  • Your PIN code for sharing your portfolio is stored in plaintext.
  • 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.

Credits

Chart.js: https://www.chartjs.org/

QR Code Styling: https://qr-code-styling.com/

Flatpickr: https://flatpickr.js.org/

Mobile App

Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot

Desktop App

Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot

Website

Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot

More Repositories

1

FileDrop

Grade: 89%. COMP3006 coursework. An encrypted file sharing application that leverages web sockets to allow users to send and receive files.
JavaScript
128
star
2

X-Anonymous

An anonymous Node.js chat web application for end-to-end encrypted communication. All encryption is done on the client-side using RSA-2048/3072/4096, so the server literally knows nothing.
JavaScript
18
star
3

X-Notify

A dependency-free JavaScript notification library.
JavaScript
13
star
4

X-Notes

X:/Notes is a note taking web app developed in HTML, CSS and JavaScript (+jQuery) for the front-end, and PHP for the back-end. Notes can be encrypted with AES-256.
PHP
13
star
5

X-Controller

A safe and simple Node.js remote access tool so you can be lazy.
JavaScript
8
star
6

Lights

A web interface along with a PHP based API to interact with Yeelight smart bulbs.
JavaScript
6
star
7

Income-Tracker

A simple income tracker made with Node.js.
JavaScript
4
star
8

CryptoShare

Grade: 82%. My COMP3000 final year university project that allows you to manage nearly every facet of your finances with an open-source web, mobile, and desktop application, along with a self-hosted GraphQL API.
JavaScript
4
star
9

COMP2003-2020-X

Grade: 86%. COMP2003 Coursework by Team X. An app that allows sufferers of Multiple Sclerosis to record their daily falls, and answer questions posed by researchers.
JavaScript
4
star
10

Zoom-Link-Parser

Just a tiny webpage to easily extract the token, meeting ID, and password from a Zoom invitation link.
CSS
4
star
11

X-Chat

A Node.js and Socket.IO chat web application with RSA-2048 and AES-256-CTR encryption.
JavaScript
4
star
12

X-Passwd

A simple, local, open-source AES-256-CTR encrypted password manager for Android. Built with the Flutter SDK.
Dart
3
star
13

X-LANDrop

An AirDrop-like application running on Node.js (with Electron) that allows for encrypted file sharing between devices on the same network.
JavaScript
3
star
14

Chrome-Crypto-Ticker

A lightweight Chrome extension to keep track of cryptocurrency prices.
JavaScript
3
star
15

X-Music

A music player for Windows, Mac, and Linux running on Node.js (with Electron). It also has a remote control feature.
JavaScript
3
star
16

University-Revision

University revision notes for Computing.
HTML
3
star
17

SOFT152-Assignment

Grade: 87%. SOFT152 Coursework by Khodadad (Adrian) Nouchin. An Airbnb management tool.
C#
3
star
18

xtrendence.github.io

GitHub home page.
CSS
2
star
19

X-Plorer

X:/Plorer is a cross-platform file explorer running on Node.js (and Electron).
JavaScript
2
star
20

Xtrendence

Is this what all the cool guys do?
2
star
21

X-University

A PHP-based website to keep track of everything related to your life while studying a course in university.
CSS
2
star
22

NET112-Practical

Grade: 68%. Practical coursework for the NET112 module by Khodadad (Adrian) Nouchin. Improving a C++ image processing application.
C++
2
star
23

WhistleToTabs

A web-app to convert your whistling to guitar notes.
JavaScript
2
star
24

SOFT166-Practice

Grade: 87.5%. Practice element of the SOFT166 module by Khodadad (Adrian) Nouchin. A Tic-Tac-Toe game using Philips Hue smart bulbs.
HTML
2
star
25

BDobbinsFTW-Archive

A complete archive of BDobbinsFTW's YouTube channel.
JavaScript
2
star
26

2FA-Notifier

A browser extension and mobile app to automatically show 2FA codes for any website as notifications on your phone.
JavaScript
1
star
27

X-OS

A PHP cloud storage solution that simulates an operating system, complete with a file system, drag and drop file management, directory nesting, multiple file uploads etc.
JavaScript
1
star
28

COMP2005-Coursework

Grade: 73%. COMP2005 Coursework by Khodadad (Adrian) Nouchin. An application for testing an API that provides information regarding restaurants in NYC.
Java
1
star
29

COMP2000-Assessment

Grade: 100%. COMP2000 Coursework by Khodadad (Adrian) Nouchin. An automated checkout system for a supermarket.
Java
1
star
30

Collector

A website that can be used to keep track of a collection of items. It uses the Imgur API to allow users to upload images of their collectibles.
PHP
1
star
31

X-Calendar

A calendar web app that allows the user to navigate a fully working calendar, keep track of events, and set reminders.
CSS
1
star
32

Tarball-Search

A search tool that can recursively read the content of ".tar.gz" files. Features a Node.js API, and a React Native mobile application along with AES-256-CTR encryption.
JavaScript
1
star
33

Native-Encryption

My first mobile app developed using React Native. A simple app that allows the user to use AES-256 to encrypt/decrypt data.
JavaScript
1
star
34

Binary-Converter

A simple tool for converting between decimal and binary (with support for One's Complement, and Two's Complement).
JavaScript
1
star
35

ISAD157-Coursework

Grade: 75%. ISAD157 Coursework by Khodadad (Adrian) Nouchin. A WinForms application for reading data from a MySQL database.
C#
1
star
36

COMP2001-Coursework

Grade: 98%. COMP2001 Coursework by Khodadad (Adrian) Nouchin. A RESTful authentication API, and a linked data application.
CSS
1
star
37

PiP-Browser

A frameless picture-in-picture application that can display the content of a URL.
JavaScript
1
star