Cryptofolio VS TopHat

Compare Cryptofolio vs TopHat and see what are their differences.

Cryptofolio

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

TopHat

An in-browser personal finance app (by Athenodoros)
Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
Cryptofolio TopHat
9 4
295 124
- -
0.0 0.8
over 2 years ago about 1 year ago
JavaScript TypeScript
GNU Affero General Public License v3.0 GNU General Public License v3.0 only
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Cryptofolio

Posts with mentions or reviews of Cryptofolio. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-10-11.

TopHat

Posts with mentions or reviews of TopHat. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-02-26.
  • Self hosted cryptocurrency holdings tracker / financial manager
    2 projects | /r/selfhosted | 26 Feb 2022
  • Show HN: TopHat Finance – free, open, and offline
    4 projects | news.ycombinator.com | 26 Feb 2022
    * Basic analytics and budgeting - ideally not as rigid as YNAB and friends, but at least something lightweight to tell me where my money is going and how that's changing.

    So over a few months during Covid, I put together TopHat for my own use: it's a SPA on GitHub Pages with no backend, where all data is stored in browser storage (plus a Dropbox sync option, which I wanted as a backup). It's a pretty standard stack (React, Redux, TS), and the code is all available on GitHub (https://github.com/Athenodoros/TopHat) - don't judge too harshly, my day job isn't software engineering! That said, I've found it very rewarding to use something which I enjoy and which I've built - not to mention finally "finishing" a project...

    TopHat can load itself with some demo data, including an example bank statement for upload (check the notification on the top right). Hopefully this is interesting for folks - happy to answer any questions!

    4 projects | news.ycombinator.com | 26 Feb 2022
    I definitely have a lot of opinions about this :D. The main one is that RTK was fantastic (as are the docs!), and createEntityAdapter was definitely better than the equivalent that I wrote before finding it... A few more specific thoughts though:

    - createEntityAdapter was great, but one idea for an addition: I dislike having numbers as IDs (Will floating point precision bite me? Will I accidentally treat them as actual numbers? Do I need to cast them back for lookups or equality checks?), but I didn't get around to moving to strings, and preserving the sorting and ID generation with that in mind. Maybe RTK could bundle some utilities for managing this, like sorting functions and/or ascending ID generation to save others from my fate? I'll definitely start with these next time.

    - I really liked the Slice API in RTK, but I felt like I wanted to run nested slices quite a lot - breaking up serialisable state (ie. user data) and page state, but then breaking down further into individual data types or pages respectively, so that pages could "own" their own state (and maybe get as far as something like a managed Mixin for a page state, like the recurring transaction table). I spent some time writing a way to compose Slices, but I found that it made things probably more complicated than it needed to be - even if you end up with a load of useAccountsPageState-style duplication which is maintained manually. (I'll admit this was a while ago, so my memory of why I decided against this is a little rusty...).

    - I hadn't seen useAppDispatch and useAppSelector - I'll definitely swap over my copy of them in https://github.com/Athenodoros/TopHat/blob/main/src/state/sh... ...

    - I definitely got that the expected pattern is createAsyncThunk (or useDispatch more broadly) rather than my separate functions using TopHatDispatch. I spent some time tooling about with migrating over, but I felt like it was an additional abstraction layer that I didn't really need. I eventually went with a fairly strict flow of "Types -> Storage Logic -> Store Definition -> Actions -> Components" which dealt with the circular imports. I'd be interested in other thoughts behind the best practice though - maybe they're more obvious with other people, or a larger project?

    4 projects | news.ycombinator.com | 26 Feb 2022
    Looks very nice!

    I see you're using Redux Toolkit and TypeScript, including some fairly heavy use of `createEntityAdapter`. Any feedback on using RTK? We're always interested in hearing how RTK is working for our users.

    A couple quick suggestions on the code itself:

    - I see a lot of custom hooks like `useAccountsPageState` [0], except that they're completely duplicating the `useSelector` signature. I think the right answer here is to start by defining the "pre-typed" `useAppSelector` hook we show in our TS usage docs [1]. Then, make sure your selectors have the correct `RootState` type. Finally, you can rewrite the hook as `const useAccountsPageState = () => useAppSelector(selectPageState)`.

    - It looks like you're importing `TopHatDispatch` into some other files. That has the risk of causing circular import problems, since it's importing from the store itself. You may want to rework functions like `updateSyncedCurrencies` [2] to be a thunk. (In fact, looking at the code, this looks like a very good candidate for RTK's `createAsyncThunk` API.)

    [0] https://github.com/Athenodoros/TopHat/blob/a916386edf/src/st...

    [1] https://redux.js.org/tutorials/typescript-quick-start#define...

    [2] https://github.com/Athenodoros/TopHat/blob/a916386edf/src/st...

What are some alternatives?

When comparing Cryptofolio and TopHat you can also consider the following projects:

ccxt - A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading API with support for more than 100 bitcoin/altcoin exchanges

rotki - A portfolio tracking, analytics, accounting and management application that protects your privacy

cryptofinance-google-sheets-add-on - CRYPTOFINANCE() — The easiest way to get cryptocurrencies prices and more in Google Sheets.

basic-hentai-video-downloader - A simple hentai video downloader. Electron Windows App

hodlwatch - Simple, yet powerful web app for automatic cryptocurrency portfolio tracking

reactjs-crypto-api-dashboard - Create a cryptocurrency dashboard using ReactJS and the Coinbase API

Sentry-Picam - A simple wildlife camera for Raspberry Pis.

Manta - 🎉 Flexible invoicing desktop app with beautiful & customizable templates.

twinkle-tray - Easily manage the brightness of your monitors in Windows from the system tray

Apexwallet - Get real time market information on your favorite crypto currencies, watch them to keep track and also trade virtually, risk free.

DeadHash-js - DeadHash - JS version

Lepton - 💻 Democratizing Snippet Management (macOS/Win/Linux)