Car Service Record Management System
Background
On average, over 6 million passenger car accidents occur in the United States each year, and in
the United States, there are around 239,100 auto repair and maintenance facilities. The data
shows us that consumers in the United States spent a total of 194.9 billion dollars on services
for their motor vehicles in 2021. This data is maintained by numerous third-party vendors and
insurance firms, which may result in inaccurate or fragmented data. Therefore, a central system
All the data that can be readily maintained is required. Our plan is to create a system that
keeps track of auto maintenance, which will be helpful when buying or selling a certain car to
learn more about it and its condition. This technology will assist in keeping track of data
regarding used or accident-damaged vehicles. The idea of this project originated when one of
our teammates had to solve this problem during an interview for a full-time software engineer
Role.
We believe that the issues raised in the real-world scenario will be addressed by this project.
Additionally, we think that there aren't any trustworthy mechanisms in place for keeping track
of car maintenance records, which could affect both the price of a car overall and potential
Buyers.
Without the appropriate architecture, the system is a little too complex to handle, and as more
work proceeds, the complexity will only grow, making it more challenging to add new features,
make adjustments, and optimize the code. The system's performance, scalability, usability, and
manageability will all be directly impacted by the architecture, which will help define the
system's overall integrity. We also need our system to have module-to-module interaction, data
abstraction, and some additional functionality, and in order to do so, it is very important for us
to pick the right architectural style.
(Figure 1) Car Workshop
Use Cases
The general public, insurance firms, and automobile manufacturing businesses are going to be the ones to utilize this system to keep track of car servicing information. First and foremost, everyone who is interested in purchasing a pre-owned automobile wants to make sure that they are receiving a good bargain on the vehicle. The insurance companies are the secondary users of this system. Then, before determining the rate for the car insurance, the insurance company would verify the history of the vehicle. Furthermore, the automobile manufacturing companies will manage the inventory for the various vehicle components based on the vehicles' service records.
- Sarthak is a new doctoral student who wants to study math as his field of expertise. His home is a studio apartment that is located three miles away from the university. Although the local public transportation is pretty dependable where he moved to, getting around on the weekends, when bus frequency is greatly reduced, can be a little bit of a challenge. Because of this, it will be difficult to successfully plan all of the events around the bus schedule. But he does have another strategy to avoid that consequence. On the other hand, he may anticipate that his parents will come to see him during the winter holidays. In that case, he will want to be able to drive them to a variety of tourist destinations, so having a car will be of some use to him during that time. Given that he is pursuing a doctoral degree and that he is going to stay here for a while, another purchase that makes sense for him to make is that of a car. He starts looking for a new vehicle online and visits a number of different websites. When Sarthak discovered a deal that appeared to be too good to be true—the seller was trying to sell him an expensive car for a cheap price—he started to have some worries about the car's condition. The seller was offering to sell him the car for a low price. When it comes to this topic, our website can be of assistance. With the assistance of this, he will be able to establish whether the auto parts are original or not, whether the maintenance was routine or not, the condition of the car, and whether or not the automobile will require any prospective future servicing.
- Priyanshi is an analyst that works for a company that specializes in insurance. Every day, as part of her job, she looks at the condition of a car to figure out how much the insurance premium will be. To figure out how much insurance will cost, she has to think about more than thirty things, like the car's make, model, and year, as well as its previous owners, any accidents, any extra features, and any damage to the body. The problem is that she has to get all of the information by hand from a number of different third-party vendors and repair shops. Also, some data is missing from different places, and the format of the data varies from one vendor to another. Now, what she needs is a system with a central database that lets her just type in the license plate number of the car and see all the information from the database on the screen.
- Automakers can view the data and determine which parts require greater maintenance. Rahul, who works for an auto parts manufacturer, wants to ensure that his business spends more time and money producing auto parts that are in high demand than those that are not. He was looking for a website that would assist him in making manufacturing decisions because his business was losing money because they were producing more headlights than necessary and there were very few sales of this component. So they could determine which parts of that specific automobile they needed to build in large quantities by using an online tool that Rahul could log into, enter the car model, and analyze.
(Figure 2) Car Data in Records.
(Figure 3) User Use Case Diagram
(Figure 4) Insurance Company Use Case Diagram
(Figure 5) Car manufacturer Use Case Diagram
Requirements
Based on the functionality that we have discussed in the system introduction and the use cases, we will be setting our requirements. Although the project's focus is only on websites, in the future we might broaden it to include desktop and mobile applications. The functional and nonfunctional requirements for this web application are defined below.
Functional Requirements
FR-1: The system should be able to allow general users, admins, car insurance companies, workshops, and car manufacturer companies to login and sign up.
FR-2: General users should be able to update their personal information.
FR-3: General users should be able to request car information using the car registration number and owner details.
FR-4: General users should be able to accept or reject any request made to their profile, either for car information or personal information, from general users or car insurance companies.
FR-5: The system should allow workshops to create, update, or delete maintenance records created by them.
FR-6: The system should be able to provide car manufacturers with all the car service records related to their brand and model.
FR-7: The system should be able to generate a PDF of the report so that it can be viewed offline.
FR-8: Admins should have the ability to register, authorize, or revoke the access of any kind of user.
FR-9: The system should be able to notify users about the upcoming service date of their cars.
FR-10: The system should allow insurance companies to request a general user for all their car and personal information.
Non-Functional Requirements
NFR-1: The system must be scalable in order to support an expanding user base.
NFR-2: Multiple users looking for information about the same car should be supported by the system.
NFR-3: Different browsers should be able to access the website.
NFR-4: To enable quick access, the system should store the data in the cloud.
NFR-5: To provide a quick website load time, numerous servers spread across various locations are required.
NFR-6: To ensure that no data is lost, there should be a data backup.
NFR-7: The appropriate actions should be taken to guarantee the security of data servers.
NFR-8: Each page of a website should load in under two seconds.
NFR-9: The website should be accessible 99.9% of the time.
Stakeholder Analysis
| Stakeholders | User Characteristics |
|---|---|
| User(Car Buyer) | Background
: familiar with mobile and web-based applications; familiar with computers and smartphones Expectations : Users can see the details of the car he/she wants to buy, like its history of maintenance, owner history, and all the records that are associated with that car. Preferences: The user should be able to use the system on desktop and be able to enter the details of the system from a keyboard. The website can also be run on mobile so that users can use it on their mobiles. They can see all the details and history associated with the car they have searched for. They can download the pdf of the report so that it can be viewed offline and the user can compare the report with what they got from the owner. |
| Insurance companies | Background :
comfortable with both mobile and web-based applications, and conversant with computers and smartphones. Expectations: Companies can see the details of the car like the maintenance history, how many parts are duplicated, and all the other details that can help the company get the right amount of insurance premium that they can charge the user. Preferences : They should be able to use the system on desktop and be able to enter the details of a car from a keyboard. The website can also be run on mobile so that users can use it using their mobile. They can see all the details of the car that they searched for and also in good format, so it is easy to read. They can extract and download the data in such a format that it is easy for the analyst to analyse the insurance premium they can charge. |
| Repair shops | Background :
comfortable with both mobile and web-based applications and is conversant with computers and smartphones. Expectations : The repair shop owner can see the data associated with that car and also update the data of the car by using the system so that the data is correct. Preferences : They should be able to use the system on a desktop and be able to enter the details of a car from a keyboard. The website can also be run on mobile so that users can use it on the go. can see the data associated with the car and also update the data with what they have repaired or changed with ease. |
| Automobile Manufaturing Companies | Background :
comfortable with both mobile and web-based applications and being conversant with computers and smartphones. Expectations : Automobile manufacturing employees should be able to enter the information about a car model and then be able to see the details regarding the parts that are being worn out the most. Preferences : They should be able to use the system on desktop and can enter the details of a car from a keyboard. The website should also be able to run on mobile so that they can use it while on the go. can see the data associated with the car of a particular model in order to get the details about its parts. |
High-Level Design
System Architecture
Based on the system's requirements, we identified five main components. The database, REST API (authentication module, DAO Module, and Request Handler Module), and The five core components are the five core components. Each of these components belongs to one of three tiers in a multi-tier design. The data tier is in charge of data storage and retrieval. The database module is included in this tier. All business logic, including permission and access control, is handled by the application tier. This tier is made up entirely of the REST API, which is made up of the Authentication module, the DAO module, and the Request Handler module. The presentation tier serves as the system's external interface. The web application is part of this tier. In the presentation tier, the web application talks to the REST API modules in the application tier, and the REST API talks to the database module in the data tier.
(Figure 6) Overview of our system
It is important for us to define modules in a way such that the application behaves in a cohesive manner and performs all the functionalities. The basic workflow of this application is as follows:
- Request Handler module: This module is responsible for handling the requests made by the client and validating them by either giving an invalid request response or continuing processing the requests.
- Authentication module: This module is responsible for authenticating the clients. This will make sure only certain users are given the permission to edit or update certain data on the website. Whenever a user tries to log into the website, they will first be authenticated, and then they will be logged in.
- DAO module: This module is responsible for connecting the database module through any request that is made. This module contains all the queries that will fetch all the data from the database. This is the only module that will connect to the database.
- Database: This module is responsible for providing all the functionalities of a database to the website. When a user requests a service, the website will pull up data that is stored in our database and display it to the user.
Database design
Databases are an important part of every web application because they provide the application with the ability to retrieve, store and handle all the data. There are several popular types of databases: relational, key-value, and document based with their own benefits and drawbacks. Relational databases are used to store the structured data.
The primary key for the majority of the entities defined in the data model will be a number. This identifier will be produced automatically by the database and won't reveal any extra information about the entity it represents. Using the IDs and a foreign key constraint, certain entities will relate to other entities. Additional restrictions will be set to enforce unique rules that will be defined for certain of the data stored in the system to ensure data integrity. Lastly, effective data retrieval is required. We shall define the necessary data indices for this. We will choose Azure SQL database service to host databases due to its superior cost and performance in comparison to other cloud providers.
(Figure 7) Database Design
Web Application Design
Using the SPA approach has a number of benefits. The first is that, since only one page is used and is rewritten based on what the user does, the page does not need to be reloaded when switching between pages. This keeps the user experience smooth and makes it work like a normal desktop app. Additionally, the web page only loads once, and any additional code (such as HTML, CSS, or JavaScript) is only loaded when the user interacts with the page or as needed. This will make page loads faster and reduce the overall load on the server, which will make the user experience better and meet NFR-8.
React, a JavaScript toolkit for making user interfaces (the "view layer"), will be used to make the application's front end. The program will be divided into a number of independent, self-contained modules, which will speed up development and make it simple to reuse components across the entire application. React employs a virtual DOM, which makes loading multiple views quick and efficient. It also lets apps run smoothly on a variety of platforms and devices, including mobile, which will also be a key part of our system. We will also use Redux because it will be hard to keep track of all the different states of our complex and large application. Managing application state is easy with Redux, an open-source JavaScript toolkit that is incredibly lightweight. This will help us to make sure that we are always providing the user with accurate information and that the program is responding appropriately to user input.
Backend Design
For the backend we are using the REST API which will be crucial to the system's operation. It will provide a common language for dealing with the data and house the majority of the system's business logic.
DAO
DAOs help setting up the database connection and interacting with it by sending SQL CRUD commands.They also communicate with the clients to provide and obtain data.
(Figure 8)Car manufacturer Sequence Diagram
(Figure 9) Insurance Company Sequence Diagram
(Figure 10) Admin Sequence Diagram
(Figure 11) General User Sequence Diagram
(Figure 12) Workshop Sequence Diagram
Traceability Matrix
Functional Requirement Traceability Matrix
| Web Application Component | Authentication Module | Request Handler | Database Component | Additional Services (Azure) | |
|---|---|---|---|---|---|
| FR-1 | X | X | X | X | |
| FR-2 | X | X | X | ||
| FR-3 | X | X | X | ||
| FR-4 | X | X | X | ||
| FR-5 |
X | X | X | ||
| FR-6 | X | X | X | ||
| FR-7 | X | X | |||
| FR-8 | X | X | X | ||
| FR-9 | X | X | |||
| FR-10 | X | X | X |
Non-Functional Requirement Traceability Matrix
| Web Application Component | Authentication Module | Request Handler | Database Component | Additional Services (Azure) | |
|---|---|---|---|---|---|
| NFR-1 | X | X | X | X | X |
| NFR-2 | X | X | X | ||
| NFR-3 | X | ||||
| NFR-4 | X | X | X | ||
| NFR-5 |
X | X | X | X | X |
| NFR-6 | X | X | |||
| NFR-7 | X | X | X | X | X |
| NFR-8 | X | X | X | X | X |
| NFR-9 | X | X | X | X | X |
Design Rationale
System Architecture Rationale
We have explained or pointed to a good deal of the thinking that went into a good number of the design choices throughout the entirety of this material. At the highest possible level, our primary concerns are the following: the data that the system needs to manage and store; the business logic; and an interface to the system. There is a distinct pattern emerging here for a layered architectural design. When we use a layered or three-tier architecture, we can take advantage of the following benefits:- It uses an architecture that has been proven to work for contemporary web apps.
- Separate layers make subsequent expansion less difficult. (that is, a single REST API may be utilized by a number of different front-end applications).
- Separation of code makes both development and maintenance much simpler.
- Scalability can be controlled separately by components.
Database Design Rationale
The relational database model is the one that we choose to use for the storage of the system's structured data. The main things that led to this conclusion were the level of development that relational databases reached and the ACID (atomicity, consistency, isolation, and durability) properties of these databases. In the end, what this comes down to is making sure that the data that is stored in the system is completely trustworthy.
We chose Azure SQL database service as our database platform because it can both run in the cloud and meet the need to standardize on a single platform. By using SQL standards, it may be possible to build the database without being tied to a specific database management system.Azure SQL database service platform is low-cost, scalable.
Web Application Design Rationale
The tech stack that we will be using for this will be React, HTML, JS, Java, and MySQL. A few
significant advantages of developing the application as an Single Page Application (SPA) deliverable
are - CDN can be used to develop and deploy the application, which will speed up the loading of
HTML,
JS,
and other resources;
we may create the user interface with React in manageable, reusable modules.
An alternative to our approach would be a more conventional web application such as using PHP, in
which requests are
made
to a server, the pages are created, and then the user is redirected to them. With such a strategy,
the loading of the Pages will be slower as we
would need to connect our frontend application with the REST API application and extra
resources will be required
to handle the entire stack. The SPA strategy best meets our needs due to these
factors.
Backend Design Rationale
The REST API is a critical component of our system. It decouples data storage from the user interface. Due to the separation, it is easier to run our front end and back end on different servers. This is not a requirement of our system, but the REST API gives us this freedom. Meanwhile, it allows other third-party apps to use our database's data for their own creations. Each application will run alone, with no interference from the others. Furthermore, it makes no difference what language the third-party developers are using.
They can use our service in the same way regardless of whether they have Python, Java, or PHP. Also, the separation will make it easier for different development teams to work on different parts of the system when we start making and putting it into action.
Our REST API will be built using Java and the DAO (Data Access Object) design pattern. It will be object-oriented and based on the design pattern. As explained in the high-level design section (the data access layer), DAO abstracts and wraps all data-related actions into a single layer. DAOs are the only objects that interact directly with the database. As a result, if the structure of our database changes, it will only affect the methods implemented within the DAO classes.
The DAO design pattern follows "coding to the interface," which is one of the best ways to write object-oriented code. The interface is the foundation of the DAO pattern. Other sections of the REST API concentrate on what each DAO does rather than how it does it. Within DAO classes, the implementation is free to alter as long as it provides the same functionality. This loosens the coupling between each component and better prepares us for future adjustments. Another benefit of using the DAO style is that the JUnit tests run faster. Because all data access is wrapped up in DAO classes, test data, often known as "mock data," can be used. In essence, the main benefits of the DAO pattern are the separation of roles and the loose connections between them. Because user demands Because science and technology are constantly evolving, this feature will make it easier for our system to accommodate changes.
Conclusion
The Car Service Record Management System is a system that is dedicated to users who want to get the details of the car that they want to buy, insurance companies that want to decide the insurance premium that they can charge, so they can decide that based on the data that they can get from the report of the car. Workshop owners can get the details of the part that is related to the car so they can fix that with ease as they have all the history of the car. Also, with the help of the data, factory owners can decide which particular part is in demand so they can produce that more and whichever part is in less demand, they can produce less. The system has 4 modules, i.e., the Request handler module, Authentication module, DAO module, and database module, which will handle different queries and output the appropriate results. The architecture that we followed for this project is layered architecture. A layered architecture will give us flexibility, maintainability, and scalability for the application and will provide easy reuse of the components. With the help of layered architecture, it's easy to keep these logical levels and parts focused on different things.