We have launched a new React template called Bookkeeper: React Accounting Template. Unlike the usual admin dashboard template, this accounting template is unique, hardly has any analogs.
- General Ledger
- Accounts and Subaccounts
- Different accounting reports
- Customers Management
So, what it is made of? In one sentence, this template has a frontend made with React.js, has a material design based on the Material-UI library, and the backend was made using TypeScript and Node.js. Plus we needed to use typeORM that goes perfectly with TypeScript.
Let’s take a closer look at the technology stack we will try to figure out why we think it is the best way to create an accounting web app.
We could choose React.js or Angular, both of which could be used to create large scale applications. We just noticed that React templates are more popular than Angular ones. And we don’t have any good explanation for this phenomenon.
We used the Material-UI library because:
- it is extremely popular nowadays,
- it has extensive documentation,
- it has great support and huge community (this library is open-source),
- helps you to work in a team (and still have a consistent design),
- it is very reliable (in terms that it has tons of components),
- has great styling API.
We hardly out anyone will question our choice concerning TypeScript it is the seventh most used language on GitHub. Typescript compiler has five million downloads every week.
We use this runtime environment in over a dozen of our templates. Node.js pros and cons are the subject of a passionate pleading for several years.
Since it is impossible to create an accounting web app without a database, we need an ORM. We like to work with typeORM due to its unique feature – it supports Data Mapper as well as Active Record.
Express seems a natural choice in this stack: it supports Node.js, you don’t need to with JS. Plus Express.js offers one of the best debugging mechanisms.
As in the previous paragraph, joi is a perfect choice for Node.js projects.
This database nearly fits all. It is scalable, works with data types better than other databases. Plus PostgreSQL supports such methods of indexations as GIN indexes (for peaches in texts) and B-trees.