INTERNSHIP REPORT Submitted in partial fulfilment of the requirement for the degree of Bachelor of Technology In COMPUTER SCIENCE ENGINEERING By: Mainak Pandit(171365) DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING AND INFORMATION TECHNOLOGY JAYPEE UNIVERSITY OF INFORMATION TECHNOLOGY, WAKHNAGHAT SOLAN-173234, HIMACHAL PRADESH TABLE OF CONTENTS Chapter No. Topics Page No. Student Declaration 2 Certificate from the Supervisor 3 Acknowledgement 4 Summary 5 List of Figures 6 Glossary of terms used 7 Chapter 1 Company’s Profile 8-10 Chapter 2 Introduction to the Project 11-23 Chapter 3 Implementation details 24-32 Chapter 4 Testing and Results 33-34 Chapter 5 Learnings & Conclusion 35-36 References 37 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. Place: Gurgaon Signature: Date: May 22, 2021 Name: Mainak Pandit Enrollment No: 171365 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 7. Basic architecture of git 23 8. View of the homepage 25 9. Flexbox container styling options 26 10. Tool for Pixel Perfect 26 11. Example of designing Email Templates with <table> 27 12. Rendering Graphs in Angular Assignment 28 13. Tabular display of data along with filters 28 14. Various themes provided by Wordpress 29 15. Login Screen 30 16. Search screen showing search results 30 17. An example of fromNow() 31 18. Font files compatibility in different browser versions 34 19. Flexbox compatibility in different browser versions 34 6 GLOSSARY OF TERMS USED Backlog item A project feature desired by customer . Story- A statement from the end user perspective that defines the software requirements. Product Backlog A prioritized list of all the desired features of the product being developed, put together by the product owner. Scrum An iterative incremental framework for managing complex work, such as product development. Sprint A period of time during which the team works on agreed on tasks. The recommended length is 2 to 4 weeks. Stand Up A status update of the work done a day before and the work to be done on that day. Tasks Specific developments required to implement a feature. VCS Version Control System. Task Tracker An application such as JIRA use to track tasks such as issues, stories and bugs. 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 2.1 About Project CALYXPOD is a web and mobile application. It enables the Students of an Educational / Professional Institute to be able to participate & benefit in all campus placements, and other careers related activities being organised by their respective Colleges / Institutes. Students, Faculty and Alumni can also interact amongst themselves, share information, job related details, organise webinars and many other activities to foster an environment of continuous learning and professional growth. It tracks everything during a placement process whether it is the registration of students, selection process during online tests and interviews and the announcement of the results. This platform even provides the facility of organising online test. It has its own portal where companies can organise their online test for selection process. 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 ● For the College ○ Maintain a complete database of the students in their college. All the information required for placement activities like resume, projects, technical skills of a student is available by the college. ○ Able to broadcast the placement activities of the company to the students. ○ Have contact information of all the students. ○ Can view notification of new placement drives and different rounds of any placement activity. ○ View the full time jobs offered to the students. ○ View internship jobs offered to the students. ○ Store the information of all the departments like CSE, EC, Civil etc along with its team members, students etc. ○ View data department wise. ○ View information about a particular person by applying different filters on the complete data like department wise etc. ○ Add new students in their record. ○ Give access to the new students joining the portal. ○ Chat with the people. ○ View students of different batches. ○ Filter out the students who are eligible for sitting in a particular placement drive. ○ View report of their placement activity like percentage of students placed, highest package etc. ● For the Students ○ 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. ● For the Company ○ Add new positions for recruitment. ○ Add new recruitment drives. ○ Invite colleges and students for recruitment drives. ○ View all the openings. ○ View information of all the recruitment drives. ○ View notifications of different drives, positions, offers etc. ○ View information of all the candidates who have applied for any position. ○ Track the status of candidate. ○ Update the status of each candidate undergoing a placement process. ○ View all the offers and joining information for an opening. ○ View all the information college wise. ○ Mark calendar for interviews, different rounds of a recruitment drive. ○ Announce results for placement process. ○ Inform colleges about the results. 2.3 TECH STACK 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. Figure1 MVC Architecture Some of the key features of AngularJS are: ● MVC Architecture ● Two-way binding: It is the synchronization of the data with the model. Whenever the value of the data change the model bound with it automatically gets updated. ● Routing: Since AngularJS helps in making a single page application it provides a support of routing for transition from one view to another. ● Cross-Browser Application 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 There are two types of components in React: ● Functional Components: They are stateless components. If we don't want states in our component, this is the best choice because they have better performance and more reusable. ● Class Components: They are the ES6 classes. They have state and support lifecycle methods. 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. Methods used to interact with Redux API are: ● getState(): It returns the current redux state. ● dispatch(): It is used for dispatching an action. ● subscribe(): It is used for listening to the changes in redux state. Connecting react with redux 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. Figure2 Flow of Redux state 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 databasedriven 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. A story can have many states for example A notification can be a: i) Small Text ii) Long Text iii) Text with a link Figure3 Notification with small text Figure4 Notification with long text 18 Figure5 Notification with text containing link 2.3.6 Task Tracker JIRA is Atlassian’s popular project- and issue-tracking platform used by development and technical support teams to get more work done and faster. It’s available on-demand through a monthly subscription (software-as-a-service), or it can be deployed on your own servers for an upfront license. 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 Key Benefits of JIRA Tool and Training 1. Better visibility One of the primary problems that slows any project down, not just in software development but also in other areas of life, is a lack of clear and open visibility as to what tasks need to be done and when. 2. Better prioritization 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 Figure6 How git works? Let me explain about the architecture: 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 Figure7 Basic architecture of git 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. 3.1.1 RAMP UP 1 - Basic UI Assignment Designed a UI template of the homepage of a website. Technologies used in this assignment were HTML, SCSS, Javascript. Gulp was used for compiling SCSS To CSS. Gulp is a tool used for automating the following tasks: preprocess CSS, minify code, run local server, optimize images. Figure8 View of the homepage 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. Figure9 Flexbox container styling options 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. Figure10 Tool for Pixel Perfect 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. Figure11 Example of designing Email Templates with <table> 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. Figure12 Rendering Graphs in Angular Assignment Figure13 Tabular display of data along with filters 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. Figure14 Various themes provided by Wordpress 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. Figure15 Login Screen 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. moment([2007, 0, 29]).fromNow(); 29 // 4 years ago Figure17 An example of fromNow() ● Company Image Avatar A reusable company image component that takes size and image as props. It renders a circular component of the desired size specification with the image provided as props. If the image is not provided it places a default image. This component can be used anywhere in the project to display company image with different specifications. 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. ● Share Button Component A small button component that displays all the social media options on hover for sharing any information on the various social accounts. For this component Extended fab button of material ui was used. 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. Figure18 Font files compatibility in different browser versions Figure19 Flexbox compatibility in different browser versions 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 [1] Redux, https://redux.js.org/basics/basic-tutorial [2] React, https://reactjs.org/docs [3] Angular, https://angular.io/ [4] Wordpress, https://wordpress.org [5] React-Redux, https://www.valentinog.com/blog/redux/ [6] Gulp, https://gulpjs.com/ [7] Storybook, https://storybook.js.org/ 36