PS - Strike's page is so nice! Hnnnggg. Love the little diagram.
34 karma · joined July 20, 2018
PS - Strike's page is so nice! Hnnnggg. Love the little diagram.
If double-entry accounting only exists in your project insofar as you need to account for your own business, then, as you say, Amatino would probably be an excessive solution creating unnecessary work.
Aside, on the topic of exchange rates - Amatino has built in daily exchange rates between each of 36 major currencies (You can also feed it your own, if you want more resolution / different units of account). It also automagically computes unrealised gains and losses.
In my opinion, ledger entries are the hardest part of accounting. Invoices, etc, are all supersets of double-entry accounting, and can be reduced to collections of entries if the underlying double-entry system is sufficiently robust, generic, and and capable.
Such a system should be able to, for example, recursively sum entire account trees, while transparently translating (instantly) across heterogeneous units of account (e.g. stocks, currencies, cryptos, intangibles), and do all that on any device, on any platform, at any time, anywhere on Earth, on demand.
I know this sounds crazy - Sometimes I think I am crazy! Across the world, between companies, and even within Big4 accounting firms, there are infinite ways of constructing an 'invoice' or a 'credit note'. Everyone has their preferred way, none being right or wrong.
Amatino aims to sit below that level - Allowing developers to create their accounting system their way. No compromises.
Again, I really appreciate you looking, even if you think Amatino isn't a worthwhile project. Pondering this reply was in itself a very valuable exercise for me, so thank you for taking the time to comment!
More time spent developing awesome applications, less time spent (for example) developing logic to recursively sum accounts in multiple currencies.
I'm so glad you find the pricing attractive. I've devoted a lot of effort building the system in a cost effective way, so I can keep the price down.
I am a die-hard GnuCash fanatic!
In the end, I came to the conclusion that many people want to store their data online. Whether it is their intimate photos, medical history, or bank statement. Yet some services do not meet this trust with discretion. That angers me, upsets me, and gets me fired up to write good code.
I want to give those people a way to store their financial data that is up to my paranoid privacy standards. Privacy has informed a lot of design decisions in Amatino, often to the detriment of performance or features.
I'm starting to blab on - I'd love to continue this thread though! Privacy is issue #1 for me and I would happily chat about it all day.
In my fantasy land, Amatino has replaced your 'sales_history' table completely, from an accounting perspective. As your business grows and your needs grow more complex, you would make calls to Amatino rather than developing new internal solutions.
For example, perhaps your sales_history table is implicitly denominated in Euros, but you expand into the US and now need to store U.S. Dollar amounts. In Amatino, you could instantly create a USD revenue account, and proceed to view a combined balance of all revenue accounts.
The time you would have spent dealing with manipulating double-entry data instead goes into making your product more awesome.
Obviously Amatino has a long way to go to earn that level of trust!
I see Amatino used as the unsexy, unsung, unseen double-entry data layer for other apps. Perhaps those apps are fancy GUI accounting apps like Xero, perhaps they are in-house bookkeeping systems, and so on.
Amatino saves the developers of such apps from having to develop their own double-entry systems, and provides them with a rich feature-set to draw on.
In "MVP" testing, I found that one of the critical problems with the service was latency. Amatino was used as the data layer for a GUI accounting application. When the service was running ~200ms+ away, the application spent too much time doing 'loading spinners' and the user experience began to suffer.
This experience led me to adopt a distributed design, that allows Amatino to sit as close as possible to end users.
Fortunately, deploying to a new region is as simple as running one script, the process is fully automated. So I don't have to worry about trading time on investing in other areas of the product.
'Independent and agnostic from the accounting backend / says' is exactly what I'm going for, and I'm really excited to hear that you see some value in the concept. I'll take your advice to heart!
Amatino is trying to sit at a lower-level of the value chain than reporting, GUIs, and other layers. Amatino aims to enable others to create amazing reporting and GUIs, while charging them an extremely low price to do so.
The blog is probably a good place to start anyway, as it shows real development rather than my marketing-speak!