RAJEEV GANDHI MEMORIAL COLLEGE OF ENGINEERING & TECHNOLOGY Autonomous Affiliated to JNTUA – Anantapuramu, Approved by AICTE – New Delhi, Accredited by NBA and NAAC with ‘A+’ Grade – New Delhi Nandyal – 518501, Kurnool (Dt), A.P DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING A Technical Report on FULLSTACK DEVELOPMENT ESTD: 1995 Submitted by “A.RAJENDRA KUMAR(18091A04F1)” CERTIFICATE This is to certify that A.RAJENDRA KUMAR (18091A04F1), of B.TECH, E.C.E have carried out the Technical seminar report on “FULLSTACK DEVELOPMENT” under the esteemed guidance of Department for the fulfillment of the award of the BACHELOR OF TECHNOLOGY in Electronics and Communication Engineering in R.G.M.C.E.T, Nandyal (Affiliated to J.N.T.U.A, Anantapuramu) is a bonafied record of the work done by me during the year 2018-2022. Dr.K.Mallikarjuna HOD of E.C.E CANDITATE’S DECLERATION I hereby declare that the report titled “FULL STACK DEVELOPMENT” submitted towards completion of Technical Report in IV Year 2nd Semester of B.Tech (ECE) at the Rajeev Gandhi Memorial College of Engineering & Technology, Nandyal. Is an authentic record of my original report and is prepared by me. I have not submitted the matter embodied in this report for the award of any other degree in any other institutions. By A.RAJENDRA KUMAR Regd.No.18091A04F1 Place: Nandyal Date: Abstract Full stack web development means that we focus on all parts of the application: the frontend, the backend, and the database. Sometimes the software on the server and its operating system are seen as parts of the stack, but we won't go into those. We will code the backend with JavaScript, using the Node.js runtime environment. Using the same programming language on multiple layers of the stack gives full stack web development a whole new dimension. However, it's not a requirement of full stack web development to use the same programming language (JavaScript) for all layers of the stack. It used to be more common for developers to specialize in one layer of the stack, for example the backend. Technologies on the backend and the frontend were quite different. With the Full stack trend, it has become common for developers to be proficient on all layers of the application and the database. Oftentimes, full stack developers must also have enough configuration and administration skills to operate their application, for example, in the cloud practically all web applications have (at least) two "layers": the browser, being closer to the end-user, is the top layer, and the server the bottom one. There is often also a database layer below the server. We can therefore think of the architecture of a web application Communicating on the web requires knowledge of the HTTP protocol. One must also handle databases and server administration and configuration. It would also be good to know enough CSS to make applications at least somewhat presentable. CONTENTS: • Introduction • Modern Frontend Frameworks • Virtual Machines • HTML • CSS • JavaScript • Websites and webservers • Frontend Libraries • AngularJs • React Js • Bootstrap • jQuery • SASS • Backend • Php • C++, Java, Python • JavaScript • Nodejs • Backend Frameworks • Database • Oracle, Mongo dB • Features of Mongo dB • Ajax • Advantages and Disadvantages • Conclusion • References FULLSTACK DEVELOPMENT Introduction The industry definition of a Full Stack Developer is an engineer who can work on different levels of an application stack. The term stack refers to the combination of components and tools that make up the application. The components could be in the front-end or the back-end of the system. The main objective of full stack engineer is to keep every part of the system running smoothly. A Full Stack Developer can performs tasks ranging from resizing an image or text in a webpage to patching the kernel. WHAT IS FULL STACK? Modern applications are developed to be installed on mobile devices or hosted on the web. This is a result of trends in faster internet speeds, greater web access and penetration, and the development of more powerful mobile devices. This has created the need to rethink application development. Instead of an isolated desktop or mobile application, modern applications have a distributed back-end infrastructure interactively serving a variety of front-end clients over the web. HOW IT IS DONE? • Back-End – Operating System (OS) Firewall Web server Database (SQL or NoSQL) Caches Message queuing software Application • Front-End – HTML CSS JavaScript Dart Dept.of.ECE 1 FULLSTACK DEVELOPMENT MODERN FRONT-END FRAME WORKS We have seen the big shift in the web from HTML 4 to HTML5 which has built-in APIs to help you accomplish many tasks to built a richer web application. This has resulted in a variety of front-end MVC frameworks such as: • Polymer • AngularJS • React. VIRTUAL MACHINES: Virtual Machines Definition In computing, a virtual machine (VM) is an emulation of a particular computer system. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer, and their implementations may involve specialized hardware, software, or a combination of both. SOFTWARE: •VirtualBox •VMware •Linux COMMAND LINE INTERFACE: Command Line Interface Command Line Interface or CLI is the fastest way of communicating with a computer. Dept.of.ECE 2 FULLSTACK DEVELOPMENT Figure: IMAGE OF FULL STACK DEVELOPMENT Technology related to full stack development: Front end: 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 Languages: The front-end portion is built by using some languages which are discussed below: • HTML ➢ HTML stands for Hyper Text Markup Language. It is used to design the front-end portion of web pages using markup language. ➢ HTML is the combination of Hypertext and Markup language. Hypertext defines the link between the web pages. ➢ The markup language is used to define the text documentation within tag which defines the structure of web pages. Dept.of.ECE 3 FULLSTACK DEVELOPMENT <!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html> • CSS ➢ Cascading Style Sheets, fondly referred to as CSS, is a simply designed language intended to simplify the process of making web pages presentable. ➢ CSS allows you to apply styles to web pages. More importantly, CSS enables you to do this independent of the HTML that makes up each web page. <!DOCTYPE html> <html> <head> <title></title> <style></style> </head> <body> </body> </html> Dept.of.ECE 4 FULLSTACK DEVELOPMENT JavaScript ➢ JavaScript is a famous scripting language used to create the magic on the sites to make the site interactive for the user. ➢ It is used to enhancing the functionality of a website to running cool games and web-based software. <!DOCTYPE html> <html> <head> <title> Simple webpage </title> <style> body { text-align: centre; } Dept.of.ECE 5 FULLSTACK DEVELOPMENT h1 { colour: green; } </style> </head> <body> <h1>Welcome to RGM</h1> <p>ECE</p> </body> </html> <!DOCTYPE html> <html lang="en"> <head> <title> Basic Example to Describe JavaScript </title> </head> <body> <script> console.log("Welcome to RGM"); </script> </body> </html> • Websites: JavaScript helps us to add behavior of our website. It helps users to interact with the website. For clicking on buttons, saving details, uploading details on the website, etc. • Web Servers: We can make robust server applications using JavaScript. To be precise we use JavaScript frameworks like Node.js and Express.js to build these servers. • Game Development: In Game Development industry, JavaScript is used widely. With the addition of HTML5 Canvas, it’s now possible to make 2D and 3D games in JavaScript very efficiently. 3D Drawings: JavaScript in addition with HTML Canvas is used to make threedimensional graphics. • Dept.of.ECE 6 FULLSTACK DEVELOPMENT Front End Frameworks and Libraries: • ANGULARJS ➢ AngularJs is a JavaScript open-source front-end framework that is mainly used to develop single page web applications (SPAs). ➢ It is a continuously growing and expanding framework which provides better ways for developing web applications. ➢ It changes the static HTML to dynamic HTML. ➢ It is an open-source project which can be freely used and changed by anyone. ➢ It extends HTML attributes with Directives, and data is bound with HTML. • REACT JS ➢ React is a declarative, efficient, and flexible JavaScript library for building user interfaces. ➢ ReactJS is an open-source, component-based front end library responsible only for the view layer of the application. ➢ It is maintained by Facebook. import React,{ Component } from 'react'; class App extends Component { render() { return ( <div> <h1>Hello, Learner.Welcome to RGM.</h1> </div> ); } } export default App; • BOOTSTRAP ➢ Bootstrap is a free and open-source tool collection for creating responsive websites and web applications. ➢ It is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile-first web sites. <!DOCTYPE html> <html lang="en"> Dept.of.ECE 7 FULLSTACK DEVELOPMENT <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content= "width=device-width, initial-scale=1"> <link rel="stylesheet" href= "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css " integrity= "sha384ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity= "sha384q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"> </script> <script src= "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.j s" integrity= "sha384UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"> </script> <!-- Latest compiled JavaScript library --> <script src= "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js " integrity= "sha384JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"> </script> </head> <body> <div class="container text-center"> </body> Dept.of.ECE 8 FULLSTACK DEVELOPMENT • JQUERY ➢ jQuery is an open-source JavaScript library that simplifies the interactions between an HTML/CSS document, or more precisely the Document Object Model (DOM), and JavaScript. ➢ Elaborating the terms, jQuery simplifies HTML document traversing and manipulation, browser event handling, DOM animations, Ajax interactions, and cross-browser JavaScript development. <!DOCTYPE html> <html> <head> <script src= "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js "> </script> <script> $(document).ready(function() { $("h1").hover(function() { $(this).css("color", "green"); }, function() { $(this).css("color", "aliceblue"); }); }); </script> </head> • SASS: ➢ It is the most reliable, mature and robust CSS extension language. ➢ It is used to extend the functionality of an existing CSS of a site including everything from variables, inheritance, and nesting with ease. ➢ Some other libraries and frameworks are: Semantic-UI, Foundation, Materialize, Backbone.js, Express.js, Ember.js etc. Dept.of.ECE 9 FULLSTACK DEVELOPMENT • • • • • • Work with text editors to use shortcuts and its facilities i.e. Visual studio, Atom, Sublime etc. Make UI responsible using grid system. Git and git commands like init, add, commit etc for version control and to work with team. Other tools like npm & yarn package managers, sass css pre-processor, browser DevTools i.e. chrome devtools. Understand using HTTP, JSON, GraphQL APIs to fetch data using axios or other tools. It also requires some design skill to make layout and look better. Other Important Points: • • Work with text editors to use shortcuts and its facilities i.e. Visual studio, Atom, Sublime etc. Make UI responsible using grid system. Git and git commands like init, add, commit etc for version control and to work with team. Other tools like npm & yarn package managers, sass css pre-processor, browser DevTools i.e. chrome devtools. Understand using HTTP, JSON, GraphQL APIs to fetch data using axios or other tools. It also requires some design skill to make layout and look better Dept.of.ECE 10 • • • • FULLSTACK DEVELOPMENT Back end: ➢ It refers to the server-side development of web application or website with a primary focus on how the website works. ➢ It is responsible for managing the database through queries and APIs by client- side commands. ➢ This type of website mainly consists of three parts front end, back end, and database. ➢ The back-end portion is built by using some libraries, frameworks, and languages which are discussed below: PHP: ➢ PHP is a server-side scripting language designed specifically for web development. ➢ Since, PHP code executed on server side so it is called server-side scripting language. <?php /* echo is a print command */ echo "Hello world!"; ?> C++: ➢ It is a general-purpose programming language and widely used now a days for competitive programming. ➢ It is also used as backend language. Java: ➢ Java is one of the most popular and widely used programming language and platform. ➢ It is highly scalable. ➢ Java components are easily available. public class GFG { public static void main(String args[]) { System.out.println("Hello World"); } } Dept.of.ECE 11 FULLSTACK DEVELOPMENT Python: ➢ Python is a programming language that lets you work quickly and integrate systems more efficiently. JavaScript: ➢ JavaScript can be used as both (front end and back end) programming languages. ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ ➢ var events = require('events'); var eventEmitter = new events.EventEmitter(); // Create an event handler: var myEventHandler = function () { console.log('Welcome to GeeksforGeeks'); } // Assign the event handler to an event: eventEmitter.on('geeks', myEventHandler); // Fire the 'geeks' event: eventEmitter.emit('geeks'); Node.js: ➢ Node.js is an open source and cross-platform runtime environment for executing JavaScript code outside of a browser. ➢ You need to remember that NodeJS is not a framework and it’s not a programming language. ➢ Most of the people are confused and understand it’s a framework or a programming language. ➢ We often use Node.js for building back-end services like APIs like Web App or Mobile App. ➢ It’s used in production by large companies such as PayPal, Uber, Netflix, Walmart and so on. Dept.of.ECE 12 FULLSTACK DEVELOPMENT <!DOCTYPE html> <html lang="en"> <head> <title> Basic Example to Describe JavaScript </title> </head> <body> <script> console.log ("Welcome to GeeksforGeeks"); </script> </body> </html> ➢ Structuring the data in efficient way. ➢ Handle request-response of APIs for storing and retrieve data. ➢ Security of data is important. ➢ JavaScript is essential for all stacks as it is dominant technology on Web. Dept.of.ECE 13 FULLSTACK DEVELOPMENT Back End Frameworks: ➢ The list of back-end frameworks are: Express, Django, Rails, Laravel, Spring etc. ➢ The other back-end program/scripting languages are: C#, Ruby, REST, GO etc. Database: ➢ Database is the collection of inter-related data which helps in efficient retrieval, insertion and deletion of data from database and organizes the data in the form of tables, views, schemas, reports etc. Oracle: ➢ Oracle database is the collection of data which is treated as a unit. ➢ The purpose of this database is to store and retrieve information related to the query. ➢ It is a database server and used to manages information. MongoDB: ➢ MongoDB, the most popular NoSQL database, is an open source document-oriented database. ➢ The term ‘NoSQL’ means ‘non-relational’. It means that MongoDB isn’t based on the table-like relational database structure but provides an altogether different mechanism for storage and retrieval of data. ➢ A simple MongoDB document Structure: { title: 'rajendra', by: 'Harshit Gupta', url: 'https://www.rgm.org', type: 'NoSQL' } • Features of MongoDB: Document Oriented: ➢ MongoDB stores the main subject in the minimal number of documents and not by breaking it up into multiple relational structures like RDBMS. ➢ For example, it stores all the information of a computer in a single document called Computer and not in distinct relational structures like CPU, RAM, Hard disk, etc. Dept.of.ECE 14 FULLSTACK DEVELOPMENT Indexing: o Without indexing, a database would have to scan every document of a collection to select those that match the query which would be inefficient. o So, for efficient searching Indexing is a must and MongoDB uses it to process huge volumes of data in very less time. Scalability: o MongoDB scales horizontally using sharding (partitioning data across various servers). o Data is partitioned into data chunks using the shard key, and these data chunks are evenly distributed across shards that reside across many physical servers. o Also, new machines can be added to a running database. SQL databases store data in tabular format. This data is stored in a predefined data model which is not very much flexible for today’s real-world highly growing applications. Modern applications are more networked, social and interactive than ever. Applications are storing more and more data and are accessing it at higher rates. Relational Database Management System(RDBMS) is not the correct choice when it comes to handling big data by the virtue of their design since they are not horizontally scalable. If the database runs on a single server, then it will reach a scaling limit. NoSQL databases are more scalable and provide superior performance. MongoDB is such a NoSQL database that scales by adding more and more servers and increases productivity with its flexible document model. SQL: ➢ Structured Query Language is a standard Database language which is used to create, maintain and retrieve the relational database. ➢ Structured Query Language or SQL is a standard Database language which is used to create, maintain and retrieve the data from relational databases like MySQL, Oracle, SQL Server, PostGre, etc. The recent ISO standard version of SQL is SQL:2019. Popular Stacks: • Dept.of.ECE MEAN Stack: MongoDB, Express, AngularJS and Node.js. 15 FULLSTACK DEVELOPMENT • MERN Stack: MongoDB, Express, ReactJS and Node.js • Django Stack: Django, python and MySQL as Database. • Rails or Ruby on Rails: Uses Ruby, PHP and MySQL. • LAMP Stack: Linux, Apache, MySQL and PHP. Dept.of.ECE 16 FULLSTACK DEVELOPMENT AJAX: ➢ The Notes page of the application follows an early-nineties style of web development and "uses Ajax". As such, it's on the crest of the wave of early 2000's web technology. ➢ AJAX (Asynchronous JavaScript and XML) is a term introduced in February 2005 on the back of advancements in browser technology to describe a new revolutionary approach that enabled the fetching of content to web pages using JavaScript included within the HTML, without the need to render the page. ➢ Prior to the AJAX era, all web pages worked like the traditional web application we saw earlier in this chapter. ➢ All of the data shown on the page was fetched with the HTML-code generated by the server. ➢ The Notes page uses AJAX to fetch the notes data. Submitting the form still uses the traditional mechanism of submitting web-forms. ➢ The application URLs reflect the old, carefree times. ➢ JSON data is fetched from the url https://studies.cs.helsinki.fi/exampleapp/data.json and new notes are sent to the URL https://studies.cs.helsinki.fi/exampleapp/new_note . Nowadays URLs like these would not be considered acceptable, as they don't follow the generally acknowledged conventions of RESTful APIs. ➢ The thing termed AJAX is now so commonplace that it's taken for granted. The term has faded into oblivion, and the new generation has not even heard of it. Dept.of.ECE 17 FULLSTACK DEVELOPMENT • • • • The browser fetches the HTML code defining the content and the structure of the page from the server using an HTTP GET request. Links in the HTML code cause the browser to also fetch the CSS style sheet main.css... ...and a JavaScript code file main. When the data has been fetched, the browser executes an event handler, which renders the notes to the page using the DOM-API. Dept.of.ECE 18 FULLSTACK DEVELOPMENT Advantages: • • • • • • • • • • • • You can master all the techniques involved in a development project You can make a prototype very rapidly You can provide help to all the team members You can reduce the cost of the project You can reduce the time used for team communication You can switch between front and back end development based on requirements You can better understand all aspects of new and upcoming technologies The experience of the developer helps in the application development in different ways since he/she has worked in different projects either as a front-end or back-end developer. They can get a full picture of the application development and design. This helps in the proper management of the project. Since they are up-to-date with all technologies, they can make the application or website user-friendly. The developers know all levels of the project, which helps in communicating with the client properly about the product. Also, they can do the presentations or do the documentations way better than others. Troubleshooting of the application can be done easily by a Full Stack developer. • Disadvantages: • • • • • • • Dept.of.ECE The solution chosen can be wrong for the project The solution chosen can be dependent on developer skills The solution can generate a key person risk Being a full stack developer is increasingly complex A developer can’t learn anything deeply since he/she has to learn everything related to the application. The working process can be really slow as the developer has to check himself while handling different languages. The developers are difficult to replace; vacation or delegation of work is a long-cherished dream. 19 FULLSTACK DEVELOPMENT Conclusion: ➢ In conclusion, being a full stack developer comes with a high skill ceiling. They are supposed to be adept at handling everything in the domain of web development. ➢ There are a lot of skills that are crucial for a career in a fullstack. ➢ However, once you have the necessary skills, you can apply it to become basically anyone you want. ➢ Thus, there are a lot of career opportunities in a full-stack. ➢ You can use part of your knowledge to serve as either front or backend developer, or you can obviously, by making use of the entire spectrum of your knowledge, can become a full stack developer References: ➢ www.geeksforgeeks.com ➢ www.freecodecamp.com ➢ www.edureka.com ➢ www.simplelearn.com Dept.of.ECE 20