Summer Intership Report
Summer Intership Report
REPORT ON
of
BACHELOR OF ENGINEERING
in
July, 2024
Laxmi Institute of Technology-Sarigam
At: Sarigam, P.B. No-15, P.O.: Valsad, Pin: 396155
CERTIFICATE
This is to certify that the report submitted has been carried out by Amit
Kumawat (210860131019) under my guidance in fulfilment for the course
named Summer Internship (3170001) in the degree of Bachelor of
Engineering in Computer Science & Engineering of Gujarat Technological
University, Ahmedabad during the academic year 2024-25. He has done his
summer internship in IT IDOL TECHNOLOGIES and successfully
completed all activities related to summer internship under my guidance.
III
Certificate from Industry
IV
Acknowledgement
Finally, I would like to thank my family and friends for their constant
support and encouragement during this internship. Their belief in my
abilities has always motivated me to give my best.
V
Table of content
Sr No. Title Page No.
1. Completion Certificate III
2. Certificate from Industry IV
3. Acknowledgement V
4. Table of content VI
VI
List of figures
Sr No. Title Page No.
VII
210860131019 Summer Internship (3170001)
At IT Idol Technologies, innovation and excellence are at the core of everything we do.
Whether it’s bringing a client’s idea to life on the internet or developing cutting-edge
applications, our team is equipped to handle even the most complex challenges. Our
commitment to professional development ensures that our developers stay ahead of
industry trends, continually enhancing their skills through access to the latest resources
and training programs.
With a vision to redefine possibilities in the digital age, IT Idol Technologies is more
than just a service provider; we are a partner in our clients’ success. Our mission is to
empower businesses with tailored IT services and solutions that drive growth and
technological advancement. As we continue to push the boundaries of what’s possible in
the world of technology, our goal remains steadfast: to be the premier choice for
businesses seeking innovative, reliable, and efficient IT solutions.
Overview: The first two days of the internship were dedicated to laying the foundation
for web development with an introduction to HTML and CSS. These sessions focused
on understanding the basic structure of web pages, how to style them effectively, and
implementing basic form validation.
▪ min and max: Define the minimum and maximum values for
numeric inputs.
▪ type="email" and type="url": Automatically validate the
format of email addresses and URLs.
• Containers:
o <div>:A block-level element used to group content together for styling
or layout purposes.
o <span>: An inline element used to group text or other inline elements
without affecting layout.
• Semantic Elements:
o <header>, <footer>, <nav>, <article>, and <section>: Introduced to
create more meaningful and accessible web pages.
• Introduction to CSS:
o What is CSS?: A language used to describe the presentation of HTML
elements, including colors, layout, and fonts.
o Inline CSS: Applying styles directly to an HTML element using the
style attribute.
o Internal CSS: Placing CSS code within the <style> tag inside the
<head> of the HTML document.
o External CSS: Linking to an external stylesheet using the <link> tag in
the <head>.
• CSS Selectors:
o Element Selector: Targets HTML elements by their tag name (e.g., p {
color: blue; }).
o Class Selector (.): Targets elements by their class attribute (e.g.,
.className { font-size: 14px; }).
o ID Selector (#): Targets elements by their ID attribute (e.g., #idName {
margin: 20px; }).
o Descendant Selector: Targets elements within another element (e.g., div
p { color: red; }).
• Basic CSS Properties:
o Color and Background: Setting text color with color and background
color with background-color.
o Text Styling: Using font-family, font-size, font-weight, and
text-align to style text.
o Margins and Padding: Controlling space around and inside elements
using margin and padding.
o Borders: Adding borders around elements using the border property.
o Width and Height: Setting the dimensions of elements.
o Box Model: Understanding how padding, borders, and margins affect the
size of elements.
• Introduction to Layout:
o Display Property: Using block, inline, inline-block, and none to
control the layout.
o Positioning: Using static, relative, absolute, and fixed to position
elements on the page.
Practical Application:
• Students created a basic web page that included a variety of HTML elements,
such as headings, paragraphs, lists, and images.
• Basic CSS was applied to style the page, including setting text colors, fonts, and
layouts, which provided a strong understanding of how CSS affects the
appearance and structure of HTML content.
• HTML5 validation was implemented to ensure that user inputs met certain
criteria before submission, enhancing the reliability of the form.
Overview: During Days 3 and 4, the focus was on advanced CSS techniques and the
principles of responsive design. These sessions aimed to deepen understanding of
modern layout methods and how to create web pages that adapt to different devices and
screen sizes.
• Flexbox:
o Concept: Flexbox is a one-dimensional layout model that enables easier
alignment and distribution of space among items within a container. It addresses
common layout challenges such as vertical alignment and flexible item sizing.
o Key Properties:
▪ display: flex;: Converts an element into a flex container, allowing
its child elements (flex items) to be laid out using Flexbox rules.
▪ flex-direction: Defines the direction in which flex items are placed
in the flex container. Possible values include:
▪ row: Items are laid out horizontally (default).
▪ column: Items are laid out vertically.
▪ justify-content: Aligns flex items along the main axis of the
container. Common values include:
▪ center: Centers items horizontally (or vertically if flex-
direction is column).
▪ space-between: Distributes items evenly with the first item
at the start and the last item at the end.
▪ space-around: Distributes items evenly with equal space
around them.
▪ align-items: Aligns flex items along the cross axis (perpendicular to
the main axis). Key values include:
▪ flex-start: Aligns items to the start of the cross axis.
▪ center: Aligns items in the center of the cross axis.
▪ stretch: Stretches items to fill the container (default).
▪ flex-wrap: Controls whether flex items should wrap onto multiple
lines. Values include:
▪ nowrap: Items are kept on a single line (default).
▪ wrap: Items wrap onto multiple lines from top to bottom.
▪ wrap-reverse: Items wrap onto multiple lines from bottom to
top.
• Grid:
o Concept: CSS Grid Layout is a two-dimensional layout system that allows for
the creation of complex grid-based designs. It facilitates the positioning of
elements into rows and columns.
o Key Properties:
▪ display: grid;: Defines an element as a grid container, enabling
grid layout.
▪ grid-template-columns and grid-template-rows: Define the
number and size of columns and rows in the grid. Values can be
specified in units like pixels (px), percentages (%), or fractions (fr).
▪ Example: grid-template-columns: 1fr 2fr; creates a
grid with two columns, the second column being twice as wide
as the first.
2. Responsive Design:
• Concept: Responsive design ensures that web pages are usable and visually appealing
across a variety of devices, including desktops, tablets, and mobile phones.
• Techniques:
o Fluid Grids: Design layouts using percentage-based widths rather than fixed
pixel values, allowing elements to resize proportionally.
▪ Example: width: 50%; makes an element take up 50% of its
container’s width.
o Flexible Images: Ensure images resize within their containers to maintain
layout consistency. Use the max-width property to make images responsive.
▪ Example: img { max-width: 100%; height: auto; } ensures
images scale according to their container’s width.
o Viewport Meta Tag: Include this meta tag to control layout on mobile
browsers and ensure proper scaling.
▪ Example: <meta name="viewport" content="width=device-
width, initial-scale=1.0">.
• Task: Create an HTML page styled with custom CSS to match a provided reference
image. This task required applying advanced CSS techniques to achieve the desired
layout and visual design.
• Objective: Demonstrate the ability to use Flexbox and Grid for layout, apply media
queries for responsive design, and create a visually appealing web page that adheres to
design specifications.
• Challenge: Focused on translating a static design into a responsive layout, ensuring that
the page adapts to different screen sizes while maintaining design integrity.
1. Basics of JavaScript:
• Variables:
o Declaration: JavaScript variables are declared using var, let, or const.
▪ var: Declares a variable with function or global scope.
▪ let: Declares a block-scoped variable, allowing reassignment.
▪ const: Declares a block-scoped variable with a constant value
that cannot be reassigned.
o Example:
• Data Types:
o Primitive Types: Include Number, String, Boolean, undefined, null,
and Symbol.
▪ Number: Represents numeric values (e.g., 42, 3.14).
▪ String: Represents textual data (e.g., "Hello", 'World').
▪ Boolean: Represents true or false values.
▪ undefined: Indicates a variable that has not been assigned a
value.
▪ null: Represents the intentional absence of any object value.
▪ Symbol: Represents a unique identifier.
o Example:
• Operators:
o Arithmetic Operators: Perform mathematical operations (e.g., +, -, *,
/).
▪ Example: let sum = 5 + 3;
o Comparison Operators: Compare values (e.g., ==, ===, !=, !==, >, <).
▪ Example: let isEqual = (5 === 5);
o Logical Operators: Perform logical operations (e.g., &&, ||, !).
▪ Example: let result = (true && false);
• Arrays:
o Concept: Arrays are ordered collections of values, which can be of any
data type.
o Key Operations:
▪ Adding Elements: Use the push method to add elements to the
end of an array.
▪ Example: array.push(4);
▪ Removing Elements: Use the pop method to remove the last
element, or shift to remove the first element.
▪ Example: array.pop();
▪ Updating Elements: Access elements by index to update their
values.
▪ Example: array[1] = 10;
o Example:
• Objects:
o Concept: Objects are collections of key-value pairs, where keys are
strings (or Symbols) and values can be any data type.
o Key Operations:
▪ Creating Objects: Use object literals to create objects.
▪ Example: let person = { name: "Alice", age: 30
};
▪
Accessing Values: Use dot notation or bracket notation to access
object properties.
▪ Example: person.name or person["name"];
▪ Updating Values: Modify property values directly.
▪ Example: person.age = 31;
o Example:
console.log("Hobbies:", hobbies);
var address = { street: "321 Main Street", city: "Vapi", state:
"Gujarat" }; // object
console.log("Address:", address);
var ishuman = true;
console.log("Is Human:", ishuman);
];
o Task: Calculate the average age of students in the array. This required
summing the ages of all students and dividing by the number of students.
o Example:
• String Manipulation:
o Concept: String manipulation involves altering or analyzing strings to
achieve specific results. This includes operations like searching,
replacing, and extracting substrings.
o Common Methods:
▪ length: Returns the number of characters in a string.
▪ Example: "hello".length returns 5.
▪ slice(start, end): Extracts a portion of a string from the start
index to the end index.
▪ Example: "hello".slice(1, 4) returns "ell".
▪ substring(start, end): Similar to slice, but the indices are
not negative and the end index is exclusive.
▪ Example: "hello".substring(1, 4) returns "ell".
▪ replace(searchValue, newValue): Replaces the first
occurrence of a specified value with a new value.
▪ Example: "hello".replace("e", "a") returns
"hallo".
▪ toUpperCase() and toLowerCase(): Convert a string to
uppercase or lowercase, respectively.
▪ Example: "hello".toUpperCase() returns "HELLO".
• Array Handling:
o Concept: Arrays are collections of items. JavaScript provides various
methods to manipulate arrays, including adding, removing, and iterating
over elements.
o Common Methods:
▪ push(element): Adds an element to the end of an array.
▪ Example: let arr = [1, 2]; arr.push(3); results in
[1, 2, 3].
▪ pop(): Removes the last element from an array.
▪ Example: arr.pop() removes 3, resulting in [1, 2].
▪ shift(): Removes the first element from an array.
▪ Example: arr.shift() removes 1, resulting in [2].
▪ unshift(element): Adds an element to the beginning of an
array.
▪ Example: arr.unshift(0) adds 0, resulting in [0, 2].
▪ map(callback): Creates a new array with the results of calling a
provided function on every element.
▪ Example: arr.map(x => x * 2) results in [0, 4].
function lengthOfLongestSubstring(s) {
let set = new Set();
let maxLength = 0, left = 0;
// Example usage:
console.log(lengthOfLongestSubstring("abcabcbb"));
console.log(lengthOfLongestSubstring("bbbbb"));
}
while (j < arr2.length) {
mergedArray.push(arr2[j]);
j++;
return mergedArray;
// Example usage:
console.log(mergeSortedArrays([1, 3, 5], [2, 4, 6]));
console.log(mergeSortedArrays([0, 2, 4], [1, 3, 5]));
function longestCommonPrefix(strs) {
if (strs.length === 0) return "";
let prefix = strs[0];
return prefix;
}
// Example usage:
console.log(longestCommonPrefix(["flower", "flow",
"flight"]));
console.log(longestCommonPrefix(["dog", "racecar",
"car"]));
Fig 2.4.3 Output of the Longest Common Prefix Among a List of Strings
function rotateMatrix(matrix) {
let n = matrix.length;
return matrix;
}
Overview: Days 9 and 10 introduced React.js, a popular JavaScript library for building
user interfaces, particularly single-page applications. The focus was on understanding
React components, props, state, and JSX, and applying these concepts to create a
functional quiz application.
1. Introduction to React.js:
• Components:
o Concept: React applications are built using components, which are
reusable and self-contained pieces of code that return a React element to
be rendered on the page.
o Types of Components:
▪ Functional Components: Defined as functions that return JSX.
▪ Example:
function Greeting(props) {
return <h1>Hello, {props.name}!</h1>;
}
• Props:
o Concept: Props (short for properties) are used to pass data from parent
components to child components. Props are read-only and cannot be
modified by the child component.
o Usage:
▪ Passing Props:
function Greeting(props) {
return <h1>Hello, {props.name}!</h1>;
}
• State:
o Concept: State is a built-in object that stores property values that belong
to a component. State is mutable and can be changed using setState in
class components or useState in functional components.
o Usage in Functional Components:
▪ Example:
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
render() {
return (
<div>
<p>You clicked {this.state.count} times</p>
<button onClick={() => this.setState({ count:
this.state.count + 1 })}>
Click me
</button>
</div>
);
}
}
2. Basics of JSX:
• Concept: JSX (JavaScript XML) is a syntax extension for JavaScript that allows
writing HTML elements and components within JavaScript code. JSX makes it
easier to create and understand React elements.
• Usage:
o Embedding Expressions:
▪ Example:
o Conditional Rendering:
▪ Example:
function Greeting(props) {
return (
<div>
{props.isLoggedIn ? <p>Welcome back!</p> :
<p>Please sign up.</p>}
</div>
);
}
function NumberList(props) {
const numbers = props.numbers;
const listItems = numbers.map((number) =>
<li key={number.toString()}>{number}</li>
);
return <ul>{listItems}</ul>;
}
function Button(props) {
return (
<button onClick={props.onClick}>
{props.label}
</button>
);
}
o Card Component:
function Card(props) {
return (
<div className="card">
<h2>{props.title}</h2>
<p>{props.content}</p>
</div>
);
}
▪ Example:
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
o Practical Usage:
▪ Managing form inputs.
▪ Toggling UI elements (e.g., modal visibility).
▪ Handling complex UI states, such as tabs or dropdowns.
function Button() {
function handleClick() {
alert('Button clicked!');
}
return (
<button onClick={handleClick}>
Click me
</button>
);
}
o Form Events:
▪ Example:
function Form() {
const [inputValue, setInputValue] = useState('');
function handleChange(event) {
setInputValue(event.target.value);
}
function handleSubmit(event) {
event.preventDefault();
alert(`Submitted value: ${inputValue}`);
}
return (
<form onSubmit={handleSubmit}>
<input type="text" value={inputValue}
onChange={handleChange} />
<button type="submit">Submit</button>
</form>
);
}
o Keyboard Events:
▪ Example:
function TextInput() {
function handleKeyPress(event) {
if (event.key === 'Enter') {
alert('Enter key pressed!');
}
}
return (
function handleSearchChange(event) {
setSearchInput(event.target.value);
filterEvents(event.target.value);
}
function filterEvents(query) {
const filtered = events.filter(event =>
event.name.toLowerCase().includes(query.toLowerCase()
)
);
setFilteredEvents(filtered);
}
▪ Display the filtered list of events in the UI. The list should update
dynamically as the user types in the search field.
▪ Example:
return (
<div>
<input
type="text"
placeholder="Search events"
value={searchInput}
onChange={handleSearchChange}
/>
<ul>
{filteredEvents.map(event => (
<li key={event.id}>
{event.name} - {event.date} -
{event.location}
</li>
))}
</ul>
</div>
);
function App() {
return (
<Router>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
<Link to="/contact">Contact</Link>
</nav>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</Switch>
</Router>
);
}
o Practical Usage:
▪ Navigation bars and menus.
▪ Conditional rendering based on user authentication or role.
• Importance of Reusability:
o Concept: Reusability in React involves creating components that can be
reused across different parts of an application with minimal modification.
This is achieved by designing components that are flexible and accept
various props to control their behavior and appearance.
o Why It Matters: Building reusable components reduces redundancy,
enhances consistency across the application, and makes the codebase
easier to maintain and extend.
• Creating Reusable Components:
o Example: Reusable Table Component
▪ A reusable table component can be designed to accept dynamic
data and configurations, such as columns and rows, making it
adaptable to different use cases.
▪ Example Implementation:
▪ Props:
▪ columns: An array of objects defining the headers and
corresponding data keys.
▪ data: An array of objects representing the rows of data to
be displayed.
• Benefits of Reusability:
o Consistent UI elements across the application.
o Easier maintenance and updates.
In this mini project, I developed a Create Lead form using React.js. The form is
designed to capture and manage lead information efficiently. Below is a detailed
description of the form's features and functionalities:
Objective
The goal of this project was to create a user-friendly interface for inputting lead details,
ensuring that the data is validated and submitted correctly.
Form Overview
The Create Lead form is divided into several sections, each focusing on different
aspects of the lead's details:
1. Personal Details:
o Profile Picture Upload: Users can upload a profile picture for the lead.
o First Name & Last Name: Text inputs for entering the lead's first and
last name.
2. Contact Details:
o Email: An email input field with validation.
o POC LinkedIn: A URL field for the point of contact's LinkedIn profile.
o Phone Number: A phone number input field with validation.
3. Company Details:
o Company Name: Text input for the company name.
o Company LinkedIn: A URL input for the company's LinkedIn profile.
o Number of Employees: A numeric input field for the company's size.
o Street: A textarea for the company’s address.
4. Other Details:
o Mark as Primary: A dropdown menu allowing the user to mark the lead
as primary.
o Lead Status, Lead Industry, Lead Sources, Designation: Text input
fields to capture additional details about the lead.
o Website: A URL input field for the lead's website.
o Note: A textarea to add any additional notes.
The form includes basic validation to ensure that required fields, such as first name, last
name, email, and phone number, are filled out before submission. The submission logic
alerts the user upon successful submission. The form also includes a cancel button,
which resets all fields to their default states.
Implementation Details
The form is implemented using React's functional components and the useState hook
to manage form state. Each input field is linked to the component's state, and changes
are handled by a central handleChange function.
email: '',
phoneNumber: '',
companyName: '',
street: '',
pocLinkedIn: '',
companyLinkedIn: '',
numberOfEmployees: '',
markAsPrimary: false,
leadStatus: '',
leadIndustry: '',
leadSources: '',
designation: '',
website: '',
note: '',
});
};
return (
<div className="lead-form-container">
<div className="header">
<img src="/logo1.png" alt="Profile" className="logo" />
<h1>Create Lead</h1>
</div>
<form onSubmit={handleSubmit}>
<h2>Personal Details</h2>
<div className="form-group">
<img src="/profile.jpg" alt="Profile" className="profile" />
<label>Profile Picture:</label>
<input type="file" name="profilePicture" />
</div>
<div className="form-group">
<label>First Name:</label>
<input
type="text"
name="firstName"
value={form.firstName}
onChange={handleChange}
required
/>
</div>
<div className="form-group">
<label>Last Name:</label>
<input
type="text"
name="lastName"
value={form.lastName}
onChange={handleChange}
required
/>
</div>
<h2>Contact Details</h2>
<div className="form-group">
<label>Email:</label>
<input
type="email"
name="email"
value={form.email}
onChange={handleChange}
required
/>
</div>
<div className="form-group">
<label>POC LinkedIn:</label>
<input
type="url"
name="pocLinkedIn"
value={form.pocLinkedIn}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Phone Number:</label>
<input
type="tel"
name="phoneNumber"
value={form.phoneNumber}
onChange={handleChange}
required
/>
</div>
<h2>Company Details</h2>
<div className="form-group">
<label>Company Name:</label>
<input
type="text"
name="companyName"
value={form.companyName}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Company LinkedIn:</label>
<input
type="url"
name="companyLinkedIn"
value={form.companyLinkedIn}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Number of Employees:</label>
<input
type="number"
name="numberOfEmployees"
value={form.numberOfEmployees}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Street (Enter your address):</label>
<textarea
name="street"
value={form.street}
onChange={handleChange}
></textarea>
</div>
<h2>Other Details</h2>
<div className="form-group ">
<label>Mark as Primary:</label>
<div className="custom-select">
<select
name="markAsPrimary"
value={form.markAsPrimary}
onChange={handleChange}
>
<option value="true">Yes</option>
<option value="false">No</option>
</select>
</div>
</div>
<div className="form-group">
<label>Lead Status:</label>
<input
type="text"
name="leadStatus"
value={form.leadStatus}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Lead Industry:</label>
<input
type="text"
name="leadIndustry"
value={form.leadIndustry}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Lead Sources:</label>
<input
type="text"
name="leadSources"
value={form.leadSources}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Designation:</label>
<input
type="text"
name="designation"
value={form.designation}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Website:</label>
<input
type="url"
name="website"
value={form.website}
onChange={handleChange}
/>
</div>
<div className="form-group">
<label>Note:</label>
<textarea
name="note"
value={form.note}
onChange={handleChange}
></textarea>
</div>
<div className="form-buttons">
<button type="button" onClick={handleCancel}>
Cancel
</button>
<button type="submit">Create</button>
</div>
</form>
</div>
);}
export default LeadForm;
2. JavaScript Fundamentals
3. React.js Development
Chapter 4: Conclusion