Avatar of Carlos Garafulic
Recommends
on
PostgreSQLPostgreSQL

I am a business analyst with many years of experience. Your stack looks good to me. Go is a great choice for backend speed, React is the most used JS front-end library/framework, and Next will help the SEO of your web apps, due to its feature to be as a Server-Side Rendering framework developed on top of React. My only advice is to start looking at Postgres as a relational database instead of MySQL. Postgres is 100% open source. MySQL is owned by Oracle, and the only way to go totally free is having the community edition which is limited. MySQL is a simpler database. Postgres can handle massive databases, it is an Object-Relational with extensive features. Postgres has native NoSQL capabilities to deal with complex queries. There is PGAdmin UI to handle Postgres databases design, similar as Workbench is for mySQL.

READ MORE
12 upvotes·15.6K views

If you are starting from scratch, I would recommend Express.js as a backend web framework. It is faster and more flexible than Django. Express makes it easy to build web applications offering numerous benefits such as efficiency and quicker development times. Some features that are worth mentioning: middlewares, templating, routing, and debugging.

The most important element that is missing the stack is the database. A Web-Based ERP/Accounting Software require a powerful Relational Database to comply with ACID princliples (Atomicity, Consistency, Isolation and Durability). By atomicity, we mean that that database is able to perform the transactions in an atomic manner. A transaction is just a single unit of work, which can either be one query, or multiple queries. Let's say that we have two accounts. And we need to transfer $100 from account one to account two. Now this transfer is just one transaction, but it is going to consist of three different steps. The first step is checking if the account one does have $100. The second would be upgrading the amount of account one to be $900. And the third would be taking this $100 and making the balance and account two be $200. If the database does support atomic transactions, if one of these three steps fail, the whole transaction should fail. This is what atomicity is.

Consistency means that the database should help in achieving the correct data state, adding certain constraints. We can add a constraint on the amount column that it can never be negative, and the database must make sure that this constraint must always be followed.

Then, we have isolation, which is mainly about the concurrency control. Let's say that we have an account which has $1,000, and there are two persons A and B trying to get the money out of this account. So $1,000 and $100. If we let both of these transaction happen at the same time, this would result in the reduction of $1,100. So the balance will result in the negative $100. Isolation prevents this to happen.

Finally, durability means that once a transaction is committed, the data must be written to the non volatile memory or the storage. So that even if the crash happens or something wrong happens with the database, the data must be there and not be corrupted.

In terms of relational database my recomendation is using Postgres. Postgres is an object-relational database, while MySQL is a purely relational database. This means that Postgres includes features like table inheritance and function overloading. Postgres also adheres more closely to SQL standards.

READ MORE
6 upvotes·2 comments·66.8K views
ALESSIO SALTARIN
ALESSIO SALTARIN
·
December 23rd 2021 at 3:25PM

You are making a choice beween a non-typed language (Python) and a typed one (C#). Bear in mind that complex projects always need the clarity and order that a typed language brings. Although I still love Django, I recommend it for small project. Large projects needs types.

·
Reply
Dinesh Kasar
Dinesh Kasar
·
December 30th 2021 at 11:41AM

Thank you very much for your suggestions. I also prefer ASP.Net, but while looking at currently scenario it seemed Python-Django growing up so it confused me whether ASP is good idea to look into.

·
Reply