You are on page 1of 45

Department of Computer Engineering

BRACT’s Vishwakarma Institute of Technology


(An autonomous institute affiliated to Savitribai Phule Pune
University)
Pune – 411037

Full-stack Development for Customer-facing Web Dashboards


Internship project report for:

A unit of

By: Neel Kallidai (GRN No. 11910181)


Mentored by: Prof Dr S.T. Patil
Department of Computer Engineering

BRACT’s Vishwakarma Institute of Technology


(An autonomous institute affiliated to Savitribai Phule Pune
University)
Pune - 411037

CERTIFICATE

This is to certify that the project report titled “Full Stack Development for
Customer-facing Web Dashboards” by Neel Kallidai (GRN No. 11910181) is
approved by me for submission. Certified further that, to the best of my
knowledge, the report represents the work carried out by the student as a part
of his internship during the academic year 2022-23 semester I & II. The project
worked upon was done in the company named Innobliss, for their products
Devourin and Respark, which are a part of the Relfor Labs Group.

Company Mentor: College Mentor: Head of Department:


Mr Dnyaneshwar Prof Dr Pushkar Prof Dr Sandip Shinde
Garudkar Joglekar

Date: 30 Apr 2023


1
ACKNOWLEDGEMENTS

I gratefully acknowledge with thanks the support and encouragement given to me at all times
by the leaders and faculty of VIT College, who are all my Gurus and inspirers. Without their
guidance, insights, supervision and hand-holding, I could never have ventured so bravely into
the world of industry to embark on my internship, and beyond. In particular, I would like to
thank:
1. Prof Dr S.T. Patil
2. Prof Dr Pushkar Joglekar
3. Prof Dr Sandip Shinde
4. Prof Jyoti Kanjalkar
I would also like to thank my colleagues at Devourin, who taught me the basics of how to use
newly learned technologies such as JAVA, REACT, and MongoDB in the real world in live
projects. Their consistent encouraged my attempts by giving me increasingly tougher problems
to solve in a manner that exercised my creativity and invoked my lateral thinking.

In particular, I would like to thank:


1. Mr Deepak Nathani
2. Mr Dnyaneshwar Garudkar
3. Ms Charuta Takawale
Lastly, I could never have achieved what I did at my internship without the constant and
informal (often unsolicited) trickle of advice from my father Ramesh Kallidai who himself is a
seasoned IT professional, and my mother Deepali, who patiently picks and drops me to work
every day.

It is so true that we are nurtured by our parents, shaped by our teachers and counselled by our
well-wishers. I am fortunate to have all of three of them in my life to offer nourishment,
wisdom and guidance to shape my future in the wider professional world.

2
Table of Contents
About the Company....................................................................................................................................5
Relfor Labs............................................................................................................................................5
Devourin.................................................................................................................................................5
Features of Devourin – the end-to-end Restaurant Enterprise Management Product....................6
Respark..................................................................................................................................................9
Abstract.....................................................................................................................................................11
Overview...................................................................................................................................................12
Project 1: Miscellaneous jobs for practical exposure (20 days)......................................................12
Project 2: Dashboard Development...................................................................................................12
Project 3: Security and API Integration (ongoing)...........................................................................13
Project 4: Database consolidation and rationalisation.....................................................................13
Previous Methods......................................................................................................................................14
Tableside ordering technology............................................................................................................14
Going beyond Tableside Ordering.....................................................................................................14
Problem Statement....................................................................................................................................16
Problem Definition and Listing for Dashboard Development and Testing.....................................16
Problem Definition and Listing for Security and API Integration..................................................17
Problem Definition and Listing for Database Consolidation and Rationalisation.........................18
Our Method...............................................................................................................................................18
Learning and practicing......................................................................................................................18
Matching Software and Hardware Requirements to each work-package.......................................18
CRM Dashboard..................................................................................................................................19
Category Dashboard...........................................................................................................................23
Error-fixing in earlier code.................................................................................................................30
User-Interface and the human element..............................................................................................30
Testing to assure quality.....................................................................................................................31
Integration with other Applications...................................................................................................35
Non-functional fixes............................................................................................................................40
Database consolidation and rationalisation.......................................................................................40
Push Notifications................................................................................................................................40
Outcomes..................................................................................................................................................42
Conclusion................................................................................................................................................44

3
About the Company

Relfor Labs
Founded with a vision to create innovative solutions for a better tomorrow, Relfor Labs
develops online platforms to address the growing needs of the technology driven economy. A
Pune-based company, driven by innovation and backed by a passionate team of young software
engineers, Relfor Labs seeks to create more opportunities to help expand businesses and
consumers across a gamut of segments.

Established in October 2016, Relfor Labs is the brainchild of Mr. Deepak Nathani, former COO
and co-founder of Cybage Software, whose rich experiences in Technology, Business Operations
and Product Management, has built the organisation to what it is today, a name to reckon
within the IT industry.

I worked on two of their products, both of which were separate divisions of the Company:
1. Devourin
2. Respark

Devourin
Devourin is a restaurant automation system with a difference. From automating restaurant
operations, minimizing losses and optimizing time and resources, Devourin offers you a vast
and varied range of products for all your needs: including a QR code-based digital menu, POS,
Inventory & Recipe Management, self-ordering kiosk, interactive digital signages, mobile apps
for staff and owners to stay ahead of the competition, website for online ordering and much
more. From BPCL to QSR to fine dines, the beauty of our technology is that it can be adapted to
restaurant spaces across geographies. What runs like a continuous thread throughout is its
versatility and user-friendliness.

4
Features of Devourin – the end-to-end Restaurant Enterprise Management Product

Digital Menu
Devourin’s Digital Menu is a complete website and customer engagement platform where
customers are presented with a dynamic digital menu instead of a normal PDF. It has options to
showcase Chef recommendations and promotions, coupled with the ability to run WhatsApp
and social media integrated campaigns.

Go Direkt
Allows customers to order directly using your digital menu thus saving commissions to
aggregators. Operates seamlessly with state-of-the-art contactless QR code ordering
system that integrates with our POS billing software, and a delivery system managed
through Dunzo and other third-party logistic providers.

POS: Billing Software


User friendly Point-of-Sale & billing software to manage dine-in, delivery and take away
orders along with back-office menu management. This would include options to
integrate with Zomato / Swiggy. It will also generate numerous reports to give you a
complete end-to-end visibility of all your operations.

5
Devourin Live: Owners App
Remote access dashboard for owners to monitor the status of the operations. Through
the restaurant management system, the dashboard provides an accurate view of the
occupancy and multiple reports.

Serve: Captain App


An Android App which enables the server to take table side orders and punch them
directly to raise a KOT. Saves time by eliminating manual processes and improves
customer experience. This captain App provides you with all the advanced features
related to table management at your restaurant.

Greet: Hostess App


A table management app for the hostess to manage queues efficiently. Store customer
preferences to acknowledge repeat clients and give them the experience which will keep
them coming back!

Inventory Management
With the Inventory Management System staff can tally and reconcile stocks in a fraction
of the time. Raise a request to store, PO to vendor, manage central / local inventory and
much more!

Recipe Management
Manages all consumptions automatically and prevents any theft or wastage. Recipe
management can give a clear record of expiring items and helps in taking an informed
decision to optimize food consumption

CRM
Collect customer data from various channels such as Online Ordering, Feedback or
Surveys and upload them in one central database. Devourin's CRM is completely
integrated with other modules for ease of operation and can help introducing a different
level of customer experience.

Echo: Customer Feedback


The feedback collection system enables the management to monitor individual item

6
feedback which can help improve food quality or address recurring issues with a
particular item. It also provides individual server performance, which helps is making
decisions to improve overall customer experience.

KDS
Kitchen Display Systems will help modernize the kitchen with digital order viewer,
running items update and automation of all kitchen operations.

Vista: Digital Signage


Vista enables restaurants with the much-needed Big Screen Interactive Display of the
menu items. This will help in an enhanced customer experience.

Advanced Analytics
Recognizes the need of analysing data. It provides a clear view of sales, categories and
performance of different items. Provides user friendly graphs and actionable insights for
easy understanding.

Self-Ordering Kiosk
Customers order directly from the kiosk without the need of servers.

7
Respark
Respark is an Omnichannel marketing platform that helps you take your business online. It is a
powerful marketing tool that helps you run targeted campaigns for your existing customers in
order to drive footfall and increase revenue. It caters to Salons, Spa’s, Beauty Clinics with its
suite of products.

The key features include:


 Digital Catalogue:  Automate your services, products and pricing updates to save time
and eliminate the need to manually update details.
 E-confirmation of appointments: Everything you need to keep your customers engaged
and coming back. End the one-way communication with your customers, send the
booking confirmation, and remind them of the services they've booked. 
 POS Billing Software: Get invoice, generate bill with break up tax in just one click.
 Actionable Insights: Take control of your business, increase profit and make better
decisions by understanding what’s working and what isn’t
 Staff Management:  View all your staff information in one place by using this easy-to-use
interface.

8
 Get Feedback instantly:  Capture, organize, and analyse product feedback in one place
to make decisions
 E-commerce Integration:  Realise your profit potential and create a fully functional
online store. Let us help you sell your products and manage every aspect of e-commerce
for you.
 Marketing Dashboard:  Other salon management software only tells you how to do your
marketing. We help you do it! No need to spend hours crafting your next marketing
campaign—our SMS, marketing templates are ready to go!

9
Abstract

In this report, I am charting my year-long internship journey from its inception in Semester 7 to
its conclusion in Semester 8.

I describe and focus on:

 The four projects of my internship: covering the twelve-month period

 The scope of the four projects, with a brief description of the work-packages allocated
to me, the technologies utilised, the methods employed, and processes used, and the
outcomes that were delivered

 Some of the main challenges I faced or problems faced, the processes I undertook to
find solutions, and the benefits that arose after the problems were solved.

Finally, I conclude with a summary of what I learned in both semesters, what the feedback was
from the company, and how they rewarded me. The report describes how this internship
experience has proved invaluable in providing hands-on experience as a team-player in a
productive software development department. Without a doubt, this journey will help my
future career as a software professional with practical skills, direct project experience and
exposure to the real world.

10
Overview

My internship is for 12 months and covered Semesters 7 and 8. Initially, I started a six-month
internship from 5th July 2022 for six months with Devourin, a division of Relfor Labs in Pune.
Thereafter, after appreciating my contribution to the company and my team, I was offered an
extension of six months to make it a year-long internship. I was also given a pay-raise after six
months as a reward for my performance in the team. The internship will now end on 4 th July
2023, but the company has evinced a keen interest to retain my services as a full-fledged
employee after the internship ends.

Introduction and training (45 days)


I spent 45 days familiarising myself with the syntax and semantics of
• Spring in Java
• React
• MongoDB
I used various sources of information to train myself, including:
• https://www.baeldung.com/
• https://reactjs.org/tutorial/
• https://www.mongodb.com/docs/

The internship was divided into four projects :

Project 1: Miscellaneous jobs for practical exposure (20 days)


After the initial period of learning, I was given several miscellaneous jobs to get on-hands
experience by being engaged in tasks such as:
• Testing and bug-fixing
• Generating Heap Dumps

Project 2: Dashboard Development


I was finally inducted as a full-fledged member of the Full-stack Development team that created
the front-end and back-end applications for the Respark and Devourin portals. Projects on
which I wrote code included:
• Dashboard for CRM Services
• Dashboard for Categories under the Back-office
11
Project 3: Security and API Integration (ongoing)
This included:
• Rewrite of APIs, API Security & Password Storage
• Integration with API Reports, SQL & Whatsapp
• More components planned

Project 4: Database consolidation and rationalisation


Since every store had a different copy of the same customer’s data, I had to consolidate and
rationalise the different information held in multiple locations by:
• Merging two sets of customer data into one set with a choice of a membership
plans that the customer can choose

• Creating a mock notification to user’s browsers that gets displayed on their OS

• Ensure all stores under a franchise keep, and access the same customer list

12
Previous Methods

Restaurant automation systems have so far been restricted to Tableside Ordering Technology
systems that integrate with the Kitchen Order System for delivery of orders, and the POS for
billing and payments.

Tableside ordering technology


A tablet ordering system allows you to take orders, process the payment, and offer other
options to manage your guests, all while you are at the table, using just a tablet.

It is essentially a restaurant workstation for the servers available on a tablet. This means no
more writing down the orders on paper or running to the kitchen. The process works as
follows:

 The tablet can also be used by the customer to place the order themselves. These
tablets are also known as tabletop tablets. 

 The technology involved in a restaurant ordering system includes tablets that are
connected to the POS, and display screens for the kitchen. Software solution companies
can provide POS solutions that will typically include both the software and the
hardware. 

 The staff inputs the order directly into the tablet which goes to the kitchen as soon as
the information is entered. The kitchen staff then starts preparing the order. 

 This type of ordering system allows your server to complete the payment on the table
side when the customer is ready to pay. 

Going beyond Tableside Ordering


Devourin on the other hand goes beyond a Tableside Ordering System by providing an end-
to-end enterprise management system that provides a digital menu (instead of the usual
pdf display) which is dynamic with real-time updated prices, that integrates to not only the
POS, but also with table booking and appointments, the stock and inventory systems, the
HR and staff management systems, feedback, social media platforms, analytics, e-
commerce portals and marketing dashboards.

13
Thus, it provides an innovative platform that supports the business in all its end-to-end
requirements to achieve growth by facilitating customer service enhancement, control of
stocks and costs, analysis of customer feedback and trends, rationalisation of salary and
other costs, timely marketing and communication, and integration with ecommerce
platforms to increase revenue streams.

14
Problem Statement

In Project 2, I was inducted into the Full-stack Development team to work on customer
experience enhancement with the specific aim of improving customer delight and satisfaction. I
was allocated three different work packages:
1. Website Development including Dashboard development and user interfaces
2. Testing
3. Miscellaneous Jobs

For Project 3, I continued to develop and refine many non-functional and functional
components of the Dashboards, including:
1. Resolving security issues
2. Increasing throughput and speed
3. Reduction of third-party software costs
4. Shifting to a new payment gateway

In Project 4, I had to use considerable time and persistence to merge two

databases, rationalise and consolidate them, and provide a method to message

the user to increase their choice of services, and enhance their experience.

My internship mentor and team lead confirmed that even though I was an intern, I was a key
productive member of the team like any other full-time employee, and that my deliverables far
surpassed many other team members both in quality of the deliverables and timeliness of
delivery.

Problem Definition and Listing for Dashboard Development and Testing


The following problems were identified while executing the work-packages in Project 2:
Familiarisation Issue
• I had not used Spring to interact with databases, and had to get familiar with that.
• I was also not very comfortable with React.

15
• I had never used MongoDB before, and as such had to learn it from scratch

Incomplete work-packages with orphaned deliverables


• Work-package for adding, deleting and displaying of data on the CRM dashboard was
incomplete
• Work-package for adding and deleting product/service lists in the Category Dashboard was
not completed
• The Category Dashboard page took a long time to load in, the UI did not look modern
enough, and the APIs also took a long time to fetch the data

User-interface solution was not intuitive or easy to use


• User Interface for the Dashboards had to be designed as they were neither intuitive for the
user, nor easy to use

Errors in code leading to loss of functionality


• Issue of double input inside database
• Kitchen Order Tickets sent for Table Orders were not printing
• Heap dump created on OOM error

Incomplete testing and lack of quality assurance


 Code developed in Spring Boot Java had not been tested

 It led to lack of confidence in the user’s mind about the coverage of the full functionality,
presence of bugs and errors, and other issues of quality assurance

Problem Definition and Listing for Security and API Integration


In Project 3, the following problems were faced in both functional and non-functional areas:
Security issues
• Passwords of users stored in plain text, breaching security protocol
• APIs returned without confirming sender was legitimate

Throughput and Speed


• All data was being sent to the Frontend for processing
• This increased the data-processing time affecting speed and throughput negatively
Third-party software costs
• Services of a third-party were used to forward all messages back and forth with End-user
customers of Clients
• This increased the cost of operations unnecessarily

16
Loss of payment gateway
• The payment gateway (Razorpay) stopped offering services
• An alternate way of receiving payments had to be found immediately
Clunky CRM Dashboard
• The CRM dashboard took very long to load whenever a lot of customers were in the client
database

Problem Definition and Listing for Database Consolidation and Rationalisation


In Project 4, the following problems were faced in both functional and non-functional areas:
Multiple instances of same data
• Stores under a single franchise had different sets of data for the same customer
• Different sets of data held incomplete or duplicate instances of customer’s membership
plans, loyalty points, and order histories causing confusion
• Customers could not be notified directly of changes to their plans, points or orders

Our Method

For each of the problem areas outlined, a structured method was used to resolve them and
create the desired outcomes.

Learning and practicing


I learned different technologies including Java, React and MongoDB from various websites,
online courses and practiced several exercises and work-throughs. The result was that in 45
days I developed a good working-knowledge that equipped me with the skills required for
becoming a productive member of the development team.

Matching Software and Hardware Requirements to each work-package


The development took place using Node and Java. Node, along with React, was used for the
front-end. Java, along with Spring, was used for the back-end. The database was made using
MongoDB and SQL.

I used Spring Tools Suite 4, MySQL Workbench, MongoDB Compass, Postman and 3T Studio
while working on the back-end. STS 4 was the IDE, while I used MySQL Workbench and
MongoDB Compass to look at the different databases. I used 3T Studio for debugging MongoDB
17
Aggregations with its aggregation tool, and Postman for checking if the APIs worked.

For the front-end, I used Visual Studio Code, alongside the inbuilt browser dev tools for
debugging.

The hardware requirements for running all of these programmes are:

 i5 processor or equivalent

 16 GB or more RAM

CRM Dashboard
This dashboard lets companies handle user details, adding and editing when necessary. There is
also an option to import and export data using XLSX, XLX and CSV file formats.

Figure 1: The whole dashboard

18
Figure 2: The filter menu

Figure 3: Add and Edit User popup

19
Figure 4: User Info Popup

It had the following functionalities for a retail outfit such as a saloon:

 The front-end contains a digital catalogue, which also allows customers to book an
appointment

 The shop can also display discounts and offers on it

 All appointments can be managed on their own dashboard, with easy assigning and
swapping of which stylist will do which appointment

 It can also send WhatsApp messages to remind customers about their appointment, so
that there are less no-shows

 There is a page to directly sell products to customers, similar to an e-commerce website

 Marketing can be sent to existing customers to tempt them to come around again

 the ad campaigns can be made in-app, with a dedicated photo editor

 Different types of reports for sales can be generated

20
 Customers are sent a link for feedback on WhatsApp that can be used to improve
services and check performance of stylists

I was assigned rewriting the CRM dashboard as my first proper task. Data could be imported
and exported using only the CSV format, and you could not delete users. In the new dashboard,
a delete button (along with delete confirmation) was added for deleting users individually. You
could also select multiple users and delete them at the same time.

An option to add and edit users without the need to import them was added. You could also
choose whether you wanted to export or import with CSV, XLS or XLSX formats as well. Another
feature that was added was User Info popup. Which displayed all the details of the user, as well
as all of their past orders.

Figure 5: Old CRM Dashboard

21
Figure 6: CRM and POS Dashboards talk to each other

Users in the CRM dashboard are able to place orders in the POS dashboard. All orders places in
the POS dashboard are displayed in the CRM dashboard.

Category Dashboard
This dashboard lets users modify categories and items for sale. It allowed stores to segregate
their different products and services into different categories, making it easier for customers to
choose what they want easier. It also makes it easier for the stores to set pricing, and choose
which categories (and items) to enable and disable from being sold

Figure 7: Category Dashboard

22
Figure 8: Add or Edit category popup

23
Figure 9: Add or edit item popup

Figure 10: Image cropper used in category dashboard

24
Figure 11: Old Category dashboard

Figure 12: Old category add or edit page - 1

25
Figure 13: Old category add or edit page – 2

Figure 14: Old item add or edit page - 1

26
15 Old item add or edit page – 2

Figure 16 Old image cropper

A simple block diagram of how the Category dashboard fits into the main architecture of the
system is given below:

27
The Category dashboard comes under the back office. Category data is used in the catalogue,
POS dashboard and reports. Service category data will be used in enquiries in the future.

I was tasked with rewriting some legacy code for a dashboard that lets you change data in
categories, as well as their sub categories and items within all of them. Each of those were
contained within arrays.

I used MongoDB aggregations to manipulate the arrays in the backend, adding and changing
objects in them. The aggregation would perform a different level of operation, depending on
the data sent from the backend. A level is an array of subcategories within a category.

I first created different code for each of the six different cases (3 levels, with editing and
creating for both), and then made my code much more modular, making it more efficient and
easier to read.

On the frontend, I rewrote the whole page using React from scratch, with the help of the MUI
package to enhance the modern look.

28
Each category could either have sub categories, or items inside of it. The items also contained
up to three levels of variations and sub variations if they were of the “Product” type. Both
categories and items would also contain images of a specific size, which could be uploaded and
cropped using the embedded image cropper.

This whole process took around two and a half months from start to finish

Error-fixing in earlier code

One of the first bugs I fixed was an issue with double input inside of the database. This was
fixed by keeping a check for any entry into the database. If all the data in an entry already
existed as another entry in the table, it would not be added.

Another was that KOTs would not print when clicked on, on the website. To fix this, the path of
the print file had to be changed. There were also some minor code changes in the SQL code to
make sure all the data was correct.

One more was that to make debugging easier, heap dumps were to be created if there was
ever an Out-of-memory error in the tomcat server. This was solved by adding a flag to the jar
file on execution i.e. “-XX:+HeapDumpOnOutOfMemoryError”.

User-Interface and the human element

For the CRM dashboard, the UI was very cluttered. This was solved by increasing padding in the
elements, and also increasing the font size by a small amount.

It was also made more reactive, without adding too many distracting animations. Clicking on
objects would make them change colour slightly, so the user could tell when they had clicked it.
Popups were made sleeker, and input elements were given a flatter look to make them more
modern.

In the category dashboard; while the main page had a reasonable layout, the rest of it had to
29
be fixed. Opening a menu would take the user to a new page, which felt unintuitive and clunky.
It was reworked to open in a modal instead.

These menus also suffered from having too much whitespace in them, so that was reduced as
well. The image cropper used buttons to perform zooming in and out instead of scrolling, so
that was changed to be easier to use.

Testing to assure quality

To ensure bug-free back-end code, I used the inbuilt debugger in STS4 alongside Postman, for
most of the bugs I encountered.

I would hit the API using postman, and ensure the correct process was followed by the
programme. I would also MongoDB Compass and MySQL Workbench to ensure data was
correctly altered in the databases.

I would also use 3T Studio to make sure all of my MongoDB aggregations would work, as it had
a specific tool to make that as easy to debug as possible.

Figure 17: MySQL Table in use

30
Figure 18: One of the MongoDB clusters used, showing structure of a 'Store',

and a 'Category' within the 'categories' array

31
Figure 19: UI of Postman, used for hitting APIs

32
Figure 20: The inbuilt browser debugger

33
Figure 21: Studio 3T Aggregation tool

Figure 22: Aggregation tool pipeline-wise input and output

Integration with other Applications

For the CRM Dashboard, I updated the APIs to include pagination. In addition, I had to update
all CRM workflows on the front-end so that they would work with the new pagination.
Pagination is the process by which only a select amount of results are sent to the user. This
helps with load times, especially with very large databases. As a default, 10 results are sent by
34
the system I implemented. I used Pagination objects, as they also allow sorting by fields. This
was needed as our CRM also allows the user to sort.

We used a third-party application called Gupshup to send messages to end-users. However,


after I integrated the front-end with Whatsapp, end-users are now sent messages directly. The
use of the third-party application stopped, thus resulting in cost-savings. For the Whatsapp
Integration, I faced several challenges because the documentation written by Facebook did not
have enough information for the new version of the API that they had released a month ago. I
had to spend considerable time to resolve this issue by looking up fixes on Stack Overflow and
other community forums

After Razorpay stopped functioning, I had to replace it with another payment-gateway called
Stripe. I tested the code in a robust manner to ensure that Stripe was secure, safe, and played
well with the already-integrated Razorpay flow. I setup endpoints to generate payment intents,
as well as handle refunds and disputes

Figure 23: Whatsapp message sent through the Whatsapp Cloud API

35
Figure 24: Start of the code for the Sales Report aggregation

Figure 25: End of the code for the Sales Report aggregation

36
Figure 26: Payment page of Stripe, after successful integration

Figure 27: First half of code for creating a payment intent in Stripe

37
Figure 28: Second half of code for creating a payment intent in Stripe

38
Non-functional fixes

I increased speed and reduced internet use by shifting front-end data processing to the
backend with an API for SQL. One of the reports available to the client, the sales report, would
send all order history to the front-end. This would take a long time, usually minutes. To reduce
this, I made a giant aggregation pipeline in MongoDB to consolidate all the order data into a
form that was already being used by the front-end to display the report. This greatly reduced
the amount of internet used, and also increased the speed at which the data was calculated.

All passwords were being stored as plain text instead of salted hashes, thus posing a security
risk. I encrypted all passwords and added Auth Tokens to APIs. For encryption, I added the
Argon2 hashing library. This is an extremely secure thread-safe hashing algorithm that won the
Password Hashing Competition in 2013. I implemented a system that salt and hash these
passwords, as well as one for validating them.
I also used this while creating my API authentication. When the user logs in, they are sent a
randomly generated auth token. These auth tokens are saved in the database, along with their
expiry times. When an API endpoint is hit, the authentication header is checked for the auth
token. If a match is found in the database, everything proceeds as normal. If there isn’t, the API
returns an error 403.

Due to bulky legacy code being used in the landing page, it took 3 seconds to load, but I
rewrote the code and reduced the loading time to 2 seconds.

Database consolidation and rationalisation

Franchises that had multiple stores faced a lot of confusion because they had different sets of
data for the same customer, such as incomplete or duplicate instances of customer’s
membership plans, loyalty points, and order histories.
To resolve this, I:
On the front-end, I added a button to allow clients to merge through the CRM dashboard. A
modal opens up, allowing the user to search for two clients they want to merge. They can then
choose which user data they would like to keep during the merger.
After this, the back-end merges all the data together. A flag is set on the user to signify they can
be used for all stores under a client.
As a result all stores under a single franchise are able to keep a single customer list with the
same information updated in real time.

Push Notifications

I used the inbuilt JavaScript Push API, along with a service worker, to send messages directly to
end uses on their browser so that it gets displayed on their OS. For doing this, I had to setup a
button that would gain permission from the user. This button would return a link when clicked,
39
which would be saved on the backend. The link can be used to push all kinds of data to the
browser, but for this use-case only the necessary data for the notification was sent. This data
would be processed by the service worker, and a notification would be sent through the user’s
OS (Windows, Android etc.) When the user would click the notification, a browser window
would open with the specified website.
This allowed our clients to advertise directly using push notifications, allowing more
engagement and increasing sales.

40
Outcomes

During the twelve-month internship, which is still ongoing, the following outcomes were
achieved:

1. I gained not only working knowledge but also full insights into the intricacies of how
these technologies work:
a. Java
b. React
c. MongoDB
d. SQL
I can safely say that I can now work on any team in the above technologies in the same
manner as a high-level technical expert with many years of experience in the field.
2. On the CRM dashboard the following outcomes were delivered:
a. Cleanly display data of all customers in tabular form
b. Easily add and edit customers to the database
c. Export data from the table, edit and add customers to the export, and import it
back in.
3. On the Category Dashboard, the following outcomes were delivered:
a. Customise categories of items
b. Quickly hide unwanted categories
4. A more user-friendly, intuitive and aesthetically pleasing User Interface was achieved by
focussing on the following tasks:
a. Minimalism
b. Visual feedback
c. Consistency
d. Familiarity
5. The code-stack was elevated to a higher state of quality assurance owing to the bug-
fixers and errors I cleaned as well as the testing I conducted
6. Due to the API integration with other applications:
Cost savings were achieved due to third-party applications being replaced by Whatsapp
41
A smooth transition was achieved from Razorpay to Stripe so that the end-user did not
feel any pain due to the payment-gateway switch
7. Because of the non-functional fixes:
a. An enhanced level of security was achieved for storing passwords
b. The landing page started loading quicker, enhancing customer experience

8. Due to the database consolidation and rationalisation:


a. Confusion resulting from multiple instances of incomplete sets of customer data
was removed
b. All stores under a single franchise were able to use the same customer
information

42
Conclusion

As a result of the performance on the job, the company extyended my internship by another six
months, and also increased by salary. The President of the company introduced me to a client
as the ‘best developer of the company’, and has evinced interest in retaining my services as a
full-fledged employee after the internship ends.

I personally felt that I have now got an in-depth and hands-on experience and exposure to the
full soft-ware development life-cycle from requirements gathering, to design, development,
testing and release. This has given me new confidence of how I will perform after studies in the
real world.

I have also gained a professional talent in coding and development in Java, React, Angular, SQL,
and MongoDB by working on real projects in a commercial setting with a professional team, of
which I was accepted as an integral part. I have also gained insights into both functional and
non-functional requirements that impact the business of customers.

It was very satisfying when my Team Lead told me that I could finish the coding on my projects
in half the time that my experienced colleagues took, and that too with a deep sense of
professional perfection.

I learned many new ways of working form my colleagues and team members, and also was able
to try different approaches to problem solving. Most of all, it was fascinating to see how
technology can be put to good use to improve the experience and delight of customers so that
their enhanced experience can benefit the organisation with customer loyalty, growth and
profits.

I have gained immensely by being introduced to all aspects of the Software Development
Lifecycle in full from Requirements Gathering, High level and Low-level design, Development,
Testing & Integration and Release Management.

43
I look forward to honing my software development skills to the next level as I pass out of
university and graduate to the real world of professional employment.

I am grateful to all my Professors, mentors and colleagues at VIT College and Devourin for all
the support and encouragement on this fulfilling journey, without which I could not have
entered the real world with so much confidence and professional commitment.

44

You might also like