Internship Report 12114036 Ee 02
Internship Report 12114036 Ee 02
on
at
This is to certify that Mr. Ashish Narayan Jha from National Institute of Technology-Kurukshetra has
successfully completed his internship from 08th Jan 2024 to 15th May 2024 with Pickrr Technologies Pvt.
Ltd.
During his internship period with us we found him to be hard-working, diligent and honest in performing his
duties.
Yours truly,
Saumya Khati
CHRO – Human Resources
Registered Office: Third Floor, 448A, Enkay Square, Udyog Vihar, Ph-5, Gurgaon, Haryana, 122022
CIN: U74140HR2015PTC057213
Email Id: info@pickrr.com
Website:www.pickrr.com
SUPERVISOR'S CERTIFICATE
This is to certify that Mr. Ashish Narayan Jha, Roll No. 12114036, a student of 6th
Semester, B.Tech. in Electrical Engineering at National Institute of Technology,
Kurukshetra has successfully completed his industrial internship at Pickrr
Technologies Pvt. Ltd., Gurgaon from January 08, 2024 to May 15, 2024. He has
completed his internship under my supervision and as per the Industrial
Internship report submitted by him.
This is to state that the above report made by the student is accurate and true to
the best of my knowledge and belief.
Faculty Mentor
Dr. Ratna Dahiya
Professor, Electrical Engineering Department
National Institute of Technology Kurukshetra
4|Page
ACKNOWLEGMENT
L,Ashish Narayan Jha, am grateful for the invaluable
opportunity to complete my
internship with the Software Development Team at Pickrr Technologies Pvt. Ltd.
Iextend my heartfelt thanks my Industrial mentor Mr. Manuj Mundra and to
the
entire Software Development team at Pickrr Technologies Pvt. Ltd. for their warm
welcome and continuous support throughout my internship. Their mentorship
has helped me expand my technical skills, understand complex concepts, and
develop a problem-solving mindset. This experience has been instrumental in
bridging the gap between theoretical knowledge and practical application,
allowing me to gain deep insights into the field of Software Development.
Furthernmore, Iwould like to express my gratitude to Dr. Ratna Dahiya, my faculty
mentor, for her constant guidance and support throughout this internship. Her
insights and advice have been invaluable.
Iam also thankful to the Training and Placement Cell, National Institute of
Technology Kurukshetra for providing me with such an opportunity.
I express my thanks to all the members for providing me support and their
constant encouragement during training. The knowledge gained, relationships
forged, and skills acquired are invaluable, and I look forward to applying them in
my future endeavours.
5|Page
ABSTRACT
6|Page
TABLE OF CONTENTS
3. BACKEND DEVELOPMENT.…………………………………………….. 26
3.1 Node JS…………………………………………………………………. 27
3.2.1 Key Features of NodeJS………………………………………………... 28
3.2.2 Working of NodeJS & Server Architecture……………………………. 28
3.2 Express…………………………………………………………………. 29
3.2.1 Importance of Express…………………………………………………. 29
3.2.2 Features of Express……………………………………………………..
29
7|Page
4. DATABASE………………………………………………………………….. 30
4.1 Introduction to MongoDB……………………………………………... 30
4.2 MVC Architecture in MERN Stack……………………………………. 31
5. DEVELOPMENT TOOLS & SOFTWARE USED……………………….. 32
5.1 POSTMAN……………………………………………………………... 33
5.2 GITLAB………………………………………………………………... 34
5.3 JIRA SOFTWARE……………………………………………………... 35
6. IMPLEMENTATION OF THE PROJECT……………………………….. 37
6.1 Project Description……………………………………………………... 37
6.2 Objective………………………………………………………………... 37
6.3 Flow of the Project……………………………………………………… 38
6.4 Technologies Used……………………………………………………… 41
6.5 Dependencies…………………………………………………………… 42
6.6 Key Project Deliverables……………………………………………….. 44
6.7 Outcomes……………………………………………………………….. 45
6.8 Future Scope……………………………………………………………. 45
7. TASK ASSIGNED…………………………………………………………... 46
7.1 Task Description………………………………………………………... 46
7.2 UI Component Design and Integration…………………………………. 48
8. CONCLUSION……………………………………………………………… 49
REFERENCES 50
APPENDIX 51
8|Page
1. INTRODUCTION AND BACKGROUND
1.1. INTRODUCTION
Web development involves several stages, each crucial for building a successful website
or web application. The various steps involved in web development process are:
2) DESIGN
• UI/UX Design: Focus on user experience (UX) and user interface (UI) design to
ensure the site is user-friendly and visually appealing. This involves designing
layouts, selecting color schemes, and creating interactive elements.
• Prototyping: Develop prototypes to visualize the design and gather feedback.
Prototypes help in identifying any usability issues early in the design process.
• Design Approval: Getting approval from the development team for the design
before proceeding to development ensures alignment between design and
development goals.
3) DEVELOPMENT
9|Page
• Front-End Development: Convert designs into HTML, CSS, and JavaScript. This
stage focuses on creating the client-side interface that users interact with and
ensuring responsiveness across different devices.
• Back-End Development: Develop server-side logic, database structures, and APIs.
• Integration: Integrate front-end and back-end components to ensure they work
seamlessly together. This involves connecting the user interface with the server-
side functionality through APIs.
4) TESTING
5) DEPLOYMENT
10 | P a g e
1.3. INTRODUCTION TO MERN STACK
MERN stands for MongoDB, Express, React, Node. The specific role of each of these
elements while creating a web application are listed below:
The MERN architecture allows you to easily construct a three-tier architecture (front
end, back end, database) entirely using JavaScript and JSON.
11 | P a g e
a) React: Frontend Library
The top tier of the MERN stack is React.js, the declarative JavaScript framework for
creating dynamic client-side applications. React is a JavaScript library that is used for
building user interfaces. React is used for the development of single-page applications
and mobile applications because of its ability to handle rapidly changing data. React
allows users to code in JavaScript and create UI components.
Features of React.js
• Virtual DOM – A virtual DOM object is a representation of a DOM object. Virtual
DOM is actually a copy of the original DOM. Any modification in the web
application causes the entire UI to re-render the virtual DOM. Then the difference
between the original DOM and this virtual DOM is compared and the changes are
made accordingly to the original DOM.
• JSX – Stands for JavaScript XML. It is an HTML/XML JavaScript Extension which
is used in React. Makes it easier and simpler to write React components.
• Components – ReactJS supports Components. Components are the building blocks of
UI wherein each component has a logic and contributes to the overall UI. These
components also promote code reusability and make the overall web application
easier to understand.
• High Performance – Features like Virtual DOM, JSX and Components makes it much
faster than the rest of the frameworks.
• Developing Android/iOS Apps
The next level is the Express.js server-side framework, running inside a Node.js server.
Node.js provides a JavaScript Environment which allows the user to run their code on
the server (outside the browser). Node pack manager i.e. npm allows the user to choose
from thousands of free packages (node modules) to download.
Features of Node.js:
• Open-source JavaScript Runtime Environment
• Single threading – Follows a single-threaded model.
• Data Streaming
• Built on Google Chrome’s JavaScript Engine, Node.js has a fast code execution.
• Highly Scalable
12 | P a g e
c) Express.js (Backend Framework)
Features of MongoDB:
• Fast – Being a document-oriented database, easy to index documents. Therefore, a
faster response.
• Scalability – Large data can be handled by dividing it into several machines.
• Use of JavaScript – MongoDB uses JavaScript which is the biggest advantage.
• Schema Less – Any type of data in a separate document.
• Data stored in the form of JSON
1. Objects, Object Members, Arrays, Values, and Strings
2. JSON syntax is very easy to use.
3. JSON has a wide range of browser compatibility.
4. Sharing Data: Data of any size and type (video, audio) can be shared easily.
• Simple Environment Setup – Its really simple to set up MongoDB.
• Flexible Document Model – MongoDB supports document-model (tables, schemas,
columns & SQL) which is faster and easier.
13 | P a g e
ADVANTAGES OF USING MERN STACK:
1. Cost-effective: All the four technologies (MongoDB, Express.js, React.js, and Node.js)
used in MERN Stack is built on JavaScript that makes it cost-effective and within less
cost investment user will able to get the better results or output.
2. SEO friendly: SEO (Search Engine Optimization) friendly means that Google,
Yahoo and other search engines can search each page on the website efficiently and
easily, interpret and correlate the content effectively with the searched text and easily
index it in their database. As whenever websites are created using MERN technologies,
then it is always SEO friendly.
3. Better performance: Better performance refers to the faster response between backend
and front-end and database, which ultimately improves the website speed and yields
better performance, thus providing a smooth user experience.
4. Improves Security: It mainly concerns the security of applications generated using
MERN. Web application security refers to various processes, methods or technologies
used for protecting web servers and various web applications, such as APIs
(Application user interface) from the attack by internet-based threats. Generally,
secured hosting providers can easily integrate applications created using the MERN
stack. For more or better security Mongo DB and Node.js security tools are also used.
5. Provide the fastest delivery: Any Web applications and mobile applications created by
using MERN Stack are built much faster, which also helps to provide faster delivery to
clients.
6. Provides faster Modifications: MERN stack technologies supports quick
modifications as per the client's request in the mobile and web applications.
7. Open Source: All the four technologies that are involved in MERN are open-source.
This feature allows developers to get solutions to queries that may evolve from the open
portals during development. As a result, it will be ultimately beneficial for a developer.
8. Easy to switch between client and server: MERN is very simple and fast because it is
written in only one language. And also, it is very easy to switch between client and
server.
14 | P a g e
2. FRONTEND TECHNOLOGIES USED
It is the visible part of website or web application which is responsible for user
experience. The user directly interacts with the front-end portion of the web application
or website.
Front-end Technologies:
Features of CSS:
• CSS saves time: You can write CSS once and reuse the same sheet in multiple
HTML pages.
• Easy Maintenance: To make a global change simply change the style, and all
elements in all the webpages will be updated automatically.
• Search Engines: CSS is considered a clean coding technique, which means search
engines won’t have to struggle to “read” its content.
• Superior styles to HTML: CSS has a much wider array of attributes than HTML, so
you can give a far better look to your HTML page in comparison to HTML
attributes.
• Offline Browsing: CSS can store web applications locally with the help of an
offline cache. Using this we can view offline websites.
15 | P a g e
CSS has 3 ways to style your HTML:
a) Inline: Add styles directly to HTML elements (limited use).
b) Internal: Put styles inside the HTML file in a <style> tag.
c) External: Create a separate CSS file (.css) and link it to your HTML.
Components of CSS:
CSS works by associating rules with HTML elements. A CSS rule contains two main
parts:
• a selector which specifies the HTML element(s) to style.
• a declaration block which contains one or more declarations separated by
semicolons.
Each declaration includes a property name and a value, specifying the aspect of the
element's presentation to control.
16 | P a g e
2.4. JavaScript – Dynamic Client-side Scripting
• Internal JS: We can add JavaScript directly to our HTML file by writing the code
inside the <script> tag. The <script> tag can either be placed inside the <head> or
the <body> tag.
• External JS: We can write JavaScript code in another file having an extension.js
and then link this file inside the <head> tag of the HTML file in which we want to
add this code.
JavaScript was created in the first place for DOM manipulation. Earlier websites were
mostly static, after JS was created dynamic Web sites were made. With advances in
browser technology and JavaScript having moved into the server with Node.js and
other frameworks, JavaScript is capable of so much more.
17 | P a g e
2.5. React JS – JavaScript Library
History of React:
React was invented by Facebook developers who found the traditional DOM slow. By
implementing a virtual DOM, React addressed this issue and gained popularity
rapidly.
React is one of the most demanding JavaScript library because it is equipped with a
ton of features which makes it faster and production-ready. React is recommended in
creating SPAs (Single Page Applications), allowing smooth content updates without
page reloads. Its focus on reusable components makes it ideal for real-time
applications.
2. Component-Based Architecture
18 | P a g e
React provides the feature to break down the UI into smaller, self-contained
components. Each component can have its own state and props. ReactJS is all
about components. ReactJS application is made up of multiple components, and
each component has its own logic and controls. These components can be reusable
which help you to maintain the code when working on larger scale projects.
4. Virtual DOM
React maintains a lightweight representation of the actual DOM in memory. When
changes occur, React efficiently updates only the necessary parts of the DOM. A
virtual DOM object is a representation of the original DOM object. It works like a
one-way data binding. Whenever any modifications happen in the web application,
the entire UI is re-rendered in virtual DOM representation. Then it checks the
difference between the previous DOM representation and new DOM. Once it has
done, the real DOM will update only the things that have actually changed. This
makes the application faster, and there is no wastage of memory.
5. Components
React divides the web page into multiple components as it is component-based.
Each component is a part of the UI design which has its own logic and design. So,
the component logic which is written in JavaScript makes it easy and run faster and
can be reusable.
6. Performance
Virtual DOM and updates only the modified parts. So, this makes the DOM to run
19 | P a g e
faster. DOM executes in memory so we can create separate components which
makes the DOM run faster. DOM is a cross-platform and programming API which
deals with HTML, XML or XHTML. The DOM exists entirely in memory. Due to
this, when we create a component, we did not write directly to the DOM. Instead,
we are writing virtual components that will turn into the DOM leading to smoother
and faster performance.
The React app calls the reactdom.render method, bypassing the user interface created
using the React component (coded in JSX or React Elementor format) and the
container to render the user interface. ReactDOM.render processes JSX or React
Elements and emits virtual DOM. The virtual DOM will be merged and rendered in the
container.
20 | P a g e
React.Component and create a render function which returns a React element.
You can pass data from one class to other class components. The class component
is also known as a stateful component because they can hold or manage local
state.
While function components are easier to define and understand, class components
were needed to deal with state, contexts, and many more of React's advanced features.
However, with React Hooks, we can deal with React's advanced features without
needing a class component.
21 | P a g e
• getDefaultProps()
It is used to specify the default value of this.props. It is invoked before the creation
of the component or any props from the parent is passed into it.
• getInitialState()
It is used to specify the default value of this.state. It is invoked before the creation
of the component.
• Mounting Phase- In this phase, the instance of a component is created and inserted
into the DOM. It consists of the following methods. Mounting is the stage of
rendering the JSX returned by the render method itself. It consists of the following
methods:
• componentWillMount()
This is invoked immediately before a component gets rendered into the DOM. In
the case, when you call setState() inside this method, the component will not re-
render.
• componentDidMount()
This is invoked immediately after a component gets rendered and placed on the
DOM. After that we can perform DOM querying operations.
• render()
This method is defined in each and every component. It is responsible for
returning a single root HTML node element. If you don't want to render
anything, you can return a null or false value.
• Updating Phase- Updating is the stage when the state of a component is updated
and the application is repainted. t is the next phase of the lifecycle of a react
component. Here, we get new Props and change State. This phase also allows to
handle user interaction and provide communication with the component’s
hierarchy. The main aim of this phase is to ensure that the component is displaying
the latest version of itself. Unlike the Birth or Death phase, this phase repeats again
and again. This phase consists of the following methods.
• componentWillRecieveProps()
It is invoked when a component receives new props. If you want to update the
state in response to prop changes, you should compare this.props and nextProps
to perform state transition by using this.setState() method.
• shouldComponentUpdate()
It is invoked when a component decides any changes/updation to the DOM. It
allows you to control the component's behavior of updating itself. If this method
returns true, the component will update. Otherwise, the component will skip the
updating.
• componentWillUpdate()
It is invoked just before the component updating occurs. Here, you can't change
the component state by invoking this.setState() method. It will not be called,
if shouldComponentUpdate() returns false.
• render()
It is invoked to examine this.props and this.state and return one of the following
22 | P a g e
types: React elements, Arrays and fragments, Booleans or null, String and
Number.
• componentDidUpdate()
It is invoked immediately after the component updating occurs. In this method,
you can put any code inside this which you want to execute once the updating
occurs. This method is not invoked for the initial render.
• Unmounting-As the name suggests Unmounting is the final step of the component
lifecycle where the component is removed from the page. It is the final phase of the
react component lifecycle. It is called when a component instance
is destroyed and unmounted from the DOM. This phase contains only one method
and is given below.
• componentWillUnmount()
This method is invoked immediately before a component is destroyed and
unmounted permanently. It performs any necessary cleanup related task such as
invalidating timers, event listener, cancelling network requests, or cleaning up
DOM elements. If a component instance is unmounted, you cannot mount it
again.
React hooks are a powerful feature in React that allow you to add state and other
features to functional components. They were introduced in React 16.8 and have since
become an integral part of React development. Because of this, class components are
generally no longer needed.
• useState Hook: State generally refers to data or properties that need to be tracking
in an application. The React useState Hook allows us to track state in a function
component. The hook returns an array containing the current state value and a
function to update that state value.
• useEffect Hook: The useEffect hook is used to perform side effects in functional
components. It accepts a function that will be executed after every render or when
specific dependencies change. This hook is useful for handling data fetching,
subscribing to events, or manipulating the DOM.
• useContext Hook: The useContext hook allows you to access a context object in a
functional component. Context is a way to pass data down the component tree
without having to pass props manually.
Additional Hooks: Additional Hooks are either more generic variants of basic Hooks
or are needed for certain edge cases.
• useReducer Hook: The useReducer hook allows you to manage complex state in a
functional component. It’s similar to the useState hook, but instead of a simple
value, it takes a reducer function and an initial state.
• useCallback Hook: The useCallback hook allows you to memoize a function so that
it’s only re-created when its dependencies change. This can help improve
performance by preventing unnecessary re-renders.
• useMemo Hook: The useMemo hook allows you to memoize a value so that it’s
only re-computed when its dependencies change. This can help improve
performance by preventing unnecessary re-computations,
• useRef Hook: The useRef hook allows you to create a mutable ref object that
persists for the lifetime of the component. You can use it to store and access values
that don’t trigger a re-render.
• useDebugValue: This Hook can be used to display a label in React DevTools when
creating custom Hooks. This Hook should be used in custom Hooks to display the
current state of your Hooks, as it will make it easier to debug them.
24 | P a g e
2.6. Ant Design – React JS UI Library
Component Designs:
25 | P a g e
3. BACKEND DEVELOPMENT
Importance of Node.js
Node.js is famous due to the use of JavaScript across the entire stack, asynchronous
programming model for handling multiple requests simultaneously, fast execution due
to the V8 engine, large and active community support, scalability for real-time
applications, cross-platform compatibility, and its role in enabling full-stack
development. All these features make Node.js very fast and popular.
• Node.js enables developers to use JavaScript across the entire stack, from front-end
to back-end. This consistency simplifies development and reduces context
switching.
• Asynchronous Programming Model: Node.js uses an event-driven, non-blocking
(asynchronous) I/O model. This allows handling multiple requests simultaneously
without blocking the execution of other tasks. As a result, Node.js applications are
highly responsive and efficient.
• Fast Execution: Node.js leverages the V8 engine, developed by Google, which
compiles and executes JavaScript at lightning speeds. This performance advantage
makes it suitable for real-time applications and microservices.
26 | P a g e
• Large and Active Community: Node.js has a vibrant community of developers,
libraries, and tools.
• Scalability: Node.js is lightweight and scalable, making it an excellent choice for
building real-time applications, RESTful APIs, and microservices.
• Cross-Platform Compatibility: Node.js runs on Windows, Linux, Unix, macOS,
and more. This flexibility allows developers to write code once and deploy it
anywhere.
Node.js accepts the request from the clients and sends the response, while working
with the request node.js handles them with a single thread. To operate I/O operations
or requests node.js use the concept of threads. Thread is a sequence of instructions that
the server needs to perform. It runs parallel on the server to provide the information to
multiple clients. Node.js is an event loop single-threaded language. It can handle
concurrent requests with a single thread without blocking it for one request.
Node.js Ecosystem:
Node.js has a vibrant ecosystem with a plethora of libraries, frameworks, and tools.
some key components are:
• npm (Node Package Manager): npm is the default package manager for Node.js. It
allows developers to install, manage, and share reusable code packages (called
modules).
• Express.js: Express is a popular web application framework for Node.js. It
simplifies routing, middleware handling, and request/response management. Many
developers choose Express for building APIs, web servers, and single-page
applications.
• Socket.io: For real-time communication, Socket.io is a go-to library. It enables
bidirectional communication between the server and clients using WebSockets or
fallback mechanisms.
• Mongoose: In MongoDB (a NoSQL database), Mongoose provides an elegant way
to model your data and interact with the database. It offers schema validation,
middleware, and query building.
The event loop only performs a single process at a time. This means that it can only
execute one function at a time, and since functions can include multiple instructions,
the event loop will only execute one instruction at a time. The beauty of the event loop
is that it has the ability to “put aside” time-consuming I/O activities so that other
instructions can continue to execute without interruption. This is different from
running everything on a single thread. This is why, despite the possibility of numerous
users simultaneously sending queries to a Node.js API, we receive quick results.
28 | P a g e
3.2. INTRODUCTION TO EXPRESS:
29 | P a g e
4. DATABASE
Working of MongoDB:
Key Features:
• CRUD Operations: Create, Read, Update, Delete operations are fundamental for
interacting with MongoDB.
In the MongoDB database, a single collection comprises multiple documents, and these
documents may further comprise the different numbers of values, fields, and so on. One
document doesn't need to be a must to relate with the other documents, as it happens in
relational databases.
30 | P a g e
4.2. MVC Architecture in MERN Stack:
• Mongoose’ (model) defines the data part. This is where we will store all of the crucial
data our application needs to function.
• Express & Node.js does all the functional programming and will be used to write the
Logic Tier (controller). It is the request-response handler. This tier represents the
Application Server that will act as a bridge of communication for the Client and
Database. This tier will serve the React components to the user’s device, and accept
HTTP requests from the user and follow with the appropriate response.
• React serves as the “V” in the MVC. Client tier (View) is written in JavaScript,
HTML, and CSS, using ReactJS as the framework. This level of the architecture is
what the user will interact with to access the features of application.
31 | P a g e
5. DEVELOPMENT TOOLS
5.1. POSTMAN:
Postman stands as an indispensable tool for modern API development, offering a range
of features that streamline the development process.
32 | P a g e
centralized approach to documenting APIs, benefiting both internal development
teams and external stakeholders. The documentation process is efficient, ensuring
clarity and accessibility.
Working of Postman:
Postman sends the request to the webserver and then the server sends the response back
to it. A user has to set all the headers and cookies API expects to check the
response. API call mainly uses two things:
• HTTP Request
Request Methods:
There are several types of Request methods in POSTMAN. Mainly there are four request
methods in an application.
• GET Request: To retrieve or fetch data
• POST Request: To create and update data
• PUT Request: To update data
• DELETE Request: For deleting data
Request URL: A long-width bar in Postman where URL to make the HTTP request is
entered.
Request Headers: In the request header, key value of the application is entered. The two
main key values are:
• Content-Type: The format of data is specified by Content-Type. Mainly JSON
format is used in the content type.
• Authorization: This information is included to identify the requester.
Request Body: In Postman, In Request Body we can mention some specific information
that needs to be sent with the request.
• HTTP Response:
Once the request is sent to Postman, the response is received back from the API that
contains Body, Cookies, Headers, Tests, Status Code, and API Response time. Body and
Header get organized in different tabs. Status code gets displayed in another tab with the
time taken to complete the API call. Some important status codes are given below to
verify the response.
33 | P a g e
5.2. GITLAB:
GitLab is a web-based DevOps lifecycle tool that provides a complete solution for
managing Git repositories, from version control to CI/CD (Continuous
Integration/Continuous Deployment). It offers both self-hosted and cloud-hosted options,
catering to the needs of different teams and organizations.
34 | P a g e
Key features of GITLAB:
35 | P a g e
• Agile Project Management: JIRA supports agile methodologies such as Scrum
and Kanban. It provides customizable boards, backlogs, and sprints, allowing
teams to visualize their workflows, manage tasks, and track progress efficiently.
• Issue and Task Tracking: At the core of JIRA is its robust issue tracking system.
Issues can represent tasks, bugs, features, or any work item. Users can create,
assign, prioritize, and monitor issues through their lifecycle, ensuring nothing falls
through the cracks.
• Customizable Workflows: JIRA offers highly customizable workflows to match
the unique processes of any team. Workflows define the states an issue can go
through and the transitions between those states, enabling teams to model their
specific processes.
• Reporting and Analytics: JIRA provides a variety of reporting tools to help
teams gain insights into their performance. Burndown charts, velocity charts, and
sprint reports help track progress and identify areas for improvement.
Customizable dashboards offer real-time visibility into project status.
• Integrations: JIRA integrates with numerous development tools and services,
including Confluence (for documentation), Bitbucket (for code repositories), and
Bamboo (for CI/CD pipelines). It also supports integrations with third-party tools
through its marketplace.
• Roadmaps: Advanced roadmaps in JIRA allow teams to plan and visualize their
work on a larger scale. This feature is particularly useful for managing multiple
projects and ensuring alignment with organizational goals.
• Automation: JIRA’s automation capabilities help reduce manual effort and
streamline processes. Users can create automation rules to handle repetitive tasks,
such as transitioning issues based on certain triggers or sending notifications.
• Permissions and Security: JIRA offers fine-grained permission controls,
allowing administrators to define who can view, create, edit, and delete issues.
This ensures that sensitive information is protected and only accessible to
authorized users.
36 | P a g e
6. PROJECTS/TASK ASSIGNED
“Dynamic Admin Panel for Seller Configuration”
• Search Functionality: Administrators can search for sellers using various criteria such
as email, domain name, company name, or company ID. The search results are
displayed in a table for easy access.
• Configurable Table: The table displaying seller configurations dynamically adjusts its
columns based on the data received from the backend. It provides actions like
accessing the seller dashboard and configuring seller settings.
• Error Handling and Notifications: The application includes robust error handling
mechanisms to manage API call failures and validation errors. Users are notified of
errors via notifications, enabling them to take appropriate action.
37 | P a g e
6.3. FLOW OF THE PROJECT:
The Configuration Panel interacts with the backend API and renders dynamic forms based
on the received configuration data.
1. Initial Setup:
- The React component `ConfigurationPanel` is mounted within the application.
- It initializes state variables such as `searchKey`, `searchValue`, `sellerEmail`,
`isModalOpen`, `sellerConfig`, `updateConfigData`, and `flag` using the
`useState` hook.
38 | P a g e
4. Dynamic Form Rendering:
- Based on the received configuration data (`panelData`), the component
dynamically renders forms to display and manage configuration settings.
- Each configuration group (e.g., "Company Id & Notifications," "Edd
Details," etc.) corresponds to a section within the configuration panel.
- Within each group, configuration keys are mapped to form input components
based on their `type` attribute (e.g., text input, checkbox, dropdown).
- The `readKey` and `writeKey` attributes are used to retrieve and update
configuration data.
39 | P a g e
6. Updating Configuration:
- On submitting the configuration updates within the modal, by clicking on
‘Save & Proceed’ Button, the component sends a PUT request to the
`/api/ve1/aggregator-service/user/config-update` endpoint with the updated
data.
- The `updatePanel` function handles the API call to update the configuration.
- If the update is successful, a success notification is displayed.
40 | P a g e
8. Interaction with Dashboard:
- Admins can interact with the dashboard by clicking on the "Dashboard"
button for a specific seller.
- The component opens the Dashboard in a new tab/window, passing the
necessary authentication token (`pickrrAuthToken`).
41 | P a g e
6.5. DEPENDENCIES:
Server-Side Dependencies:
• JSON Web Token - A concise, URL-safe method of encoding claims that need to
be exchanged between two parties is the JSON Web Token (JWT). In a JSON Web
Token (JWT), the claims are encoded as a JSON object. This is used as the plaintext
of a JSON Web Encryption (JWE) structure or as a payload of a JSON Web
Signature (JWS) structure allowing the claims to be encrypted, digitally signed or
integrity protected with a Message Authentication Code (MAC).
• Google API’s - (Google APIs Node.js Client) is a library for leveraging Google
APIs with Node.js. The API endpoints are produced automatically, and
authorization and authentication using OAuth, API Keys, and JWT tokens are
supported.
42 | P a g e
the express library’s res.download() function will take care of downloads. The
middleware is supplied to the app as express-fileupload,
• CORS - A server can specify any origins (domain, scheme, or port) other than its
own from which a browser should be able to load resources using the Cross-Origin
Resource Sharing (CORS) protocol, which is based on the HTTP header.
Client-Side Dependencies:
• React - React is a JavaScript library used to create user interfaces. Only the
functionality required to define React components is contained in the react
package. A React renderer, such as react-dom for the web or react-native for native
applications, is generally used in conjunction with it. When the data changes, React
quickly updates and renders the appropriate components.
• React-DOM - The server and DOM renderers for React are accessible through this
package. It is meant to be used in conjunction with the react package, which
contains the basic React components. If necessary, the react-dom package offers
DOM-specific functions that can be used as a backdoor to leave the React model.
43 | P a g e
• React-Redux - The official Redux/TS templates for Create React App, which
make use of Redux Toolkit, are the suggested method for beginning new projects
with React Redux. React Redux is the name of Redux’s official React binding. It
enables React components to access Redux Store data so they can update the data
by sending actions to the store. Redux assists in project growth by providing a
viable means of managing state using a unidirectional data flow design.
• User Access Control: Incorporated features to manage user roles and permissions,
ensuring only authorized personnel could access and modify seller configurations.
• Development Tools and Collaboration: Employed GitLab for version control, CI/CD
pipelines, and code reviews to maintain code quality and streamline deployment
processes. Used JIRA for project management, task tracking, and sprint planning,
ensuring timely completion of project milestones.
• Leveraged Postman for API testing and validation to ensure robust and reliable
backend services.
44 | P a g e
6.7. OUTCOMES:
• Successfully developed and deployed the dynamic admin panel within the stipulated
timeline, receiving positive feedback from the team.
The Dynamic Admin Panel developed during my internship has laid a strong foundation
for efficient seller configuration management. However, there are several potential
enhancements and expansions that can be explored to further improve its functionality,
usability, and overall impact.
45 | P a g e
1. TASK ASSIGNED
46 | P a g e
UI COMPONENT FOR PREPAID DISCOUNT VALUE:
47 | P a g e
UI COMPONENT FOR COD CHARGE VALUE:
48 | P a g e
CONCLUSION
My internship at Pickrr Technologies Pvt. Ltd. has been an enriching journey,
significantly enhancing my understanding and proficiency in software
development. This hands-on experience has provided me with practical insights
into various web technologies, including React.js, Node.js, and MongoDB.
Working on developing and integrating complex components within the Pickrr
platform has deepened my understanding of the intricacies involved in software
development. This process has highlighted the importance of meticulous
planning, agile methodologies, and effective teamwork.
One of the critical learnings from this internship was the importance of agile
project management. Regular sprint meetings and iterative feedback loops
allowed for continuous improvement and timely identification of potential
issues. This approach not only ensured that the project stayed on track but also
fostered a collaborative environment where ideas and solutions were freely
exchanged.
49 | P a g e
References:
• Williams, L. (2021). "Implementing Advanced Security Protocols in Web Applications."
Cybersecurity Journal, 5(1), 112-130.
• Smith, J., & Doe, R. (2022). "User-Centric Design in Web Development." International Journal of
Human-Computer Interaction, 14(4), 234-250.
• Lee, K., & Chang, H. (2021). "API Expansion Strategies for Web Applications." Journal of Software
Engineering, 18(2), 167-182.
• Nielsen Norman Group. (n.d.). "Usability 101: Introduction to Usability." Retrieved from
https://www.nngroup.com/articles/usability-101-introduction-to-usability/.
• OWASP Foundation. (n.d.). "Top 10 Web Application Security Risks. Retrieved from
https://owasp.org/www-project-top-ten/ .
• Doe, J., & Smith, A. (2020). "Modern Practices for Predictive Analytics in Web Applications."
Journal of Web Development and Technologies, 12(3), 45-56.
• Brown, R., & Green, P. (2019). "Scalability Techniques in Node.js Applications." International
Journal of Web Engineering, 11(2), 98-112.
• React. (n.d.). "React – A JavaScript library for building user interfaces." Retrieved from
https://reactjs.org/.
• Johnson, M. (2020). "Effective Agile Methodologies for Software Development." Journal of Project
Management, 22(3), 89-102.
50 | P a g e
APPENDIX
Pickrr Technologies Pvt. Ltd., is a leading logistics and supply chain solutions
provider headquartered in New Delhi, India. The company specializes in offering
seamless and efficient end-to-end logistics services to businesses of all sizes, from
small and medium enterprises (SMEs) to large e-commerce giants. Pickrr’s mission is
to revolutionize the logistics industry by providing cutting-edge technology solutions
that simplify and optimize the shipping process for its clients.
Vision:
Pickrr aims to become the most trusted logistics partner for businesses across the
globe, delivering excellence through innovation, technology, and a customer-centric
approach.
Mission:
To provide reliable, efficient, and scalable logistics solutions that empower businesses
to focus on their core competencies while Pickrr takes care of their shipping and
logistics needs.
Services Offered:
Pickrr offers a comprehensive range of logistics services, including:
51 | P a g e
4. Return Management: Pickrr handles return logistics efficiently, offering hassle-
free solutions for managing returned goods, which is crucial for maintaining
customer satisfaction and optimizing reverse logistics.
5. Cross-Border Shipping: Pickrr facilitates international shipping, helping
businesses expand their reach to global markets with ease and reliability.
Pickrr’s technological prowess is at the core of its service offerings. The company
utilizes state-of-the-art technology to develop innovative solutions that address the
dynamic needs of the logistics industry.
Pickrr Technologies Pvt. Ltd. continues to lead the logistics sector with its
commitment to excellence, innovation, and customer satisfaction.
52 | P a g e