Internship Report by Mainak Pandit
Internship Report by Mainak Pandit
By:
Mainak Pandit(171365)
TABLE OF CONTENTS
Chapter No. Topics Page No.
Student Declaration 2
Acknowledgement 4
Summary 5
List of Figures 6
1
DECLARATION
I hereby declare that this submission is my own work carried out at Josh Technology Group,
Gurgaon from Feb, 2021 to May, 2021 and that, to the best of my knowledge and belief, it
contains no material previously published or written by another person nor material which
has been accepted for the award of any other degree or diploma from a university or other
institute of higher learning, except where due acknowledgment has been made in the text.
2
Project Report Undertaking
I Mr. Mainak Pandit – Roll No. 171365 Branch Computer Science and Engineering is doing
my internship with Josh Technology Group from Feb, 2021 to July, 2021.
As per procedure I have to submit my project report to the university related to my work that I
have done during this internship. I have compiled my project report. But due to COVID-19
situation my project mentor in the company is not able to sign my project report.
So I hereby declare that the project report is fully designed/developed by me and no part of the
work is borrowed or purchased from any agency. And I'll produce a certificate/document of
my internship completion with the company to TnP Cell whenever COVID-19 situation gets
normal.
Signature
Name- Mainak Pandit
Roll No.- 171365
Date- May 22, 2021
3
ACKNOWLEDGEMENT
I take this opportunity to express my sincere thanks and deep gratitude to all those people
who extended their wholehearted cooperation and have helped me in completing this
internship successfully.
First of all, I would like to thank Mr. Pamil Gurung, Mr.Shivam Agarwal, Mr. Ayush Gupta
and Ms. Avantika Gupta my mentors, who mentored me, guided me and challenged me.
I also thank my family and friends who greatly supported me during the course of the
Internship.
Last but not the least, I would like to thank our founders for considering me a part of their
organization and provide such a great Platform to learn and enhance my skills.
A very special thanks goes to all the faculties of Jaypee University of Information
Technology under whom guidance I have been able to excel in my career and become a part
of the JTG family.
Mainak Pandit
171365
Jaypee University of Information Technology
4
SUMMARY
This report is all about what I learned as an intern and the work I carried out in Josh
Technology Group, Gurgaon during my internship period from Feb, 2021 to May, 2021.
Josh Technology Group is a product development company working with various fast
growing US based startups on new products across multiple domains like Web & Mobile
Applications. Being a front end developer intern in this company I got an opportunity to learn
about various projects of different domains being developed and to interact with the team
associated with these projects. I went through the ramp-up process in the first month of my
internship where I have to do different kinds of assignments on different technologies which
enhanced my knowledge in various technologies as well as give me a better idea of how work
is carried out in the development of any application in an organization.
Working here has taught me that a project is not only a piece of code, it is a compilation of
uncountable number of modules and a process behind building these modules. Writing code
is just a small fraction of making an application. Planning, assigning, reviewing, fixing,
testing, compiling and tracking all this process are some other fractions of developing an
application.
I worked on a project named Calyxpod. It is a platform that brings alumni, students, and
faculty at a single place. It is a complete package for any placement activity to be carried out.
From registrations to the interviews and final result declaration, it tracks everything and helps
the company, training and placement cell of the college as well as student to track the process
at each step which makes the placement process very easier. By working on this project
technologies I learned about are: React and AngularJS.
Mainak Pandit
May 22, 2021
5
LIST OF FIGURES
1. MVC Architecture 16
2. Flow of Redux state 18
3. Notification with small text 20
4. Notification with long text 20
5. Notification with text containing link 20
6. How git works? 22
6
GLOSSARY OF TERMS USED
7
Chapter - 1
COMPANY’S PROFILE
8
1. COMPANY PROFILE
1.1. Summary
Website: www.joshtechnologygroup.com
https://www.facebook.com/LifeAtJosh
Headquarters: Gurgaon, Haryana
Type: Company - Private
Industry: IT Services
Year Founded: 2009
Founders: Shshank Jain, Rishu Gupta, Amit Yadav
1.2. About Us
Josh Technology Group based in Gurgaon, India is a growing team of technology consultants and
innovators. JTG is a niche product development company working with various fast growing US
based startups on new products across multiple domains like Web & Mobile Applications.
JTG provides a rare opportunity to work on various new technologies & use them to innovate across
different domains by transforming ideas into real life products. There is a High Focus on Open Source
Technologies / Frameworks - Java, J2EE, Ruby on Rails, Django, etc.
JTG works primarily on web applications in various domains such as Mobile Advertising Platform,
Automotive Retail, Lead Analytics, E-Commerce Platforms, Social Networking, Corporate Branding
(Sports & Entertainment World). Also working on iPhone, Android & Blackberry Platforms.
Some of the domains on which JTG is working in are as follows - targeted advertising, automotive
retail, lead analytics, energy trading, mentoring platforms, social networking, server monitoring tools,
retail analytics, automotive insurance, medical insurance, health/lifestyle products, video
streaming/analytics, etc. Also working on its own products in the web / mobile space for the Indian
market.
JTG has a highly talented peer group that is very well respected in the technology world. We have
alumni of colleges such as IITs, NSIT, BITs, IIITs, Pune MCA, VIT, etc and Have previously worked
with companies such as Trilogy & Amazon. Clients range from exciting funded Startups in US &
India to Established Fortune 1000 Companies.
9
We work in small scrum teams with focus on fast iterations to deliver value. Our teams' extensive
design and engineering experience is critical to the quality of our work and our ability to deliver
elegant, highly scalable solutions. We lay a very strong emphasis on quality mentorship & learning.
Our culture is at the core of everything we do. We are known to make things happen. Think Big &
Achieve Bigger is the Value We Live By. Having said that we combine work with lots of fun & we
seriously mean it :) So, as we grow we're not only looking to hire the best and brightest, but we're also
looking for people that share our values.
10
Chapter 2
INTRODUCTION TO THE PROJECT
11
2. Introduction to the Project
Colleges can use it for organising complete placements activities held in the campus and to
store information of all the students undergoing placement activity. Companies can also use
it to organise their personal placement drive to keep a record of who all are participating,
view their profile, shortlist, organise online tests, and announce results etc.
12
2.2 OBJECTIVES
○ Enter their personal details like name, contact information, technical skills,
projects, hobbies, interests etc.
○ Add attachments like ID, results, certificates etc.
○ View opportunities for different profiles.
○ View on-campus placement drives details.
13
○ View off-campus placement drives details.
○ Get in touch with the alumni.
○ Apply for different placement drives.
○ Track his/her status in an ongoing placement activity.
○ View notifications of broadcast events by the college or different placement
broadcasts by the company.
Some of the technologies and frameworks used during this project are:
2.3.1 AngularJS
AngularJS is a javascript framework. It is used to build single page applications that are
based on MVC architecture. It is an open-source front-end web application platform led by
the Angular Team at Google and by a community of individuals and corporations.
14
MVC stands for Model-View-Controller. It divides an application into three components:
1. Model: It is responsible for the complete flow of data between view and controller in
an application.
2. View: It is responsible for the presentation of data triggered by the controller
decision.
3. Controller: It is responsible for the complete interaction between the user and the data
model. It perform operations based on the input and modifies the data model.
2.3.2 React
15
It is a Javascript framework developed by Facebook. It is used to build reusable UI
components. Some of its key features are:
● JSX: Javascript Syntax Extension. React tries to put markup and logic at the same
place called component. JSX helps in embedding the markup in JS.
● Components: It is the building block of any React application. Everything can be
scaled down to small components.
● Unidirectional flow of data and flux
2.3.3 Redux
It contains state of any Javascript application like React. It is a state management tool. All the
state of an application are stored at a place called store and the application can access these
states from here. Some of the key components of redux are:
● Store: All the state resides here. Application access the states wrapped up in a store.
● Action: It is basically an object that tells the reducer how to change the state. It
contains two properties type and payload.
● Reducer: It returns the state data, it gets triggered by the action type.
16
For connecting react with redux we have two functions:
● mapStateToProps: It connects redux state to the props of the react component.
● mapDispatchToProps: It connects the redux action to the props of react component.
2.3.4 Django
It is a high level Python framework for Web. It helps in developing websites fast and easily
with clean pragmatic designs. Its main goal is to ease down the creation of complex database-
driven websites. Some of its main features are:
● Open source
● Vast and supported community
● Fully loaded
● Scalable
● Secure
● Rapid Development
● Versatile
2.3.5 Storybook
It is a very useful open source tool which is used to build UI components for various
frameworks like Angular, Vue, React etc in complete isolation. This tools helps the UI
developers to build their components independently and to showcase them in complete
isolation without any dependence on the backend.
17
A story is made for each component which can have a single state or multiple states and is
showcased on storybook app, completely outside the main app without worrying about any
type of requirement or dependencies.
18
Figure5 Notification with text containing link
It combines:
● issue tracking - a software application that allows to record and follow the progress
of every problem or "issue" that user identifies until the problem is resolved.
● agile project management - an iterative approach to planning and guiding project
processes.
● customizable workflow, and a pluggable integration - integrates with Freshdesk,
GitHub, Zendesk, Zapbook, Asana and so on.
● the kanban board to increase the velocity - consist of to do/in progress/in review/done
divisions
19
Another benefit of using JIRA is that it allows you to prioritise tasks better and for all
members of the team to see which tasks need to be completed right away and which
can be dealt with later.
3. Increased productivity
When using JIRA, members of a team are always able to see exactly which task is
next up on the list for completion.
4. Anywhere & Anytime
A further benefit of the JIRA software is that it comes with widely available mobile
apps. This means that all team members can stay connected not just when in the office
or on their laptop, but also via their mobiles and tablets too.
20
2.3.6 Git
Git is a distributed version control system. It is also free and open source. It is a very useful
tool for development as it helps in coordinating work among the team members and it also
keeps track of all the changes in any file.
Every project has a git repository maintained locally and globally. Using git several
developers can work on the same code efficiently. Every change made in the code is stored as
Versions. Snapshots of every change is taken to maintain versions. Developers can work on
their local repositories and then push the code on remote repository. In this there won't be any
conflicts in the work done by various developers. If there are conflicts error will occur while
which can be resolved efficiently.
There are various version control systems like CVS, SVN, Mercurial etc
21
● Working directory is your current location of the folder you are working
with.
● Then you add your files to the staging area before saving the changes
(commit)
● After all the changes are made, you commit the files to the local repository
● Then you push the committed files to the remote repository
● If needed, you can push the changes from the remote repository to the local
repository
● Git allows you to create branches and switch to them when required
● After the changes are complete, you can merge the newly created branches
to the master branch
Chapter - 3
IMPLEMENTATION DETAILS
22
3.1 RAMP UPS
Before starting on any project work we have to go through a ramp up process where some
assignments are designed for us such that after complementing those assignments we will
have a good idea about the code structure and coding style followed in any organization
project. We will also learn about the technologies and frameworks used in the projects in
detail through these ramp ups so that we can continue on the project with ease. Codes of these
assignments were thoroughly reviewed and the review cycle continued till the code was
written perfectly according to the norms followed in organization.
23
3.1.2 RAMP UP 2 - Advance UI Assignment
This assignment’s main motive was to learn about flex box.
Flexbox is a CSS property that provides an efficient way of designing layout, align and
distributes space among each item in a container. This property is very useful in designing
complex responsive structure very easily.
In this assignment I designed a homepage of a website which was also pixel perfect with the
digital designs provided by the graphic designer. For pixel perfection a Google plugin was
used.
24
3.1.3 RAMP UP 3 - Email Template
We usually don't use table tags in HTML because it gets difficult for most of the screen
readers to parse the table and display it properly. So it is restricted to use table tags in normal
web pages. But for email templates we use only table tags, even <div> is not use for email
templates. The whole layout is designed using <table>, <tr>, td> tags because most of the
email clients do not support various CSS properties on tags other than <table>, <tr>, td>.
So I designed an email template using table tag in this assignment.
25
3.1.4 RAMP UP 4 - Angular 7 Assignment
After learning about basic CSS, HTML, Javascript I moved to frameworks like Angular,
React. I designed 2 sections of a website where I worked on graphs. Through this assignment
I learned various concepts of Angular like components, routing, parent child communication,
sibling communication, data binding, event binding, directives etc.
26
3.1.5 RAMP UP 5 - Wordpress Assignment
Wordpress in a Content management system (CMS). It is an open source and a very useful
tool for designing static websites with changing contents in a short period of time.
Wordpress provides various themes and plugins that are free to download and easy to use for
designing websites with ease. It is SEO friendly, safe, secure and easy to manage. All in all it
is a great tool for designing sites with large changing contents like blogging sites. For a UI
developer wordpress is must know tool. I designed a web page in wordpress where I used
Advance Custom Field plugin. Wordpress provides WP-ADMIN where one can manage the
content to be displayed on the site. It uses HTML and PHP for writing codes.
27
3.1.6 RAMP UP 6 - React Assignment
In this assignment I designed a mini website with login/logout functionality. Data was
retrieved by interacting with an API and later stored in redux state. Connected react props
with redux state to access the data. This assignment taught a lot about react like components,
containers, react-redux interaction, API interaction, routing, type checking with proptypes,
JSX, destructuring data etc.
28
Figure16 Search screen showing search results
3.2 CALYXPOD
I implemented various components used for the development of this project during my
internship. Being a Front End developer the task was to design components with some
dummy data and the component needs to be pixel perfect with the designs provided by the
designer. The framework used for front end development was React. Storybook was used for
developing each component. It helped in developing each component independently without
worrying about any dependencies. It also helped in developing reusable components as each
component was represented as a stories covering all the variations of the component as
different states of the story.
Some of the components I developed are:
● Notification Dropdown:
A dropdown component listing all the notifications with the details of each
notification and the time when the notification arrived.
For date and time manipulation we used moment.js library. Time from now the
notification arrived was calculated using fromNow() of moment.js.
29
Figure17 An example of fromNow()
30
● Select Dropdown
Dropdowns are must have in any website. For consistency one use same styling for a
dropdown through out the website. Then why not make one dropdown and reuse
everywhere. That's what my task was. I designed a dropdown that accepts the
dropdown label and the list of content to be displayed in the dropdown menu as props
and render the dropdown. This component can be used everywhere by importing the
component.
● Table Component
A component that takes metadata and content of the table as props. The metadata
contains the headings of each column along with the relative size of each column. In
the table component I calculated the size of minimum column by dividing 100 by the
sum of relative sizes. This gave me the width of minimum size cell and by using this
value I calculated the width of each cell by multiplying this value with the relative
size of that column. Using this component a table of any number of rows and
columns can be rendered by passing the metadata and content to it.
This approach was used for designing tables instead of <table> because most of the
screen readers can not parse the table. Therefore use of <table> is strictly prohibited
in front end development.
Designing these small components pace up the process of front end development because one
can reuse these components instead of writing the same code again and again. It also keeps
the code short and clean.
31
Chapter - 4
TESTING AND RESULTS
32
Testing each and every component in front end development is very important. There are
various aspects that needs to be kept in mind while testing the UI of any web page. Some of
them are:
● Pixel Perfection
● Responsiveness
● Compatibility in different browsers
Development is going on everywhere with a fast pace. Browsers are getting updated within
years but still all browsers do not support all the CSS properties. Also everyone is not using
the latest upgraded version of the browser. Thus it is important to use such properties in the
development of website that a larger group of users. Here are some examples of compatibility
comparisons of different browsers for different properties.
33
Chapter - 5
LEARNINGS AND CONCLUSION
34
This internship was indeed a pool of knowledge. Not only have I gained knowledge in Front
End Development and different front end frameworks but I have also learned about how
development of any project takes place, how team works, how the work of each employee is
tracked, how work is assigned, what are the different stages of development, what are the
technical problems that one face in the development of any project, what all things are
required before the development of any project, what the code base should be like, what
norms need to be followed in the development.
Talking in terms of technical knowledge, I learned a lot in front end development. Some of
the key learning points are:
● Never use “id” and “important” for writing css properties because the increases the
specificity of the element thus it gets difficult to override the property. Always use
classes.
● Do not use <table> because most of the screen readers can not parse the table. Design
the tables using <div> and flexbox property.
● Apply class “clearfix” to the parent class while using float for an element.
● Make reusable components because it speed up the process of development and keep
the code clean and short.
● Before applying any CSS property check its compatibility with different browsers.
Use only those properties that cover up the browsers used by large group of users.
● DOCSTRING are very important, and every developer should make this as habit to
provide DOCSTRING with their code, so that the code is easily understood by any
other developer.
● While developing any component remember components are stateless, state are used
in containers.
35
REFERENCES
36