Nice work! I like that you're using rational numbers, I thought about going that route but decided to compromise by using Decmial.js in the end. Also really like the "Same Use Case" section in your readme. It's a good summary of the reasons I made this app :)
This is impressively close to what I have in my desired spec (but already more future proof). Congratz!
https://github.com/xixixao/recomputer
https://xixixao.github.io/recomputer/