Professional Documents
Culture Documents
Full Stack: Android App Development
Full Stack: Android App Development
An Internship Report on
PRAJWAL P (1JB17IS057)
CERTIFICATE
Certified that the Internship work entitled “Full Stack: Android App Development” carried out by
Mr. Prajwal P(1JB17IS057) is a bonafide student of SJB Institute of Technology in partial
fulfilment for the award of BACHELOR OF ENGINEERING in INFORMATION SCIENCE
AND ENGINEERING as prescribed by VISVESVARAYA TECHNOLOGICAL UNIVERSITY,
BELAGAVI during the academic year 2020-21. It is certified that all corrections/suggestions
indicated for Internal Assessment have been incorporated in the Report deposited in the Departmental
Library. The Internship report has been approved as it satisfies the academic requirements in respect
of Internship work prescribed for the said Degree.
EXTERNAL VIVA
Name of the Examiners Signature with Date
1........................................................ .........................................................
2........................................................ ..........................................................
ACKNOWLEDGEMENT
I am grateful to His Divine soul Padmabhushana Sri Sri Sri Dr. Balagangadharanatha
Maha Swamiji and to His Holiness Sri Sri Sri Jagadguru Dr. Nirmalanandanatha Maha
Swamiji, for providing me an opportunity to complete my academics in this esteemed college.
I would like to express my profound grateful to his holiness Revered Sri Sri Sri
Prakashnath Swamiji, Managing Director, SJBIT for providing an opportunity to complete my
academics and present this Internship.
I am grateful to Dr. Ajai Chandran C. K, for his kind co-operation and encouragement and
extremely grateful to Dr. Mohan H. S, Professor and Head of Department of Information Science
and Engineering, for his motivation and encouragement.
I express my deepest gratitude and sincere thanks to Mr. Ranjith J, Asst. Professor,
Department of Information Science and Engineering for her valuable guidance throughout my
Internship. I am highly indebted to Mrs. Poornima M, Asst. Professor, Internship Coordinator
who has been a source of inspiration to me and has extended his support throughout the Internship
duration. I also express honest thanks to my External Supervisor Mr. Vishnuvardhan Y for his
valuable guidance and inputs to carry out my Internship fruitfully.
I also thank all the staff members of Department of Information Science and Engineering for
their help during the course of this Internship. Last, but not the least, I thank my parents, family
members & friends, for their continuous support and encouragement throughout this Internship.
Prajwal P
(1JB17IS057)
Exposys Data Labs
Certificate of Internship
This is to certify that Mr. Prajwal P has completed internship programme on “Full
Stack Developer from 08.12.2020 to 08.01.2021.
He took keen interest in the work assigned and successfully completed it. During
the period of internship we found him to be punctual, hardworking and inquisitive.
Y Vishnuvardhan
hr@exposysdata.com
Chief Director www.exposysdata.com
ABSTRACT
Mobile apps have become a popular means to meet people through far distances.
Although several exist, one recent addition stands out amongst all others. “MeetUp” presents
users to meet people geographically nearby, whom they can either like or dislike based on their
given content. If two users like each one sport say cricket, they are allowed to initiate a
conversation via the chat feature.
In today’s society, we want to connect with people, we want to share things and we want
to live our lives through others or share our lives with others, we want more people to find
compatible matches to do their favorite sports because sports are much more fun together. This
app isn’t just for finding sports and activities in your own backyard, though it comes in handy
when traveling around the world as well to remain active and find like-minded individuals. It is
An App based on the common interests.
TABLE OF CONTENTS
3 Task Performed 16
4 Reflection Notes 25
Chapter 1
ABOUT THE COMPANY
1.1 History:
Exposys Data Labs is a Bangalore based start-up company that was aimed to solve real
world business problems like Automation, Big Data and data Science. The company set out a
team of experts in various technologies help businesses to identify issues, opportunities and
prototype solutions using trending technologies like AI, ML, Deep Learning and Data Science.
The intent was to follow a human-focussed and not technology driven approach to achieve
success in our clients’ endeavours.
Vision Statement
“Our discoveries are beyond belief and if you’re with us, you’ll discover a newer way to
think”.
Mission Statement
“Exposys Data Labs is not about only humans our mission is to build technology for all
beings on mother earth and our focus is to make sure all our technology is harmless to our
mother earth in all possible ways.”
1
Full Stack Development About the company
Exposys Data Labs Team: The team at Exposys Data Labs is a knowledge house
exploring various advanced techniques of Data Science at the disposal of inquisitive
individual. The team is a keen user of new technologies and Data architecture that will help
open unexplored gateways for organizations across various sectors and build stronger
ventures. Key people profiles are as below:
Vishnuvardhan Y: He is the founder of Exposys Data Labs, he found it in the year 2017
and is playing a major part in the success of the company. Along with being the founder of
the company he has taken upon many other influential roles in the company, he is also a
hiring business development executive and the marketing director. He has a keen interest and
knack in marketing strategies and new employees, which makes him the best fir for the roles
he has undertaken in the Exposys Data Labs. He is a passionate and a hardworking person,
focused on growth in the field of corporate management. He specializes in competitive
analysis, project management, business development. He finished his B. Tech in Jawaharlal
Nehru Technological Institute and his Masters in NIT Surathkal. Right after finishing his
masters, he started teaching in as an assistant professor in Yenepoya institute of technology
for nearly 4 months. Then he joined CNT infotech private limited where he spent nearly 3
years of his life working on sophisticated chat bots. He had the designation of a research and
developer in the institute. As a R&D, his main focus on the company was to develop
Chabot’s, third party API integration also hands-on experience with developing a deployed
Chabot, so this required a very thorough knowledge of AI and NLP framework. After getting
inspired by these works, he at the year 2017 started his own company, Exposys Data Labs
which now a pioneer in various ground breaking technologies and he plays a major part in the
success of the company.
Syed Basith Muzammil: Syed Basith Muzammil is the head research scientist in
Exposys Data Labs. Apart from being a passionate teacher he also has a role of research
scientist with over 11 years of experience as a research developer. Prior to working in
Exposys Data Labs, he has worked in many institutes as a part teacher and as a part research
scientist. His very first work was in CSIR National Aerospace laboratory as a research
scientist, in the two years that he worked on projects like Developing the fiber reinforced
polymer matrix composites, testing and investigating the mechanical properties of GFRP and
CFRP, Developing and testing the smart composites etc. Later on he took up a job as an
assistant professor in HKBK college. After working in HKBK college for nearly 3 years, he
moved on to Dire Dawa University to work as an assistant professor and a research scientist,
in the Dire Dawa University he even acted as an advisory to the Indian air force, public sector
MSME and also as a technical advisor to Ethio-Djibouti Railway. In the year 2019 he joined
Exposys Data Labs and immediately became a major asset to the company. His roles in the
company include Research and development, Technical consultation, Design of experiments,
Project execution and management, Experimentation, testing, and validation, Failure and
fracture studies, Characterization of materials, Design, develop and hybridization of
advanced materials. He is also responsible for delivering corporate trainings, college
workshops and weekend classroom trainings.
Manoj Reddy Govindhugari: Manoj Reddy Govindhugari, became a part of Exposys
Data Labs as a web developer at the start, he played a major part in building the Exposys data
labs website. Presently he is an acting team leader for the Python developers in Exposys Data
labs.
Ramana Suram: Ramana Suram is working as a Digital Marketing Specialist in Exposys
Data Labs. He has tonnes of experience in Software industry and is considered an asset to the
company. Prior to Exposys Data Labs, Mr. Ramana Suram has served Intel in various
positions. He finished his education in Presidency college, Bangalore with specialization in
Bachelor of Engineering and now he is a major asset to Exposys Data Labs.
1.3 Services
Their data scientists can work with C-level executives to develop customized analytic
solutions within an organization. Exposys team is mainly focused on,
Reducing the gap between industry required knowledge and college level knowledge
in students.
To solve real world business problems by using Automation, Big Data, Data Science,
Machine Learning and Artificial Intelligence.
Working on various technologies that help to identify business issues, opportunities
and prototype solutions using trending technologies like Artificial Intelligence,
Machine Learning, Deep Learning and Data Science.
Human focused approach rather than employing technology driven approach to
achieve success in their client endeavours.
Exposys Data Labs is focused on mainly four type of services
Consulting Service
Development Service
Training Service
Startup Solutions
Energy
Defence
Medical
E-Security
Artificial Intelligence
Machine Learning
AI powered catboats
Edutech Platform
BRICK energy
Humanoid
7
Full Stack Development About the department
As shown in Fig 2.1, Exposys Data Labs has practiced a life cycle of developing any
software or an application and that is followed as explained below: Software engineering task
bridging the gap between system requirements engineering and software design.
Provides software designer with a model of:
• System information
• Function
• Behaviour
Model can be translated to data, architectural, and component-level designs. Expect to do a
little bit of design during analysis and a little bit of analysis during design. The analysis phase
defines the requirements of the system, independent of how these requirements will be
accomplished. This phase defines the problem that the customer is trying to solve. The
deliverable result at the end of this phase is a requirement document. Ideally, this document
states in a clear and precise fashion what is to be built. This analysis represents the "what" phase.
The requirement document tries to capture the requirements from the customer's perspective by
defining goals and interactions at a level removed from the implementation details. The
requirement document may be expressed in a formal language based on mathematical logic.
Traditionally, the requirement document is written in English or another written language. The
requirement document does not specify the architectural or implementation details but specifies
information at the higher level of description. The problem statement, the customer's
expectations, and the criteria for success are
examples of high-level descriptions. There is a fuzzy line between high-level descriptions and
low-level details.
Sometimes, if an exact engineering detail needs to be specified, this detail will also
appear in the requirement document. This is the exception and should not be the rule. These
exceptions occur for many reasons including maintaining the consistency with other established
systems, availability of particular options, customer's demands, and to establish, at the
requirement level, a particular architecture vision. An example of a low-level detail that might
appear in the requirement document is the usage of a particular vendor's product line, or the
usage of some accepted computer industry standard, or a constraint on the image size of the
application. The requirement document states what the system should accomplish, independent
of many of the details.
The discovery process used in establishing the requirements during the analysis phase is
best described as a refinement process than as a levels-of-detail process. Traditionally, the
requirement document describes the things in the system and the actions that can be done on
these things. Things might be expressed as objects in an object-based technology where data and
algorithms are hidden behind hierarchical polymorphic methods. Alternatively, things might be
expressed as services accessing databases in a functional approach where data is a fundamentally
different concept than functions. In general, the description of things in the system can be much
more general and not confined to a particular technology.
In a more general sense, this document describes the ontology that is the noun phrases
and the verb phrases that will become the guidelines for defining the application specific
protocol. Later, in the design phase, these requirement descriptions are mapped into computer
science-based primitives, such as lists, stacks, trees, graphs, algorithms, and data structures. In
the design phase the architecture is established. This phase starts with the requirement document
delivered by the requirement phase and maps the requirements into architecture.
The architecture defines the components, their interface and behaviours. The deliverable
design document is the architecture. The design document describes a plan to implement the
requirements. This phase represents the “how" phase. Details on computer programming
languages and environments, machines, packages, application architecture, distributed
architecture layering, memory size, platform, algorithms, data structures, global type definitions
interfaces, and many other engineering details are established. The design may include the usage
of existing components.
The architectural team can now expand upon the information established in the
requirement document. Using the typical and a typical scenario provided from the requirement
document, performance trade-offs can be accomplished as well as complexity of implementation
trade-offs. Obviously, if an action is done, it needs to be done correctly and efficiently. A seldom
used action needs to be implemented correctly, but it is not obvious what level of performance is
required. The requirement document must guide this decision process.
An example of a seldom used action which must be done with high performance is the
emergency shutdown of a nuclear reactor. Analysing the trade-offs of necessary complexity
allows for many things to remain simple which, in turn, will eventually lead to a higher quality
product. The architecture team also converts the typical scenarios into a test plan.
In our approach, the team, given a complete requirement document, must also indicate
critical priorities for the implementation team. A critical implementation priority leads to a task
that has to be done right. If it fails, the product fails. If it succeeds, the product might succeed. At
the very least, the confidence level of the team producing a successful product will increase. This
will keep the implementation team focused. Exactly how this information is conveyed is a skill
based on experience more than a science based on fundamental foundations. In the
implementation phase, the team builds the components either from scratch or by composition.
Given the architecture document from the design phase and the requirement document from the
analysis phase, the team should build exactly what has been requested, though there is still room
for innovation and flexibility. For example, a component may be narrowly designed for this
particular system, or the component may be made more general to satisfy a reusability guideline.
The architecture document should give guidance. Sometimes, this guidance is found in the
requirement document. The implementation phase deals with issues of quality, performance,
baselines, libraries, and debugging. The end deliverable is the product itself.
Mobile application development is a term used to denote the act or process by which
application software is developed for handheld devices, such as personal digital assistants,
enterprise digital assistants or mobile phones. These applications can be preinstalled on phones
during manufacturing platforms or delivered as web applications using server-side or client-side
processing (e.g., JavaScript) to provide an "applicationlike" experience within a Web browser.
Application software developers also must consider a lengthy array of screen sizes, hardware
specifications and configurations because of intense competition in mobile software and changes
within each of the platforms. Mobile app development has been steadily growing, both in each
of terms of revenues and jobs created. A 2013 analyst report estimates there are 529,000 direct
App Economy jobs within the EU 28 members, 60% of which are mobile app developers.
As part of the development process, Mobile User Interface (UI) Design is also an
essential in the creation of mobile apps. Mobile UI considers constraints & contexts, screen,
input and mobility as outlines for design. The user is often the focus of interaction with their
device, and the interface entails components of both hardware and software. User input allows
for the users to manipulate a system, and device's output allows the system to indicate the
effects of the users' manipulation. Mobile UI design constraints include limited attention and
form factors, such as a mobile device's screen size for a user's hand(s). Mobile UI contexts
signal cues from user activity, such as location and scheduling that can be shown from user
interactions within a mobile application. Overall, mobile UI design's goal is primarily for an
understandable, user friendly interface. The UI of mobile apps should: consider users' limited
attention, minimize keystrokes, and be task-oriented with a minimum set of functions. This
functionality is supported by Mobile enterprise application platforms or integrated
development environments (IDES).
2.4 Platform
The platform organizations need to develop, deploy and manage mobile applications is
made from many components, and tools allow a developer to write, test and deploy
applications.
Back-end servers
Back-end tools pick up where the front-end tools leave off, and provide a set of reusable
services that are centrally managed and controlled and provide the following capabilities:
Integration with back-end systems
User authentication/authorization
Data services
Reusable business logic
System Software
Criteria for selecting a development platform usually contain the target mobile
platforms, existing infrastructure and development skills. When targeting more than one
platform with cross-platform development it is also important to consider the impact of the tool
on the user experience. Performance is another important criterion, as research on mobile
applications indicates a strong correlation between application performance and user
satisfaction. In addition to performance and other criteria, the availability of the technology
and the project's requirement may drive the development between native and cross-platform
environments. To aid the choice between native and cross-platform environments, some
guidelines and benchmarks have been published. Typically, cross-platform environments are
reusable across multiple platforms, leveraging a native container while using HTML, CSS, and
JavaScript for the user interface. In contrast, native environments are targeted at one platform
for each of those environments.
A more comprehensive list of tasks to which web development commonly refers, may
include web design, web content development, client liaison, client side/server-side scripting,
web server and network Security configuration, and ecommerce development. Among web
professionals, "web development" usually refers to the main non-design aspects of building
web sites: writing mark-up and coding. Most recently Web development has come to mean the
creation of content management systems or CMS. These CMS can be made from scratch,
proprietary (such as Open
Text) or open source (such as Drupal). In broad terms the CMS acts as middleware between
the database and the user through the browser. A principle benefit of a CMS is that it allows
non-technical people to make changes to their Web site without having technical knowledge.
For larger organizations and businesses, web development teams can consist of
hundreds of people (web developers) and follow standard methods like Agile methodologies
while developing websites. Smaller organizations may only require a single permanent or
contracting developer, or secondary assignment to related in positions such as a graphic
designer and/or information systems technician. Web development may be a collaborative
effort between departments rather than the domain of a designated department.
Since the commercialization of the web, web development has been a growing industry. The
growth of this industry is being pushed especially by businesses wishing to sell products and
services to online customers. For tools and platforms, the public can use many open-source
systems to aid in web development. A popular example, the LAMP (Linux, Apache, MySQL,
PHP) stack is available for download online free of charge. This has kept the cost of learning
web development to a minimum. Another contributing factor to the growth of the industry has
been the rise of easy-to-use web development software, most prominently Adobe
Dreamweaver, Web Development. Using such software, virtually anyone can relatively
quickly learn to develop a very basic web page. Knowledge of Hypertext Mark-up Language
(HTML) or of programming
languages are still required to use such software, but the basics can be learned and implemented
quickly with the help of help files, technical books, internet tutorials, or face-to-face training.
An ever-growing set of tools and technologies have helped developers build more
dynamic and interactive websites. Further, web developers now help to deliver applications as
web services which were traditionally only available as applications on a desk-based computer.
This has allowed for many opportunities to decentralize information and media distribution.
Examples can be seen with the rise of cloud services such as Dropbox, Adobe Creative Cloud
and Microsoft's Office 365.
Online auction-sites such as eBay have changed the way consumers find and purchase
goods and services. Online retailers such as Amazon.com and Buy.com (among many others)
have transformed the shopping and bargain-hunting experience for many consumers. Another
good example of transformative communication led by web development is the blog. Web
applications such as WordPress and Movable Type have created easily implemented blog-
environments for individual web sites. The popularity of open-source content management
systems such as Joomla, Drupal, XOOPS, and TYPO3 and enterprise content management
systems such as Alfresco and Exo Platform have extended development's impact at online
interaction and communication.
2.6 UI Design
User interface design (UI) or user interface engineering is the design of user interfaces
for machines and software, such as computers, home appliances, mobile devices, and other
electronic devices, with the focus on maximizing the user experience. The goal of user interface
design is to make the user's interaction as simple and efficient as possible; in terms of
accomplishing user goals (user-centred design). Good user interface design facilitates finishing
the task at hand without drawing unnecessary attention to it. Graphic design and typography
are utilized to support its usability, influencing how the user performs certain interactions and
improving the aesthetic appeal of the design; design aesthetics may enhance or detract from
the ability of users to use the functions of the interface.
The design process must balance technical functionality and visual elements (e.g.,
mental model) to create a system that is not only operational but also usable and adaptable to
changing user needs. Interface design is involved in a wide range of projects from computer
systems to cars, to commercial planes; all these projects involve much of the same basic human
interactions yet also require some unique skills and knowledge. As a result, designers tend to
specialize in certain types of projects and have skills centred on their expertise, whether that
be software design, user research, web design or industrial design.
TASKS PERFORMED
A database is a collection of related data. 1 By data, we mean known facts that can be recorded
and that have implicit meaning. For example, consider the names, telephone numbers, and
addresses of the people you know. You may have recorded this data in an indexed address
book, or you may have stored it on a hard drive, using a personal computer and software such
as Microsoft Access, or Excel. This is a collection of related data with an implicit meaning and
hence is a database.
A database management system (DBMS) is a collection of programs that enables users to create
and maintain a database. The DBMS is hence a general-purpose software system that facilitates
the processes of defining, constructing, manipulating, and sharing databases among various users
and applications. The main characteristics of the database approach versus the file-processing
approach are the following:
Controlling Redundancy
Providing Persistent Storage for Program Objects
Restricting Unauthorized Access
Providing Storage Structures for Efficient Query Processing
Providing Backup and Recovery
Providing Multiple User Interfaces
Representing Complex Relationships among Data
Enforcing Integrity constraints
Permitting Inferencing and Actions Using Rules
Additional Implications of Using the Database Approach.
In spite of the advantages of using a DBMS, there are a few situations in which such a
system may involve unnecessary overhead costs that would not be incurred in traditional file
processing. The overhead costs of using a DBMS are due to the following:
Additional problems may arise if the database designers and DBA do not properly design the
database or if the database systems applications are not implemented properly. Hence, it may be
more desirable to use regular files under the following circumstances:
• The database and applications are simple, well defined, and not expected to change.
• There are stringent real-time requirements for some programs that may not be met
because of DBMS overhead.
• Multiple-user access to data is not required
Android Studio is the official integrated development environment (IDE) for Google's
Android operating system, built on JetBrains' IntelliJ IDEA software and designed specifically
for Android development.[8] It is available for download on Windows, macOS and Linux based
operating systems or as a subscription-based service in 2020. It is a replacement for the Eclipse
Android Development Tools (E-ADT) as the primary IDE for native Android application
development.
• Lint tools to catch performance, usability, version compatibility and other problems
• A rich layout editor that allows users to drag-and-drop UI components, option to preview
layouts on multiple screen configurations
• Built-in support for Google Cloud Platform, enabling integration with Firebase Cloud
Messaging (Earlier 'Google Cloud Messaging') and Google App Engine
• Android Virtual Device (Emulator) to run and debug apps in the Android studio.
Android Studio supports all the same programming languages of IntelliJ (and CLion) e.g.,
Java, C++, and more with extensions, such as Go; and Android Studio 3.0 or later supports
Kotlin and "all Java 7 language features and a subset of Java 8 language features that vary by
platform version.” External projects backport some Java 9 features. While IntelliJ states that
Android Studio supports all released Java versions, and Java 12, it's not clear to what level
Android Studio supports Java versions up to Java 12 (the documentation mentions partial Java 8
support). At least some new language features up to Java 12 are usable in Android. Once an app
has been compiled with Android Studio, it can be published on the Google Play Store.
on different-different configuration devices like tablet, android phone etc. It helps you
to make your application development life cycle shorter and more efficient.
4. Intelligence code editor: Android Studio provides you with the intelligent and quick
code editor. This will help you and guide you with the accurate code. It helps you to
complete code in advance and analyse your code in advance before building. Android
studio has the special feature of the development of code by the drop-down list with
suggesting the code you can integrate.
5. Addition of new activity as a code template: Yes, Android also has the feature of
templates built-in. If you know to build that accordingly that makes your task easier. it
has both pros and cons; you don’t find every template in Android Studio. It’s an
additional feature which helps the developer to build an application efficiently and
effectively which provide effective solutions.
6. Help to build up app for all devices: Android studio builds applications for every screen
size, for wear and gear devices etc. It also can stimulate the various type of features
which a hardware has like GPS location tracker, multi-touch.
7. Help to connect with firebase: Android Studio helps to give real-time experience with
IOT based project development with dynamic upgrades in the application. Firebase
connectivity help to create direct updates and provide databases connectivity. To build
high-quality applications we must use Firebase connectivity it helps to build the
scalable infrastructure for building the application. You can create chat applications by
using firebase connectivity it helps you to do happy chat experience.
8. Support kotlin: Kotlin the official language can be considered for Android. It is a
language without having any new restrictions and has various advantages in it. The
great feature of Kotlin is it run without any disturbances in older android versions as
well that means no issues of specific android versions. It runs fast and equivalent to
Java. Java developers can easily hands-on Kotlin with no-issues because it based on
automated Java only.
9. Colour previews: Android studio helps to see the code XML part in a preview to know
that how perfectly we are designing the application according to the need before
launching the application. It provides powerful functionality and enhanced features of
drag and drops or resizes the application. It contains drag and drop features but not
support for every function, that’s why be careful while doing that.
10. Maven repository: In Android Studio, Maven integration of its repository can be done,
within SDK manager support libraries of IDE is used. It’s a kind of a repository which
is a directory in which various jar files like project jars, Plugin are stored.
3.3 Firebase:
Firebase evolved from Envolve, a prior start-up founded by James Tamplin and Andrew
Lee in 2011. Envolve provided developers an API that enables the integration of online chat
functionality into their websites. After releasing the chat service, Tamplin and Lee found that
it was being used to pass application data that were not chat messages. Developers were using
Envolve to sync application data such as game state in real time across their users. Tamplin
and Lee decided to separate the chat system and the real-time architecture that powered it. They
founded Firebase as a separate company in September 2011 and it launched to the public in
April 2012.
Firebase's first product was the Firebase Realtime Database, an API that synchronizes
application data across iOS, Android, and Web devices, and stores it on Firebase's cloud. The
product assists software developers in building real-time, collaborative applications. In May
2012, a month after the beta launch, Firebase raised $1.1 million in seed funding from venture
capitalists Flybridge Capital Partners, Greylock Partners, Founder Collective, and New
Enterprise Associates. In June 2013, the company further raised $5.6 million in Series A
funding from Union Square Ventures and Flybridge Capital Partners.
In 2014, Firebase launched two products. Firebase Hosting and Firebase
Authentication. This positioned the company as a mobile backend as a service. In October
2014, Firebase was acquired by Google. A year later, in October 2015, Google acquired
Divshot, an HTML5 web-hosting platform, to merge it with the Firebase team.
In May 2016, at Google I/O, the company's annual developer conference, Firebase
introduced Firebase Analytics and announced that it was expanding its services to become a
unified backend-as-a-service (BaaS) platform for mobile developers. Firebase now integrates
with various other Google services, including Google Cloud Platform, AdMob, and Google
Ads to offer broader products and scale for developers. Google Cloud Messaging, the Google
service to send push notifications to Android devices, was superseded by a Firebase product,
Firebase Cloud Messaging, which added the functionality to deliver push notifications to both
iOS and web devices. In January 2017, Google acquired Fabric and Crashlytics from Twitter
to add those services to Firebase. In October 2017, Firebase has launched Cloud Firestore, a
real-time document database as the successor product to the original Firebase Real-time
Database.
3.4 Design:
The appearance of the app is designed very carefully and creatively. Undeniably, the ‘look
and feel’ do the hard-hitting piece of work and keep the users engaged with the app while
enticing them to return to the app again. While designing, the essential focus was on
sentimental usage aspects, such as:
App logo: The users see the app icon before they can experience how beautiful your
app is. Thus, it is as pivotal as the UI. Icons duly influence the users’ decision of
whether or not download the app. Hence, make sure that your logo communicates your
brand identity efficiently.
App color and theme: This has to be chosen wisely. Because, color psychology works
indeed. Monochrome colors remain in always. That’s why Facebook, Twitter,
LinkedIn, Skype, WhatsApp and more app giants exude blue and green hues.
Easy navigation: Navigation must be handled deftly both at front and back end. Distribute
the features and buttons on app screen such that everything comes handy to users. One
should understand whether customers would want a single window navigation, stacked
navigation bar, search driven or gesture-based navigation. Extra care should be taken of
those most frequently used features. The user friendliness is a trump card that can make
the app a hit or a miss.
When a decently working version of the app is ready, testing is started. Alpha testing, beta
testing, and so on. It is very crucial to run all the possible test case scenarios to ensure that the
app can work flawlessly in all-weather robust conditions.
3.5 Development:
Before everything else, we need the industry research observations and app architecture on
paper. Here is the plan I followed
Enlist the requirements. What do I want the app to do?
Observe industry standard, best practices, and current trends.
Lay down the app architecture that describes how the app components would interact,
layers in the app, data caching, data flow and accessibility, development environment,
supported devices, resolution, and hardware connectivity.
Visualizing worst-case scenarios that might need to operate in such an intermittent
network.
Envisage the future of the app in the marketplace
Then, design and examine a prototype before beginning with development.
Database Framework or cloud media storages would build the foundation to raise the app
on.
Decide upon the application server.
Decide the Rest API to communicate data to and from the app.
REFLECTION NOTES
4.1 Experience:
As a part of academics under VTU, B.E, 7th semester students need to do their internship
program for a duration of 4 weeks in a company or an organization to get exposure to concepts in
real time applications. Recently I got to know about Exposys Data Labs in association with
SJBIT providing Internship program on Full Stack Development.
The chief coordinator and the trainers in Exposys Data Labs introduced us to the new
concept of Full Stack Web Development on Day 1. As a part of this training program, I was
introduced to the advanced concepts used for Web Development and various methods to design
web pages. After the introduction of concepts, we were given assessments to solve. Each student
was made to work on different projects that are related to Web Development. The trainers were
very supportive when we faced problems. Hands on training on each module helped us
understand the concepts even better. The prior knowledge of programming helped me to
understand Web Development better.
We first worked on few HTML, CSS, Bootstrap and learnt their features and uses.
Different methods of integrating different parts of the website were taught by the trainers. While
working hands on, I enjoyed the casual debates and discussions with the trainers and fellow
interns which brought more joy to learning.
After completing the training, I along with my partner undertook a mini project on Web
Development with the guidance of our lecturer and I am happy to say that we were successful in
completing it.
Throughout the training we had ample time to finish the syllabus, hence we had the
opportunity to ask and clear each doubt, and we were given time to understand each concept. All
25
Full Stack Development Reflection Notes
the students were personally attended without any exceptions; they were highly resourceful
giving useful materials of relevant topics.
This internship was a new experience along my journey to achieve technical knowledge
and contribute in a significant way to the development of the society. It helped me broaden my
thinking in all horizons of Engineering. It was definitely beneficial for me and I take this
opportunity to be grateful and thankful to all the people who have helped me along this amazing
journey.
4.2 ASSESSMENT
The assessment of an internship is very important for any internship program. Assessment is
nothing but weighing the pros and cons of the experience. I would like to assess my internship as
follows:
Guides were helpful, approachable, provided feedback on my progress and
skills.
Level of responsibilities was consistent with my abilities.
Fellow workers accepted my work and treated me appropriately.
This internship provided me the opportunity to use my academic preparation.
This provided me the opportunity to develop my interpersonal and technical
skills.
This was a valuable learning experience, and I grew as a professional.
It helped me define my career goals and next step in my career.
This provides a way to identify areas for personal and professional growth.
I had the opportunity to use the resources that are not available on campus.
My time at Exposys Data labs resulted in one of the best learning I ever underwent.
Not only was I able to work in a top-notch technology but I also got a chance to
interact with a lot of great minds. With this internship, I was able to get practical
exposure of real time projects and how each project is handled and developed from
scratch. Additionally, I was able to understand the importance of working in a team
and gained leadership skills. I also got an opportunity of working with Android
studio, and this internship also helped me in improving my programming skills.
Overall, my internship at Exposys Data Labs was a great success. I was able to get
practical exposure of real time projects as well as work in a fantastic environment and
make connections that will last a lifetime. I could not be more thankful.
28