This Article for those looking to develop a Project from the scratch using Spring Boot / Microservices.
I would like to develop a Billing System using Spring Boot / Spring Cloud (Microservices) MySQL DB / Apache Cassandra. If any Messaging software required, I would like to use either Rabbit MQ or Apache Kafka. Initially, this product should have a very minimum feature but it must have all Technical feature of Spring Boot so this is good for who looking for Real-time Project experience. If the response is very good, I will be going to expand the billing system feature.
I have not researched a lot on the Internet to get the requirement for the Billing System. Just I am thinking about a real-time scenario. I am planning to convert to that as a business requirement and the business requirement will apply to our Technology. The high-level requirement is,
- If the customer buys a product and pays the money.
- The biller scans the barcode.
- The product information automatically populates in the billing screen and the biller inputs the necessary information to complete the bill
According to the above scenario,
We need to Manage User data who is inputting the Bill information. These users are employees for a particular shop.
We need to Manage the Employee Roles in the Shop.
We need to manage the Product in the System.
We need to manage the Category for the products.
We need to manage the Stock.
We need to manage the Customer (Customer registration is required with minimum information because the customer cannot give all his info while shopping).
We need to manage the Vendor data where the shop owner buy the Products
We need to manage all billed products.
As of now, my mind thinking only about the above information but I am sure we will enhance a lot.
Based on the above information, I am come up with the following tables. In the initial version, I am planning to use MySQL but later I would like to use Two databases which are MySQL and Apache Cassandra or Mongo DB. I will tell at the time of developing the next phase why I need to use two DB. First phase only MySQL with very minimal features and focusing on how to use Spring Boot effectively. This version support only retails shop (Maybe a few other billing sectors).it is not a generic system to support all type of billing sector.
This table holds the data about the Company or Shop information.
This table holds every person’s information i.e. Employee, Customer, and Vendor Data. Everybody treated as a User.
Each user is having some default Role-based on their registration type.
Users can register in a three-way as a Customer. as an employee and as a Vendor. Based on the registration flow system assign the default Role to the User. Later we can add other roles to a particular user.
If user registration is employee flow, the respective user id stored in the employee table and employee-related other information. it acts like a child table for User.
If user registration is Customer flow, the respective user id stored in the Customer table and customer-related other information. it acts like a child table for User.
If user registration is Vendor flow, the respective user id stored in the Vendor table and Vendor related other information. it acts like a child table for User.
It holds the address information about the User.
It contains Product details.
This table holds the current stock details about the product.
This table contains the billing details of the product. For Example: if the user purchased X product, The X purchase information stored in the Biller Table.
This table contains offer information about the product like % offer or buy one get one offer and other information like offer start date and end date.
Still, I have not decided on the column part for each table, working on it. I will update you soon in the next story. Always I am expecting your ideas and comments.