Show HN: Figr.app – a multi-user, notepad style calculator (desktop app) (figr.app)
https://news.ycombinator.com/item?id=31817997
After a couple of user requests (and having a good think about it) I decided to migrate the web UI to create a Mac and Windows desktop app. After using it a little bit, I feel this is a much better experience than the webapp, and reduces a lot of the friction if I wanted to run a few small calculations.
You can find the download links below:
For context, Figr was a side project I worked on to get back into coding after being in management for the last few years. It's kind of a cross between popular notepad style calculators (like Soulver, Numi, etc), but also has multi-user editing (like Google Docs). I've got some example templates below which hopefully show what it can do, and hopefully is relevant to the community:
- https://www.figr.app/s/RUNWAY - An example to work out your burn rate / runway
- https://www.figr.app/s/LTVCAC - An LTV/CAC calculator
- https://www.figr.app/s/CONTRACTOR - Hourly rate calculator for contractors
Opened to feedback, or technical questions if others are in the process of moving, or thinking about moving their webapps to desktop apps, as it's been quite a journey!
Thanks!
91 comments
[ 90.6 ms ] story [ 678 ms ] threadhttps://github.com/filipesabella/CalcPad/
I think it should be quite straight forward but it's more the deployment and maintenance I'm conscious of.
Mac and Windows (to an extent) both have app stores which can handle hosting, auto-updates, etc, though for Linux I'd have to build a bit of that myself. That also complicates platform specific dev / testing / deployment, and as this is a side project I'm conscious of time.
But if there's demand and things go well, I could be persuaded to release on another platform!
Testing should also be simpler as most of your dependencies will bundled and testing in one distribution should suffice.
As a user, I much prefer AppImage – snap/flatpack feel like adding another app store to my system, while AppImage is just download and run.
Can you address the elephant in the room: why use Figr instead of Excel?
Why Excel? I feel there's a gap between a "desktop calculator" (like the default calculator in most OSes) and Excel.
E.g. Desktop calculators I can say, "calculate tax for a single item", but sometimes I need to calculate tax or multiple sums in a list. You can probably break out Excel at this point - though I feel there's a bit of inertia in this. I.e. Thinking of how to structure the sheet, where to put values / formulas / etc.
I feel with a notepad calculator, it's a bit closer to how my brain thinks and I can get simple calcs out quicker. I may be biased too, but I find it easier to read my results the next time I load the sheet in Figr vs Excel.
Btw I'm not saying this is an Excel replacement - there's always going to be a place for that, though I think this is a nice middle ground.
https://soulver.app/
From the OP
Other examples: sequencediagram.net, SwiftUI and React to some extent, vim directory managers (e.g. some let you rename files just by editing text and delete them just by deleting lines)
The only issue is, I've worked on building these, and it's a lot harder than it looks. You can either do immediate mode, which requires fast parsing and rendering and supporting all sorts of illegal values; or you can try to do retained mode, but there are insane #s of edge cases and the effort to compute diff usually makes it slower anyways. Furthermore if you want a really fancy text view, you need to build it yourself, which is a huge project on its own.
I haven't heard of immediate / retained mode before - interesting concept! Figr is more straight forward and evaluates a line as "0" if there's an error (the opposite of "be conservative in what you send, be liberal in what you accept"!) so they are problems where entire calculations are "wiped out" if there's an error on a line, but I think that's the trade of to having accurate results.
As for a custom text view completely agree! I did do that initially though switched over to draftjs later and (despite it's lack of good guides) has been a huge time saver!
another which is more of a workaround is to make the preview editable. So when the text is hard to understand or manipulate you just edit the preview, and when it’s easier you just input text. i believe this is what SwiftUI does and what people have tried with HTML and React.
of course both of these are exponentially hard. The former means you have to write your own editor and the UI for the widgets and think about a lot of problems (text wrapping? cursor movement?) The latter means you have to write a UI on freely-editable content which is really challenging and then have it sync with the text which also brings up a lot of problems (AST formatting? How fast to update?)
In fact I haven’t yet seen a single good example of either type of editor, maybe SwiftUI is good although i haven’t used it. Many existing ones are buggy with ugly unintuitive GUIs or produce bloated AST
I'm starting to think you guys don't like vowels at the end of your words.
Next up: Calculatr
Naming reminds me of the mid to late 2000's.
Flickr, created in 2004.
Tumblr, created in 2007.
Just out of curiosity, what's the aversion to app stores? I know for paid apps there's a large commission to Apple / Microsoft (I try to download direct when I can) though for free apps I'm a bit more forgiving.
Are you using OT or CRDTs for real-time editing?
Are you using any specific cross-desktop platform? (Electron?)
[1] https://www.inkandswitch.com/local-first/
Thanks! This was an intentional design decision on the desktop too so I'm glad someone noticed!
> Are you using OT or CRDTs for real-time editing?
You know this is embarrassing - it's the first time I've heard of those terms and from a quick google I really needed this a few months ago! A lot of the problems described I actually had to battle with and if you try hard enough, you can get the calcs to break state between the users.
I'll definitely dive deeper into this, thanks!
> Are you using any specific cross-desktop platform? (Electron?)
Yeah sure - the app was initially written in React.js for web, and I just did a few modifications to get it deployed via Electron. Tbh the migration was quite straight forward (there were a few design tweaks and UI elements I had to make) but surprisingly the most difficult part was creating the binaries and submitting them to the app stores!
There was also some issue with CORS (due to Electron using local .html file) but managed to find some code to rewrite the headers which fixed it!
It's on the list though but unfortunately due to how integral mathjs is to the app it might not be an easy change to make!
https://calca.io
I played around with porting my Numi sheets over, and the only thing that's tripped me up so far is using underscores as numerical separators, eg: 1_000_000 for 1000000. All my Numi values are written this way, so that's my only feature request. I guess I could just use commas in this context.
Great work!
Edit: And dark mode :)
Thanks for the work! Waiting for a Linux version :) (Flathub autoupdates, if you were thinking of appimages)
Figr, ignoring the lack of mobile apps, doesn’t really scratch this itch either though, as I want to self host my sync.
It works really great on mobile too (even their website is not updated it works fine on latest OSs).
Just some quick feedback from the first things I tried in the app (which did not work). It has to do with currency conversion: https://user-images.githubusercontent.com/93975/191202587-9b...
Example
Neither is as approachable for a non-programmer as the OP, however.
I'm still looking for the perfect text-based solution.
If you are looking for an iOS/iPadOS app my own Kalkyl 3 includes support for shared documents with real-time collaboration.
You don’t input text (but there’s of course keyboard support), instead you input tokens so that e.g sin is one token just like the digits. WYSIWYG editing with raised exponents, root-overbars. Arbitrarily complex unit conversions (e.g USD/ft^2 to EUR/m^2 is a single conversion) and dimensional analysis.
The app is free, but the document features are for pay (with a free trial):
https://apps.apple.com/se/app/kalkyl/id519933025?l=en
- https://bbodi.github.io/notecalc3/notecalc
- https://dedo.io/
- https://notepadcalculator.com/
Numi:
+ lightweight
+ very fast start
- tabs are a paid feature
Figr:
+ variables
+ tabs
- slow start compared to Numi
- cannot customize the icon bar
What both apps dont have and what I am looking for: A super lightweight excel-like tables app to do basic calculations with formulas behind the cells. Do you know anything like that, guys?