You are on page 1of 116

LOST NEEDS

A Project Report

The requirement for the award of the Degree of

BACHELOR OF SCIENCE (INFORMATION TECHNOLOGY)

By

Rajbhar Sudesh Dinesh


(6417)

Under the esteemed guidance of


Mrs. Aditi Prajapati

DEPARTMENT OF INFORMATION TECHNOLOGY


RAMNIRANJAN JHUNJHUNWALA COLLEGE (AUTONOMOUS)

(Affiliated to University of Mumbai)

MUMBAI-MAHARASHTRA-400086

Ramniranjan Jhunjhunwala College Page 2


RAMNIRANJAN JHUNJHUNWALA COLLEGE (AUTONOMOUS)
(Affiliated to University of Mumbai)

MUMBAI-MAHARASHTRA-400086

DEPARTMENT OF INFORMATION TECHNOLOGY

CERTIFICATE

This is to certify that the project entitled, “Lost Needs” is bonafide work of Rajbhar
Sudesh Dinesh bearing 6417 submitted in partial fulfillment of the requirements for the
award of the degree of BACHELOR OF SCIENCE in INFORMATION
TECHNOLOGY from University of Mumbai.

Internal Guide Coordinator

External Examiner

Ramniranjan Jhunjhunwala College Page 3


Date: College

Ramniranjan Jhunjhunwala College Page 4


ABSTRACT

The phenomenon of forgetting personal belongings and subsequently searching for them
is a common occurrence in the lives of many individuals. With busy lifestyles, constant
distractions, and the fast-paced nature of modern society, it is easy for people to overlook or
misplace their possessions. The search for these lost possessions often becomes an urgent quest to
retrace steps, recall last-known locations, and seek help from others in the hope of reuniting with
these valuable or sentimental belongings. The experience of losing something and the subsequent
search not only highlights the imperfections of human memory but also serves as a reminder of
the importance of staying mindful and organized amidst the challenges of modern living.

The "Lost Needs" project aims to develop a comprehensive and user-friendly website that
serves as a centralized platform for searching and posting Lost Needs items. The website's main
objective is to bridge the gap between individuals who have lost valuable belongings and those
who have found them, fostering a sense of community assistance and reuniting people with their
lost possessions. The platform will incorporate advanced search algorithms and intuitive user
interfaces to optimize the browsing experience for both seekers and finders, enabling efficient
matching of lost items with their rightful owners. By leveraging the power of technology, Lost
Needs strives to become a crucial tool in reuniting people with their cherished belongings while
promoting goodwill and empathy among users.

Ramniranjan Jhunjhunwala College Page 5


ACKNOWLEDGEMENT
The success and outcome of this project were possible by the guidance and support from
many people. I am incredibly privileged to have got this all along with the achievement of my
project. It required a lot of effort from each individual involved in this project with me and I
would like to thank them.

I appreciate and thank HOD Mrs. Archana Bhide, for granting me an opportunity to do
the project activity and providing us with all support and leadership, which made me finish the
project duly. I would like to give a very special honor and respect to our teacher, Prof. Aditi
Prajapati who took keen interest in checking the minute details of the project work and guided
us throughout the same.

Then I would like to thank my parents and friends who have helped me with their
valuable suggestions and guidance and have been helpful in various phases of the completion of
the project.

Rajbhar Sudesh

Ramniranjan Jhunjhunwala College Page 6


DECLARATION

I hereby declare that the project entitled, “LOST NEEDS” has not been in any case
duplicated or submitted to any other university for the award of any degree. To the best of my
knowledge other than me, no one has submitted to any other university.

The project is done in partial fulfillment of the requirements for the award of the degree
of BACHELOR OF SCIENCE (INFORMATION TECHNOLOGY)
to be submitted as the final semester project as part of our curriculum.

Rajbhar Sudesh Dinesh

Ramniranjan Jhunjhunwala College Page 7


TABLE OF CONTENTS
Sr Sub Topic Page
No No No
1 Project Introduction 8
1.1 Background 8
1.2 Objective 9

1.3 Purpose and scope 10

1.4 Achievement 15
1.5 Organizational Report 16

2 Survey of technology 17
2.1 Technology in Use 17

3 Requirement and Analysis 21

3.1 Problem Definition 22


3.2 Functional Requirement 23
3.3 Non-Functional Requirement 25

3.4 Planning 26

3.5 Scheduling 27
3.6 Gantt Chart 27
3.7 Software and hardware Requirement 28

3.8 Preliminary Product Description 28

3.9 Conceptual Models 32

4 System design 52

4.1 Basic Modules 53

4.2 Database Design 53

4.3 Logic Design 54

4.4 Security Issues 57

Ramniranjan Jhunjhunwala College Page 8


4.5 Test cases Design 58
5 Implementation Approaches 62
5.1 Coding Details and Code Efficiency 90

5.1.1 Code Efficiency 91

5.1.2 Testing Approach 92

5.1.3 Unit Testing 93

5.1.4 Integrated Testing 98

5.1.5 Modifications and Improvements 100

5.1.6 Test Cases 101

6 Results and discussion 108

6.1 Test Reports 108

6.2 Documentation 110

7 Conclusion 113

8 Reference 114

Ramniranjan Jhunjhunwala College Page 9


Chapter 1 Introduction

1.1] Background
The Lost Needs website will offer an inclusive and straightforward approach to facilitate the
search process for lost items. Users will be able to create detailed listings of their lost possessions,
including descriptions, locations, and timestamps. The platform will employ search functionalities to
enable swift and accurate matching of lost items with those found by other users. Additionally, the
website will encourage community engagement through user accounts and forums, enabling
individuals to share information, offer support, and increase the chances of successful reunions. By
providing a reliable and accessible online space for Lost Needs items, Lost Needs seeks to not only
alleviate the distress caused by losing valuable possessions but also instill a sense of unity and
helpfulness among users, creating a virtuous circle of assistance and gratitude.

In our fast-paced and interconnected world, it's not uncommon for valuable belongings to get
lost or misplaced. Whether it's a cherished family heirloom, a beloved pet, an essential document, or
a piece of technology, losing something significant can be distressing and frustrating. In response to
this common issue, a group of innovative minds came together to create the "Lost Needs Website," a
digital platform designed to connect people with their lost possessions.

Ramniranjan Jhunjhunwala College Page 10


1.2] Objective
Aims and Objectives of this project are listed below:

❖ Reuniting Owners with Lost Items

❖ Enhancing Efficiency, making it easier for users to report and search for items in real-time.

❖ Expanding Reach and Visibility

❖ Encouraging Community Engagement:

❖ Easy to use application.

❖ Promoting Goodwill and Trust

❖ Read and Write customer generated reviews.

❖ Providing Valuable Information.

❖ Collaborating with Local Authorities.

❖ Educating the Public.

❖ Regular updates and enhancements ensure that the platform remains relevant, efficient, and
user-friendly.

Ramniranjan Jhunjhunwala College Page 11


Ramniranjan Jhunjhunwala College Page 12
1.3] Purpose and
scope
1.3.1] Purpose

The purpose of a Lost Needs app is to help people locate and recover lost items and belongings more
efficiently. It serves as a digital platform where users can report lost items, search for items they
have lost, and connect with others who may have found their lost possessions. Here are some key
purposes and benefits of a Lost Needs app:

● Centralized Reporting: The app provides a centralized platform for users to report their lost items,
making it easier for them to provide relevant details and descriptions.
● Efficient Search: People can search for their lost belongings using keywords, categories, or
location filters, which increases the chances of finding their items quickly.
● Matching Lost Needs Items: The app can automatically match found items with reports of lost
items based on descriptions and other details, facilitating the reunification process.
● Notifications and Alerts: The app can send notifications and alerts to users when a matching item
is reported, helping them stay updated on potential leads.
● User Privacy: A well-designed Lost Needs app can prioritize user privacy and ensure that
personal information is protected during the process.
● Community Support: By creating a community of users, the app encourages people to help each
other find their lost belongings, fostering a sense of solidarity and helpfulness.
● Reduced Physical Paperwork: By providing a digital platform, the app reduces the reliance on
physical Lost Needs offices, making the process more efficient and environmentally friendly.
● Timestamped Records: The app can record the date and time of the lost item's report, making it
easier to establish timelines and track the item's whereabouts.
● User-Friendly Interface: A user-friendly app makes it accessible to people of all ages and
technological backgrounds.

Prevention of Item Disposal: Often, lost items can be discarded or disposed of by those who find them,
assuming that the owner will not be found. A Lost Needs app can mitigate this issue by connecting
people who genuinely want to return lost items to their rightful owners.

Ramniranjan Jhunjhunwala College Page 13


1.3.2] scope

▪ The scope of a "Lost Needs" app can vary depending on its intended purpose and target
audience. Generally, a Lost Needs app is designed to help individuals report lost items,
search for found items, and facilitate the process of reuniting lost items with their rightful
owners. Here are some key features and functionalities that could be included in the scope
of such an app:

▪ Item Reporting: Users should be able to report items they have lost, providing essential
details such as the item's description, location where it was lost, and possibly attaching a
photo.

▪ Item Posting: Individuals who find lost items can post information about the found item,
including a description and location.

▪ Search Functionality: Users can search for lost items by filtering based on categories,
locations, and other relevant parameters.

▪ Matching Algorithm: An intelligent matching algorithm can be implemented to match


found items with reported lost items based on descriptions and other identifying features.

▪ Notifications: The app can send notifications to users when a potential match is found,
alerting them to a found item that matches their lost item's description.

▪ Communication Platform: A secure in-app messaging system can facilitate communication


between the person who found the item and the one who lost it, enabling them to arrange a
meeting for returning the item.

▪ User Profiles: Users can create profiles to manage their Lost Needs reports and track their
interactions with other users.

▪ Privacy and Safety: Implement measures to protect users' privacy and ensure the safety of
both parties involved in the item exchange process.

▪ Reporting Abuse: Include a mechanism for users to report suspicious or abusive behavior.

Ramniranjan Jhunjhunwala College Page 14


▪ Feedback and Ratings: Allow users to provide feedback and rate their experience with
others to build a trustworthy community.

▪ Geolocation: Utilize geolocation features to provide localized search results and improve
the matching accuracy.

▪ Integration with Social Media: Optionally, you can include features that allow users to share their
lost or found items on social media platforms to increase visibility.

▪ It's important to note that the success and effectiveness of such an app largely depend on its user
base and the level of adoption in a particular region or community. To maximize its impact,
marketing and promoting the app to potential users, as well as fostering a supportive and active
user community, can be crucial.

Ramniranjan Jhunjhunwala College Page 15


1.3] Applicability

A Lost Needs app can have various applications and benefits in different settings, making it a
valuable tool for several scenarios. Here are some key applications of a Lost Needs app:

1. Personal Use: Individuals can use the app to report items they have lost, such as keys, wallets,
mobile phones, or other personal belongings. By posting information about the lost items, they
increase the chances of someone finding and returning their possessions.

2. Public Places: Lost Needs apps can be deployed in public spaces like airports, train stations, bus
terminals, hotels, restaurants, and shopping malls. Users who misplace items in these places can
easily report the loss, and staff or other visitors can post information about found items. This
simplifies the process of reuniting lost items with their owners.

3. Educational Institutions: Schools, colleges, and universities can implement Lost Needs apps on
campus. Students and faculty members can report lost items, and campus staff can post details of
found items. It streamlines the handling of lost property and reduces the time and effort required to
claim lost belongings.

4. Corporate Environments: Offices and workplaces can use Lost Needs apps to help employees
find their misplaced belongings within the office premises. This can include items like laptops,
badges, bags, or personal devices.

5. Events and Conferences: Organizers of events, conferences, or concerts can use the app to
manage Lost Needs items during the gathering. Attendees who lose their belongings can quickly
report it, and event staff or fellow attendees can assist in the search.

6. Local Communities: Lost Needs apps can be useful in local communities or neighborhoods
where people often interact and engage with each other. Residents can report lost items, and helpful
neighbors who find lost items can post information on the app to facilitate returns.

7. Transportation Services: Public transportation services like buses, trains, and taxis can use the
app to handle lost items left behind by passengers. It helps travelers find their lost possessions more

Ramniranjan Jhunjhunwala College Page 16


efficiently.

8. Campus or Corporate Bike Sharing Programs: In environments where there are bike-sharing
programs, a Lost Needs app can assist users in locating and recovering their misplaced bikes.

Overall, the applications of a Lost Needs app are diverse and extend to various situations where
people frequently misplace or find items. It can enhance the efficiency of reuniting lost items with
their owners, improve user satisfaction, and contribute to a more connected and helpful community.

Ramniranjan Jhunjhunwala College Page 17


1.4] Achievement.

With this project we are learning how to integrate two different technologies practically and
make something unique. Also, knowledge of real time database design based on business logic.
The goal is to make an application where individuals can search the lost things in their
vicinity, accordingly. And Lost Needs can save up their time.

Ramniranjan Jhunjhunwala College Page 18


1.5] Organization of Report

In the 2nd chapter - Survey of Technologies, what all technologies have been used in
the project is discussed.

In the 3rd chapter - Requirements and Analysis, requirements of the topic, planning and
scheduling of modules creation, software and hardware required to work within are discussed.

In the 4th chapter - System Design, modules, database and table structure, UML
diagrams representing relationships, UI designs, Security issues and test cases performed on
each module.

In 5th chapter - Implementation and Testing, Programming part is discussed and what
approach the code is for.

In 6th chapter - Results and Discussion, test reports based on test cases, how the
software works and a document showing all possible information about working software.

In 7th chapter - Conclusion, what’s the significance, limitations, and future scope of the
system and project.

Ramniranjan Jhunjhunwala College Page 19


Chapter 2 Survey Of Technologies

1] HTML

HTML (Hypertext Markup Language) is the standard markup language used to create the structure
and content of web pages. It defines the elements and their arrangement within a web page and
allows web browsers to interpret and display the content. HTML is the backbone of every website
and is complemented by CSS (Cascading Style Sheets) and JavaScript for styling and interactivity,
respectively.

2] CSS

CSS (Cascading Style Sheets) is a stylesheet language used to control the presentation and layout of
HTML documents. It allows web developers to define the visual appearance of web pages, including
fonts, colors, spacing, borders, and positioning of elements. CSS is used in conjunction with HTML
to enhance the visual aesthetics and user experience of websites.

CSS works by selecting HTML elements and applying specific styles to them. It uses rules, known as
CSS rulesets, which consist of a selector and a set of properties with their corresponding values. The
selector identifies the HTML elements to which the styles should be applied, and the properties and
values define how the elements should look.

Ramniranjan Jhunjhunwala College Page 20


3] JAVSCRIPT

JavaScript is a versatile and widely used programming language that is primarily used to add
interactivity to web pages. It's a client-side scripting language, which means it runs in the user's web
browser. Here are some key aspects of JavaScript:

Dynamic and Weakly Typed:

JavaScript is a dynamically typed language, meaning you don't have to declare the data type of a
variable explicitly. It's also weakly typed, allowing for implicit type coercion.

Client-Side Scripting:

JavaScript is primarily used for client-side scripting, enabling dynamic content on web pages.
However, with the advent of technologies like Node.js, JavaScript can also be used on the server-
side.

4] VSCODE

Visual Studio Code (VS Code) is a popular and powerful source code editor developed by Microsoft. It is
a free and open-source application available for Windows, macOS, and Linux. VS Code has gained
significant popularity among developers due to its versatility, extensive plugin ecosystem, and developer-
friendly features.

Ramniranjan Jhunjhunwala College Page 21


5] Firebase

Firebase is a comprehensive mobile and web application development platform provided by Google. It
offers a variety of tools and services to help developers build, deploy, and scale applications quickly. Here
are some key components and features of Firebase:

Realtime Database:
Firebase provides a NoSQL cloud database that enables real-time synchronization and data updates across
connected devices. It's well-suited for applications that require instant updates and collaboration.

Authentication:
Firebase Authentication simplifies the process of integrating user authentication into applications. It
supports various authentication methods, including email/password, social media logins (Google,
Facebook, Twitter), and more.

Ramniranjan Jhunjhunwala College Page 22


6] Infinity Hosting.

InfinityFree is probably the best web hosting you can get for nothing and it comes with no expiration
date. Its one-and-only solution includes some of the neat features you would usually expect to get with
commercial-level hosting only, such as unlimited disk space, (almost) unlimited bandwidth, industry-
standard cPanel and the Softaculous one-click installer.

6] WebtoApp

Website To App
Turn your website into a dedicated App for Android and iOS, Online & Easily.

Ramniranjan Jhunjhunwala College Page 23


Chapter 3
Requirements And Analysis

3.1 Problem Definition


There is a significant problem with lost items going unclaimed and unidentified owners struggling to
find their belongings. People frequently lose personal items in public spaces, such as airports,
restaurants, public transportation, schools, and other crowded areas. At the same time, individuals who
find lost items often struggle to locate their rightful owners and return the items to them. This creates
frustration, inconvenience, and emotional distress for both parties involved.

The problem of lost belongings and difficulties in reuniting them with their owners is widespread and
affects people from all walks of life. It impacts individuals, businesses, and institutions alike, leading to
reduced customer satisfaction, increased administrative burdens, and, in some cases, financial losses
for both the finders and the owners.

The Lost needs App aims to bridge the gap between founders and owners, streamlining the process of
reporting lost items and facilitating their return. The app will provide a user-friendly platform where
individuals can report lost items, including detailed descriptions and optional images, making it easier
for finders to identify the belongings.

Ramniranjan Jhunjhunwala College Page 24


3.2 Functional Requirement
For Admin

Requirement No. Priority Requirement


RQ1-Login and Logout 5 Admin is registered
itself in the Application

RQ2- Category Management 5 Admin can manage the


categories of lost items

RQ4- View Items 4 View the details of a item

RQ6- Add user 4 Adding a new user in the


page

RQ8- List Messages 3 List all messages

Ramniranjan Jhunjhunwala College Page 25


For Users

Requirement No. Priority Requirement


RQ1-Login and Logout 5 User can Login and
Logout in the website

RQ2- List Items 5 See the items posted by


the other users

RQ4- Post Lost Items 5 Post a lost item in the list

RQ5- Inform us page 4 admin can be contacted

RQ6- Send Message 4 Send Message to other


user

Ramniranjan Jhunjhunwala College Page 26


3.3 Non-Functional Requirement
Object Priority Requirement
Simple registration for both
Admin and user.

Visible options to and search as


Usability 5 as well as clear information of lost
items.

Every information from both user and


Admin are secured and stored on an
efficient database system.
Reliability 5

Easy and simple UI with clear and


Specific Information regarding Items,
the details they provide, location .
Performance 5

No time constraint for booking the


Availability 5 appointments.

This system is built only for any


search engine and Android Users,
Maintainability is easy.
Supportability 4 All plans for future upgrades can be
easily done with the current system.

Ramniranjan Jhunjhunwala College Page 27


3.4 Planning.

Creating a comprehensive lost and found application demands meticulous planning and
execution. To begin, define the application's purpose, such as facilitating the recovery of lost
items and connecting owners with finders. Determine the target audience and scope, whether
local or global, and delve into market research by assessing existing similar applications for
insights into features, user experience, and competition. Gather user feedback to understand their
needs and preferences thoroughly.

Sustained success requires ongoing maintenance and updates. Monitor performance and
user feedback post-launch, continuously improving the application based on user suggestions
and technological advancements. Provide robust user support channels and encourage
engagement through notifications, updates, and community-building features. Implement
analytics tools to track user behavior and application performance, enabling data-driven insights
to enhance the user experience.

As the user base expands, ensure scalability by planning for increased demand and
consider the integration of advanced features like AI-powered image recognition or predictive
matching. Throughout the journey, effective communication and collaboration within the
development team remain vital. Regularly assess progress, adapting the plan as needed to steer
the lost and found application project toward a successful outcome.

Ramniranjan Jhunjhunwala College Page 28


3.5 Scheduling
The project for developing a lost and found application is planned over several phases to
ensure its successful execution. The initiation and planning phase, spanning two weeks, involves
defining the project's scope, objectives, and communication channels. Concurrently, thorough
market research is conducted to analyze existing similar applications, gather user feedback, and
perform competitive assessments. This phase culminates in finalizing functional requirements,
crafting user-friendly wireframes, and designing the application's user flow.

The development and testing phase, lasting ten weeks, kicks off with backend development
where user registration, authentication, and APIs for item listing and searching are established. In
parallel, frontend development commences, translating the approved design into an intuitive user
interface while integrating geolocation and image recognition capabilities. Simultaneously, the
database structure is developed and data models for users, items, and interactions are
implemented. Subsequent integration and testing involve unit and integration testing, as well as
user acceptance testing to rectify any identified issues.

The deployment and launch phase spans two weeks, beginning with beta testing and
feedback collection as the application is released to a limited audience. Feedback informs
adjustments and security measures, including data encryption and performance optimization. The
final phase, focusing on marketing and post-launch activities, involves ongoing execution of a
marketing strategy and continuous improvements based on user input. Additionally, user support
and engagement channels are maintained, analytics tools are utilized to track application
performance and user behavior, and plans for scalability are set in motion. This comprehensive
project schedule ensures a systematic and organized approach to creating a successful lost and
found application, while fostering adaptability to address changing needs and trends.

Ramniranjan Jhunjhunwala College Page 29


3.6 Gantt Chart :

Ramniranjan Jhunjhunwala College Page 30


3.7 Software & Hardware Requirements

● Hardware Requirements:

64-bit Microsoft Windows 8/10/11

x86_64 CPU architecture;

2nd generation Intel Core or newer

4 GB RAM or more

● Software Requirements

The software required to develop the application are

VSCode

Database

Microsoft Windows 10 pro (64-bit)

Language: php,

Star UML Software: To Draw UML Diagrams

Ramniranjan Jhunjhunwala College Page 31


3.8 Preliminary Product Description

Identify the requirements and objectives of the new system. Define the functions and
operation of the application/system the students are developing as a project. Our system's
objective is to give its user a platform to locate and find their lost items, saving their time and
money. The system requires accessing nothing from the user. Once the item has been found, the
user will ask for a prescription from another user and then will book the appointment and take its
item.

Functions and operation of the website are:

User Registration and Lost Item Retrieval Process for Lost and Found Web Application:

1. User Registration:

● Users will initiate the registration process by providing their phone number.
● Upon submitting the phone number, an SMS verification code will be sent to the user's phone for
authentication.
● Once verified, users will be able to complete their registration, providing essential personal
information.
● The user's registration details will be sent to the admin for approval.

2. Admin Approval:

● The admin will review and approve user registrations based on the provided information.
● Approved users will receive a notification confirming their registration and granting access to
the application.

3. User Profile Creation:

● Upon approval, users can log in to the application and create their profiles, including their
contact details, preferred communication method, and any specific preferences.

4. Admin Services and Lost Item Reporting:


Ramniranjan Jhunjhunwala College Page 32
● The admin will add available services to the application, outlining the details required from users
when reporting a lost item.
● Users will provide information about the lost item, such as item type, description, date, time, and
location of loss.

5. Lost Item Selection and Documentation:

● The system will display potential matches for the lost items reported by users.
● Users will select the relevant lost item from the matches and provide any additional details.
● The system will prompt users to upload a scanned copy or image of the lost item for verification
purposes.

6. Admin Confirmation/Denial:

● The admin will receive the appointment message and documentation from the user.
● The admin will review the request and either confirm or deny the appointment.
● If confirmed, the system will send a confirmation notification to the user. If denied, the admin
will provide a valid reason.

7. Report and Item Collection:

● Once the service center has the lost item ready, they will update the item's status in the system.
● The user will receive a notification that the item is ready for collection.
● Users can visit the center to collect the item, presenting the confirmation details.

8. Conclusion:

This streamlined process ensures efficient lost item retrieval, effective communication between
users and service centers, and a transparent approval and denial mechanism. Users benefit from a
user-friendly interface, clear notifications, and a secure environment, while the admin maintains
control over service quality and user interactions. The Lost and Found Web Application enhances
the user experience, facilitating successful reunions between owners and their lost items.

Ramniranjan Jhunjhunwala College Page 33


Ramniranjan Jhunjhunwala College Page 34
3.9 Conceptual Model.

A use case diagram is used to represent the dynamic behavior of a system. It encapsulates the
system's functionality by incorporating use cases, actors, and their relationships. It models the tasks,
services, and functions required by a system/subsystem of an application. It depicts the high-level
functionality of a system and also tells how the user handles a system.

The main purpose of a use case diagram is to portray the dynamic aspect of a system. It
accumulates the system's requirement, which includes both internal as well as external influences. It
invokes persons, use cases, and several things that invoke the actors and elements accountable for
the implementation of use case diagrams. It represents how an entity from the external environment
can interact with a part of the system.

System

Draw your system's boundaries using a rectangle that contains use cases. Place actors outside the system's
boundaries.

Use Case
Draw use cases using ovals. Label the ovals with verbs that represent the system's functions.

Ramniranjan Jhunjhunwala College Page 35


Actors
Actors are the users of a system. When one system is the actor of another system, label the actor system
with the actor stereotype.

Relationships
Illustrate relationships between an actor and a use case with a simple line. For relationships among
use cases, use arrows labeled either "uses" or "extends." A "uses" relationship indicates that one use
case is needed by another in order to perform a task. An "extends" relationship indicates alternative
options under a certain use case.

Ramniranjan Jhunjhunwala College Page 36


3.9.1 CLASS DIAGRAM

Ramniranjan Jhunjhunwala College Page 37


3.9.2 USE CASE DIAGRAM

Ramniranjan Jhunjhunwala College Page 38


UC:001

Use case ID: 001 Use Case Name: Register New


User

Priority 05

Actor Finder, Owner

Use Case Summary It allows the user (finder, owner) to register himself with the
system by providing the information like name, valid email.

Pre-conditions The email should be valid.

Normal Follow of Paths Alternative Path

1. The user clicks on the sign up button.


2. The user gives the information like name,
email, and password.
3. A verification mail is sent to the provided If the user does not click on sign
email up then verification email will not be
sent.

Exception:

1. The system does not allow the user to add email which is already registered
within the system.

Post-conditions:

Step no # Description
1. The user (finder, owner) will be successfully registered.

UC:002

Ramniranjan Jhunjhunwala College Page 39


Use case ID: 002 Use Case Name: Login

Priority 05

Actor Finder, Owner

Use Case Summary It allows the user (finder, owner) to login himself in the
system by providing the information like name, email.

Pre-conditions You should be registered

Normal Follow of Paths Alternative Path

1. The user clicks on the login button.


2. The user gives the information like name,
email, and password.
3. login done If the user is not registered then login
cannot happen

Exception:

1. The system does not allow the user to add email which is already registered within
the system.

Post-conditions:

Step no # Description
1. The user (finder, owner) will successfully login.

Ramniranjan Jhunjhunwala College Page 40


UC:003

Use case ID: 003 Use Case Name: Report a Lost


Item

Priority 05

Actor Loser

Use Case Summary It allows the owner to report his lost item

Pre-conditions You should be login

Normal Follow of Paths Alternative Path

1. The user clicks on the report lost item


button.
2. The user gives the information like name,
email, lost item name,
description,color ,brand and security
question
3. After clicking the submit button a user should click on submit button
message is sent to the other users.

Exception:

1.Same item should not be registered again.

Post-conditions:

Step no # Description
1. Lost item will be reported and the database will be updated.

Ramniranjan Jhunjhunwala College Page 41


UC:004

Use case ID: 004 Use Case Name: Report a


Found Item

Priority 05

Actor Finder

Use Case Summary It allows the founder to report found item.

Pre-conditions You should login to report a found item.

Normal Follow of Paths Alternative Path

1. The user clicks on the inform us


2. The user gives the information of title.
3. After clicking the submit button a If the user does not press submit
message is sent to the admin. button then found item will not be
registered

Exception:

1. Same item should not be reported as found repetitively.

Post-conditions:

Step no # Description
1. Lost item will be reported and the database will be updated.

Ramniranjan Jhunjhunwala College Page 42


UC: 005

Use case ID: 005 Use Case Name: Message.

Priority 02

Actor Finder, Owner

Use Case Summary For the convenience of the user, both the user and finder can
chat with each other to decide for a mutual place to visit
each other and exchange the lost item.

Pre-conditions The user must be logged into the system to feedback

Normal Follow of Paths Alternative Path

1. The user (Owner) logs into the system by


providing email and password.
2. The user either posts a lost item
request or response to admin
for finding a lost item.

Exception:
The system does not allow the user to chat if they have not either posted a lost item
or responded to lost item request.

Ramniranjan Jhunjhunwala College Page 43


UC:006

Use case ID: 006 Use Case Name: View Lost


Items.

Priority 01

Actor Finder, Owner,Admin

Use Case Summary The owner, admin and finder can see from the highlights that
which items are lost. All the lost items can be viewed from
there

Pre-conditions The user must be login into the system to view the details of
the
lost items

Normal Follow of Paths Alternative Path

1. The user (Owner/finder) logs


into the system by providing
email and password.
2. The user (finder) searches an
item.

5. Admin clicks on the lost items


button to see all the received
and returned items.

Exception:
The system does not allow the user to see lost items details if he is not logged into the
system

Post-conditions:

Step no # Description
1. The user will see the lost items.

Ramniranjan Jhunjhunwala College Page 44


UC:007

Use case ID: 007 Use Case Name: View Found


Items.

Priority 01

Actor Finder, Owner,Admin

Use Case Summary The owner, admin and finder can see from the highlights that
which items are found. All the found items can be viewed
from there

Pre-conditions The user must be login into the system to view the details of
the
lost items

Normal Follow of Paths Alternative Path

1. The user (Owner/finder) logs into the


system by providing email
and password.
2. The user (finder) searches an
item.

5. Admin clicks on the found items


button to see all the received
and returned items.

Exception:
The system does not allow the user to see found items details if he is not logged into
the
system

Post-conditions:

Step no # Description
1. The user will see the found items.

3.9.3 SEQUENCE DIAGRAM

Ramniranjan Jhunjhunwala College Page 45


● LOGIN

Ramniranjan Jhunjhunwala College Page 46


● REPORT LOST ITEM

Ramniranjan Jhunjhunwala College Page 47


● REPORT FOUND ITEM

 SEARCH BY CATEGORY

Ramniranjan Jhunjhunwala College Page 48


3.9.4 ACTIVITY DIAGRAM:
● LOGIN

Ramniranjan Jhunjhunwala College Page 49


● REPORT LOST ITEM

Ramniranjan Jhunjhunwala College Page 50


● REPORT FOUND ITEM

Ramniranjan Jhunjhunwala College Page 51


Chapter 4 System Design.

4.1 Basic Modules

Sr No. Module name Actor

1. Register User Module Admin

2. Add Item Module Admin/User

3. Inform item Admin/user

4. Wait for Email/feedback User

Description:
1.Register User Module

★ This module is for Admin.

★ The admin will add a user to sign up with his Email address
.
★ The Admin will sign up the email address along with other official details.

2.Add Item Module

★ In this module the user/admin will add the item details.

3.Report Item Module

★ The Lost items/Found Items will be reported in this module

4.Email and feedback

★ In this module, the admin waits about the Services of the Lost Needs..

Ramniranjan Jhunjhunwala College Page 52


4.2 Database Design

4.2.2. Entity Relationship Diagram

Ramniranjan Jhunjhunwala College Page 53


4.3 Procedural Diagrams.

4.2.3 DATA FLOW DIAGRAM


(LEVEL 0)

Ramniranjan Jhunjhunwala College Page 54


(LEVEL 1)

Ramniranjan Jhunjhunwala College Page 55


(LEVEL 2)

Ramniranjan Jhunjhunwala College Page 56


4.4 Security Issues.

Utilizing Firebase Real-time Database necessitates a meticulous consideration of read and write
access control. In our data-driven ecosystem, each request to interact with the database hinges upon
the adherence to predefined rules. Firebase Security Rules constitute the linchpin of our security
framework, orchestrating access to the database by harmonizing path patterns with custom
conditions for read and write permissions.

Firebase Security Rules function as the sentinels guarding our database, scrutinizing path patterns to
determine data access privileges. These rules encompass a dual nature, featuring a path-matching
component and a conditional statement, combining to act as gatekeepers regulating who can access,
read, or modify data stored within the database. By architecting a robust security plan rooted in
these rules, we aim to establish a robust framework that not only controls but also validates user
access based on their roles and permissions.

This security plan forms the bedrock of our data governance strategy, ensuring that sensitive
information remains safeguarded against unauthorized access. Through the meticulously crafted
rules, we intend to foster a granular control system that precisely dictates who can access which
data, fortifying our data ecosystem's integrity and compliance. In essence, our Firebase Security
Rules become the arbiter of data access, guaranteeing that the right users have the right level of
access, thus cementing the foundation of trust and security in our database infrastructure.

Ramniranjan Jhunjhunwala College Page 57


4.5 Test Cases.

TC 1

Register new user

Test-ID TC 1
Use Case ID UC 1
Test Case Register new user
Test Scenario Users need to Register themselves in the application.
Test Step Test Data Expected Actual Status
Result Result
Enter the Name, “Successfully “Successfully Success
personal Mobile Register” Register”
details number,
Email- id,

TC 2

Login

Test-ID TC 2
Use Case ID UC 2
Test Case Login
Test Scenario Users need to Login themselves in the application.
Test Step Test Data Expected Actual Status
Result Result
Enter the Login Id, “Successful “Successful Success
Login Details Password login” login”

Ramniranjan Jhunjhunwala College Page 58


TC 3

Report lost item

Test-ID TC 3
Use Case ID UC 3
Test Case Report lost item
Test Scenario User reporting a lost item
Test Step Test Data Expected Actual Status
Result Result
Enter the item name,color, “Item reported “Item reported Success
details brand,descripti as lost” as lost”
on

TC 4

Report Found Item

Test-ID TC 4
Use Case ID UC 4
Test Case Report a found item
Test Scenario Finder Reporting a found item
Test Step Test Data Expected Actual Status
Result Result
Enter the item name,color, “Item reported “Item reported Success
details brand,descripti as found” as found”
on
TC 6
Inform us

Ramniranjan Jhunjhunwala College Page 59


Test-ID TC 6
Use Case ID UC 6
Test Case Inform
Test Scenario Users tell about Items
Test Step Test Data Expected Actual Status
Result Result
Giving Messages Messages Thanks for the Success
Feedback Messages

Ramniranjan Jhunjhunwala College Page 60


TC 7
View lost items

Test-ID TC 7
Use Case ID UC 7
Test Case View Lost items
Test Scenario Users are viewing lost items in Categories
Test Step Test Data Expected Actual Status
Result Result
View Lost Categories View items View item Success
items shown sown

TC 8

View Found Items

Test-ID TC 8
Use Case ID UC 8
Test Case View Lost items
Test Scenario Users are viewing found items in Categories
Test Step Test Data Expected Actual Status
Result Result
View Found Categories View items Found item Success
Items shown shown

Ramniranjan Jhunjhunwala College Page 61


Chapter 5 Implementation and Testing

5.1 Implementation Approaches

For making this project complete working model, we have divided all the functionalities into small and
various modules. Modules which are made in sequence and by observing their dependencies on other
modules are described in Gantt chart in 3rd Chapter Requirement and Analysis. Since many of modules are
common for all actors, and hence they are made after all different modules.
Standard used for implementation of modules are Top down approach. In top down approach-
➢ The whole problem/functionality is splitted into two or more modules. ➢ Start implementing those
modules.
➢ If these modules are not easy to be implemented as a whole, split them further and implement them with
a better solution.
➢ Merge the implemented modules for a functionality to be executed.

5.2 Coding Details and Code Efficiency

In coding, attention to detail is paramount for creating robust and maintainable software. Careful
consideration should be given to aspects such as variable naming, ensuring they are both descriptive and
follow a consistent convention. The structure of the code, including indentation, formatting, and logical
organization, contributes significantly to readability. Comments play a crucial role in explaining complex
sections or highlighting critical details. Efficient use of whitespace, along with clear and concise conditional
statements and loops, further enhances code clarity. Error handling mechanisms should be robust, providing
informative messages to aid debugging. Code reusability is encouraged through modularization and avoiding
duplication. Constants, meaningful parameter names, and proper string manipulation contribute to code
clarity and maintainability. File organization and version control integration are essential for project
maintainability. Rigorous testing, including unit tests, ensures the correctness of the code. Additionally,
security considerations, such as input sanitization, must be incorporated to mitigate potential vulnerabilities.
By meticulously addressing these coding details, developers can produce code that is not only functional but
also comprehensible, maintainable, and resilient.

5.2.1 Code Efficiency

Module 1 – LOGIN (User and Admin)


<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8" />
<link type="text/css" rel="stylesheet"
href="https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css" />
<script>
function extractAndSubmit() {
// Get the email and password values from the inputs
var emailInput = document.getElementById("email");
var passwordInput = document.getElementById("password");

Ramniranjan Jhunjhunwala College Page 62


var emailValue = emailInput.value;
var passwordValue = passwordInput.value;

// Extract the part before '@'


var username = emailValue.split('@')[0];

// Check if the username is "admin" and password is "admin123"


if (username === "admin" && passwordValue === "admin123") {
// Redirect to admin.html
window.location.href = "admin.html";
return false; // Stop form submission
}

// Set the value of the profile link in the next page


localStorage.setItem("username", username);
localStorage.setItem("email", emailValue);

return true; // Continue with the form submission


}
</script>

</script>

<meta name="viewport" content="width=device-width, initial-scale=1.0" />


<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon" />
</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40" />
<span class="website-name">LOST NEEDS</span>
</div>
<nav class="menu">
<ul>
<li><a href="index.html">Home</a></li>
<!-- <li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Inform Us</a></li>
<li><a href="login.html">Login</a></li> -->
</ul>
</nav>
</header>

<body>
<div class="container">
<input type="checkbox" id="check" />
<div class="login form">
Ramniranjan Jhunjhunwala College Page 63
<header>Login</header>
<form action="" id="loginForm" onsubmit="return extractAndSubmit()">
<!-- Updated form ID -->
<input type="text" id="email" placeholder="Enter your email" />
<input type="password" id="password" placeholder="Enter your password" />
<!-- <a href="#">Forgot password?</a> -->

<input type="submit" id="submit" class="button" value="Login" />


</form>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/7.14.1-0/firebase-app.js"></
script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/7.14.1-0/firebase-
database.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/firebase/7.14.1-0/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.0.0/firebase-<PACKAGE>.js"></
script>
<script src="https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"></script>

<script src="data.js"></script>
</body>

</html>

Data.js
const firebaseConfig = {
apiKey: "AIzaSyBK2LDvCKgpPMQsT_KGKP6AITlUueSwZUA",
authDomain: "lost-needs.firebaseapp.com",
databaseURL: "https://lost-needs-default-rtdb.firebaseio.com",
projectId: "lost-needs",
storageBucket: "lost-needs.appspot.com",
messagingSenderId: "126043221284",
appId: "1:126043221284:web:a8dc83fa30f8c7ce54d7b1",
};

firebase.initializeApp(firebaseConfig);

const loginFormDB = firebase.database().ref("LoginForm");


const auth = firebase.auth();

document.getElementById("loginForm").addEventListener("submit", submitForm);

function submitForm(e) {
e.preventDefault();

const email = getElementVal("email");


const password = getElementVal("password");

Ramniranjan Jhunjhunwala College Page 64


auth.signInWithEmailAndPassword(email, password)
.then((cred) => {
console.log(cred.user);

// Save login data in Realtime Database


saveLoginData(email, new Date().toString());

// Redirect to the next page


window.location.href = 'lostandfound.html';
})
.catch((error) => {
console.error(error);
alert("Invalid user credentials");
});
}
const checkUserExistence = (email, callback) => {
loginFormDB.orderByChild("email").equalTo(email).once("value", (snapshot) => {
if (snapshot.exists()) {
callback(); // User exists in the Realtime Database
} else {
alert("User does not exist in the database");
}
});
};

const saveLoginData = (email, timestamp) => {


var newLoginForm = loginFormDB.push();

newLoginForm.set({
email: email,
timestamp: timestamp,
});
};

const getElementVal = (id) => {


return document.getElementById(id).value;
};

Ramniranjan Jhunjhunwala College Page 65


Module 1 – POSTING ITEMS (User)
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"
integrity="...">

<link href="https://fonts.googleapis.com/css2?

Ramniranjan Jhunjhunwala College Page 66


family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">

<!-- <script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


// document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script> -->

</head>
</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>

</div>
<nav class="menu">
<ul>
<!-- <li><a href="index.html">Home</a></li> -->
<li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<!-- <li><a href="about.html">About</a></li> -->
<li><a href="contact.html">Inform Us</a></li>
<li><a href="index.html">Logout</a></li>

</ul>
</nav>
</header>

<body>
<div class="container">

<div id="form-wrap" class="popup form-wrap">


<form id="itemform" action="">
<div class="form-group">
<label for="date">Date </label>
<input class="form-control" type="date" id="date" name="date"><br>

<label for="time" style="margin-left: 40px;">Time </label>


<input class="form-control" type="time" id="time" name="time"><br>

Ramniranjan Jhunjhunwala College Page 67


<!-- Add the image upload input here -->
<!-- <label for="image" style="margin-left: 40px;">Upload Image:</label>
<input type="file" id="image" name="image" accept="image/*"><br> -->
</div>

<div class="form-group">
<input class="form-control" type="text" id="title" name="title"
placeholder="Title"><br>
<input class="form-control" type="text" id="description" name="description"
placeholder="Description"><br>
<input class="form-control" type="text" id="location" name="location"
placeholder="Location"><br>
</div>
<br>

<div class="form-group">
<label>Post Type :</label>
<label for="found" class="custom-control-label" style="margin-left: 40px;"> Found
</label>
<input class="custom-control-input" type="radio" id="found" name="post_type"
value="found"
style="margin-left: 40px;"><br>
<label for="lost" class="custom-control-label" style="margin-left: 40px;"> Lost
</label>
<input class="custom-control-input" type="radio" id="lost" name="post_type"
value="lost"
style="margin-left: 40px;"><br>
</div><br>

<div class="form-group">
<label for="securityQuestion">Security Question:</label>
<input class="form-control" type="text" id="securityQuestion"
name="securityQuestion"
placeholder="Security Question (found cases)"><br>
</div>

<!-- <input class="btn btn-primary" type="submit" id="submit" value="Submit"


style="margin-left: 140px;"> -->
<input class="btn btn-primary" type="button" id="insert" value="Submit"
style="margin-left: 140px;">

</form>
</div>

<!--
<form action="#" method="post">
<div class="content">
<label for="date">Date:</label>
<input type="date" id="date" name="date"><br>
Ramniranjan Jhunjhunwala College Page 68
<label for="time">Time:</label>
<input type="time" id="time" name="time"><br>
</div>

<div class="content">
<input type="text" id="title" name="title" placeholder="Title"><br>

<input type="text" id="description" name="description"


placeholder="Description"><br>

<input type="text" id="location" name="location" placeholder="Location"><br>


</div>
<br>

<div class="content">
<label>Post Type :</label>
<label for="found"> Found </label>
<input type="radio" id="found" name="post_type" value="found"><br>
<label for="lost"> Lost </label>
<input type="radio" id="lost" name="post_type" value="lost"><br>
</div><br>

<div class="content">
<label for="securityQuestion">Security Question:</label>
<input type="text" id="securityQuestion" name="securityQuestion"
placeholder="securityQuestion"><br>
</div>

<input type="button" id="insert" value="Submit"> -->


</form>
</div>

<script src="https://www.gstatic.com/firebasejs/8.4.2/firebase.js"></script>
<!-- <script src="https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js"></script> --
>

<script src="./fireConfig.js"></script>
<script src="./myscript.js"></script>

</body>
<footer class="site-footer">
<div class="footer-content">
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>

Ramniranjan Jhunjhunwala College Page 69


</html>

Javacsript:
const firebaseConfig = {
apiKey: "AIzaSyDKROZGITpU_Gczmgg5NbTW1OnxP8NBzJw",
authDomain: "items-410f0.firebaseapp.com",
databaseURL: "https://items-410f0-default-rtdb.firebaseio.com",
projectId: "items-410f0",
storageBucket: "items-410f0.appspot.com",
messagingSenderId: "324334322800",
appId: "1:324334322800:web:138e94390853d976bfe0b5"
};

firebase.initializeApp(firebaseConfig);
var dateV, timeV, titleV, descriptionV, locationV, postTypeV, securityQuestionV;

function readForm() {
dateV = document.getElementById("date").value;
timeV = document.getElementById("time").value;
titleV = document.getElementById("title").value;
descriptionV = document.getElementById("description").value;
locationV = document.getElementById("location").value;
postTypeV = document.querySelector('input[name="post_type"]:checked').value;
securityQuestionV = document.getElementById("securityQuestion").value;

console.log(dateV, timeV, titleV, descriptionV, locationV, postTypeV, securityQuestionV);


}

document.getElementById("insert").onclick = function () {
readForm();

firebase
.database()
.ref("posts/" + Date.now()) // Using timestamp as a unique key
.set({
date: dateV,
time: timeV,
title: titleV,
description: descriptionV,
location: locationV,
postType: postTypeV,
securityQuestion: securityQuestionV,
});

alert("Data Inserted");
// Clearing form fields
document.getElementById("date").value = "";
document.getElementById("time").value = "";

Ramniranjan Jhunjhunwala College Page 70


document.getElementById("title").value = "";
document.getElementById("description").value = "";
document.getElementById("location").value = "";
document.querySelector('input[name="post_type"]:checked').checked = false;
document.getElementById("securityQuestion").value = "";
};

Module 3 – Informing the Admin( For users)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">
<script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script>
Ramniranjan Jhunjhunwala College Page 71
</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>

</div>
<nav class="menu">
<ul>
<!-- <li><a href="index.html">Home</a></li> -->

<li><a href="lostandfound.html">Lost Needs</a></li>


<li><a href="post.html">Post an Item</a></li>
<!-- <li><a href="about.html">About</a></li> -->
<li><a href="contact.html">Inform Us</a></li>
<li><a href="index.html">Logout</a></li>

</ul>
</nav>
</header>
<body>

<section class="content-section">
<div class="section1">
<h2>Inform Us</h2>
<div class="contact-form">
<h2>Send us a Message!</h2>
<form id="contactForm" action="#" method="post">
<label for="fullname">Full Name:</label>
<input type="text" id="fullname" name="fullname" placeholder="Enter your full
name">

<label for="email">Email:</label>
<input type="email" id="email" name="email" placeholder="Enter your email">

<label for="contact">Contact No.:</label>


<input type="text" id="contact" name="contact" placeholder="Enter your contact
number">

<textarea id="message" name="message" placeholder="Title of Lost item"></textarea>

<input type="submit" value="Send Message">


</form>

</div>

</div>

Ramniranjan Jhunjhunwala College Page 72


</section>

<script src="https://www.gstatic.com/firebasejs/8.4.2/firebase.js"></script>
<script src="./firecongif2.js"></script>
<script src="./myscript2.js"></script>

</body>
<footer class="site-footer">
<div class="footer-content">
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>
</html>

var fullnameV, emailV, contactV, messageV;

function readContactForm() {
fullnameV = document.getElementById("fullname").value;
emailV = document.getElementById("email").value;
contactV = document.getElementById("contact").value;
messageV = document.getElementById("message").value;

console.log(fullnameV, emailV, contactV, messageV);


}

document.getElementById("contactForm").addEventListener("submit", function (event) {


event.preventDefault(); // Prevents the default form submission

readContactForm();

// Assuming you have initialized Firebase in your project


firebase
.database()
.ref("contact_messages/" + Date.now()) // Using timestamp as a unique key
.set({
fullname: fullnameV,
email: emailV,
contact: contactV,
message: messageV,
});

alert("Message Sent");
// Clearing form fields
document.getElementById("fullname").value = "";
document.getElementById("email").value = "";
document.getElementById("contact").value = "";

Ramniranjan Jhunjhunwala College Page 73


document.getElementById("message").value = "";
});

ADMIN MODULES:

Module 1- FETCH USERS:


<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
app.js"></script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
auth.js"></script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
database.js"></script>

<!-- <script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


// document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script> -->

</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>

</div>
<nav class="menu">
<ul>
<li><a href="admin.html">Dashboard</a></li>
<li><a href="fetch_items.html">Fetch Items</a></li>
<li><a href="fetch_messages.html">Fetch Messages</a></li>
Ramniranjan Jhunjhunwala College Page 74
<li><a href="addusers.html">Add users</a></li>

<!--
<li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li> -->
<li><a href="login.html">Logout</a></li>

</ul>
</nav>
</header>

<body>
<div class="wrapper">
<table id="crud-loginform">
<caption>LoginForm Data</caption>
<thead>
<tr>
<td>Email</td>
<td>Timestamp</td>
</tr>
</thead>
<tbody id="tbody-loginform"></tbody>
</table>
</div>

<script type="module">
import { initializeApp } from "https://www.gstatic.com/firebasejs/10.8.1/firebase-
app.js";
import { getDatabase, ref, onValue } from
"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";

const firebaseConfig = {
apiKey: "AIzaSyBK2LDvCKgpPMQsT_KGKP6AITlUueSwZUA",
authDomain: "lost-needs.firebaseapp.com",
databaseURL: "https://lost-needs-default-rtdb.firebaseio.com",
projectId: "lost-needs",
storageBucket: "lost-needs.appspot.com",
messagingSenderId: "126043221284",
appId: "1:126043221284:web:a8dc83fa30f8c7ce54d7b1"
};

const app = initializeApp(firebaseConfig);


const db = getDatabase();
// Get a reference to the table body
const tbodyLoginForm = document.getElementById('tbody-loginform');

Ramniranjan Jhunjhunwala College Page 75


// Function to add an item to the table
function AddItemToLoginFormTable(login) {
const trow = document.createElement("tr");
const tdEmail = document.createElement('td');
const tdTimestamp = document.createElement('td');

tdEmail.innerHTML = login.email;
tdTimestamp.innerHTML = login.timestamp;

trow.appendChild(tdEmail);
trow.appendChild(tdTimestamp);

tbodyLoginForm.appendChild(trow);
}

// Function to add all items to the table


function AddAllItemsToLoginFormTable(logins) {
tbodyLoginForm.innerHTML = "";
logins.forEach(login => {
AddItemToLoginFormTable(login);
});
}

// Function to get all data in real-time from Firebase


function GetAllLoginFormDataRealtime() {
const loginFormRef = ref(db, "LoginForm");

onValue(loginFormRef, (snapshot) => {


const logins = [];
snapshot.forEach(childSnapshot => {
logins.push(childSnapshot.val());
});
console.log("Fetched data:", logins); // Add this line

AddAllItemsToLoginFormTable(logins);
});
}

// Trigger the function to get data once on window load


window.onload = GetAllLoginFormDataRealtime;
</script>

</body>

</body>
<footer class="site-footer">
<div class="footer-content">
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
Ramniranjan Jhunjhunwala College Page 76
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>

</html>

Module 2- FETCH ITEMS:


<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700&display=swap"
rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">
<!-- <script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script> -->
</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>
Ramniranjan Jhunjhunwala College Page 77
</div>
<nav class="menu">
<ul>
<li><a href="admin.html">Dashboard</a></li>
<li><a href="fetch_users.html">Fetch Users</a></li>
<li><a href="addusers.html">Add users</a></li>
<li><a href="fetch_messages.html">Fetch Messages</a></li>
<!--
<li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li> -->
<li><a href="login.html">Logout</a></li>

</ul>
</nav>
</header>
<!-- Import Firebase scripts -->
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js"></
script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
database.js"></script>

<!-- Firebase config script -->


<script type="module">
// Your Firebase configuration
import { initializeApp } from "https://www.gstatic.com/firebasejs/10.8.1/firebase-
app.js";

const firebaseConfig = {
apiKey: "AIzaSyDKROZGITpU_Gczmgg5NbTW1OnxP8NBzJw",
authDomain: "items-410f0.firebaseapp.com",
databaseURL: "https://items-410f0-default-rtdb.firebaseio.com",
projectId: "items-410f0",
storageBucket: "items-410f0.appspot.com",
messagingSenderId: "324334322800",
appId: "1:324334322800:web:138e94390853d976bfe0b5"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
</script>
</head>

<body>
<div class="wrapper">
<table id="crud-posts">
<caption>ITEMS</caption>
<thead>
Ramniranjan Jhunjhunwala College Page 78
<tr>
<td>Date</td>
<td>Description</td>
<td>Location</td>
<td>Post Type</td>
<td>Security Question</td>
<td>Time</td>
<td>Title</td>
</tr>
</thead>
<tbody id="tbody-posts"></tbody>
</table>
</div>

<script type="module">
import { getDatabase, ref, onValue } from
"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";

const db = getDatabase();

// Get a reference to the table body


const tbodyPosts = document.getElementById('tbody-posts');

// Function to add an item to the table


function AddItemToPostsTable(post) {
const trow = document.createElement("tr");
const tdDate = document.createElement('td');
const tdDescription = document.createElement('td');
const tdLocation = document.createElement('td');
const tdPostType = document.createElement('td');
const tdSecurityQuestion = document.createElement('td');
const tdTime = document.createElement('td');
const tdTitle = document.createElement('td');

tdDate.innerHTML = post.date;
tdDescription.innerHTML = post.description;
tdLocation.innerHTML = post.location;
tdPostType.innerHTML = post.postType;
tdSecurityQuestion.innerHTML = post.securityQuestion;
tdTime.innerHTML = post.time;
tdTitle.innerHTML = post.title;

trow.appendChild(tdDate);
trow.appendChild(tdDescription);
trow.appendChild(tdLocation);
trow.appendChild(tdPostType);
trow.appendChild(tdSecurityQuestion);
trow.appendChild(tdTime);
trow.appendChild(tdTitle);

Ramniranjan Jhunjhunwala College Page 79


tbodyPosts.appendChild(trow);
}

// Function to add all items to the table


function AddAllItemsToPostsTable(posts) {
tbodyPosts.innerHTML = "";
posts.forEach(post => {
AddItemToPostsTable(post);
});
}

// Function to get all data in real-time from Firebase


function GetAllPostsDataRealtime() {
const postsRef = ref(db, "posts");

onValue(postsRef, (snapshot) => {


const posts = [];
snapshot.forEach(childSnapshot => {
posts.push(childSnapshot.val());
});

AddAllItemsToPostsTable(posts);
});
}

// Trigger the function to get data once on window load


window.onload = GetAllPostsDataRealtime;
</script>

</body>
<footer class="site-footer">
<div class="footer-content">
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>

</html>

Ramniranjan Jhunjhunwala College Page 80


Modules 3- FETCH MESSAGES:
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">

<!-- Import Firebase scripts -->


<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
app.js"></script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
database.js"></script>

<!-- Firebase config script -->


<script type="module">
// Your Firebase configuration
import { initializeApp } from "https://www.gstatic.com/firebasejs/10.8.1/firebase-
app.js";

const firebaseConfig = {
apiKey: "AIzaSyDSYMQgpaxroAPc5G1muT-VAkagSKfiDU4",
authDomain: "informus-c528d.firebaseapp.com",
databaseURL: "https://informus-c528d-default-rtdb.asia-
southeast1.firebasedatabase.app",
projectId: "informus-c528d",
storageBucket: "informus-c528d.appspot.com",
messagingSenderId: "946498740339",
appId: "1:946498740339:web:13614dd6c13b35ff9b4a06"
};

Ramniranjan Jhunjhunwala College Page 81


// Initialize Firebase
const app = initializeApp(firebaseConfig);
</script>

<!-- <script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script> -->
</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>

</div>
<nav class="menu">
<ul>
<li><a href="admin.html">Dashboard</a></li>
<li><a href="fetch_users.html">Fetch Users</a></li>
<li><a href="fetch_items.html">Fetch Items</a></li>
<li><a href="addusers.html">Add users</a></li>

<!--
<li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li> -->
<li><a href="login.html">Logout</a></li>

</ul>
</nav>
</header>

<body>
<div class="wrapper">
<table id="crud-messages">
<caption>Contact Messages</caption>
<thead>
Ramniranjan Jhunjhunwala College Page 82
<tr>
<td>Full Name</td>
<td>Email</td>
<td>Contact Number</td>
<td>Message</td>
</tr>
</thead>
<tbody id="tbody-messages"></tbody>
</table>
</div>
<!-- <div class="popup add">
<form action="">
<input type="text" placeholder="name" name="name">
<input type="tel" placeholder="phone" name="phone">
<input type="email" placeholder="email" name="email">
<input type="submit" value="submit" >
</form>
</div>

<div class="popup update">


<form action="">
<input type="text" placeholder="name" name="name">
<input type="tel" placeholder="phone" name="phone">
<input type="email" placeholder="email" name="email">
<input type="submit" value="submit" >
</form>
</div> -->

<script type="module">
import { getDatabase, ref, onValue } from
"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";

const db = getDatabase();

// Get a reference to the table body


const tbodyMessages = document.getElementById('tbody-messages');

// Function to add a message to the table


// function AddMessageToTable(contactMessage) {
// const trow = document.createElement("tr");
// const tdFullName = document.createElement("td");
// const tdEmail = document.createElement("td");
// const tdContactNumber = document.createElement("td");
// const tdMessage = document.createElement("td");

// tdFullName.innerHTML = contactMessage.fullname;
// tdEmail.innerHTML = contactMessage.email;
// tdContactNumber.innerHTML = contactMessage.contact;
Ramniranjan Jhunjhunwala College Page 83
// tdMessage.innerHTML = contactMessage.message;

// trow.appendChild(tdFullName);
// trow.appendChild(tdEmail);
// trow.appendChild(tdContactNumber);
// trow.appendChild(tdMessage);

// tbodyMessages.appendChild(trow);

// }
function AddMessageToTable(contactMessage) {
const trow = document.createElement("tr");

const tdFullName = document.createElement("td");


tdFullName.innerHTML = contactMessage.fullname;
trow.appendChild(tdFullName);

const tdEmail = document.createElement("td");


const emailLink = document.createElement("a");

// Set the href attribute to the email address


emailLink.href = "mailto:" + contactMessage.email;

// Set the inner HTML of the link to the email address


emailLink.innerHTML = contactMessage.email;

// Append the link to the table cell


tdEmail.appendChild(emailLink);

// Append the table cell to the table row


trow.appendChild(tdEmail);

const tdContactNumber = document.createElement("td");


tdContactNumber.innerHTML = contactMessage.contact;
trow.appendChild(tdContactNumber);

const tdMessage = document.createElement("td");


tdMessage.innerHTML = contactMessage.message;
trow.appendChild(tdMessage);

tbodyMessages.appendChild(trow);
}

// Function to add all messages to the table


function AddAllMessagesToTable(messages) {
tbodyMessages.innerHTML = "";
messages.forEach(message => {
AddMessageToTable(message);
});
}
Ramniranjan Jhunjhunwala College Page 84
// Function to get all data in real-time from Firebase
function GetAllMessagesDataRealtime() {
const messagesRef = ref(db, "contact_messages");

onValue(messagesRef, (snapshot) => {


const messages = [];
snapshot.forEach(childSnapshot => {
messages.push(childSnapshot.val());
});

AddAllMessagesToTable(messages);
});
}
// Trigger the function to get data once on window load
window.onload = GetAllMessagesDataRealtime;
</script>
</body>
<footer class="site-footer">
<div class="footer-content">
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>

</html>

Module 4 – ADD USERS


<!DOCTYPE html>
<html lang="en">
<head>
Ramniranjan Jhunjhunwala College Page 85
<meta charset="UTF-8">
<link href="https://fonts.googleapis.com/css2?
family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">

<title>LOST NEEDS</title>
<link rel="icon" href="img/LOSTNEEDS.png" type="image/x-icon">
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js"></
script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-auth.js"></
script>
<script type="module" src="https://www.gstatic.com/firebasejs/10.8.1/firebase-
database.js"></script>

<!-- <script>
// Get the visit count from local storage or set to 0 if not exists
let count = localStorage.getItem('visitCount') || 0;

// Update the counter display


// document.getElementById('counter').textContent = count;

// Increment the count and update the display on each visit


count++;
localStorage.setItem('visitCount', count);
</script> -->

</head>
<header class="fixed-header">
<div class="logo">
<img src="img/Lostneeds2.png" alt="Logo" height="40">
<span class="website-name">LOST NEEDS</span>

</div>
<nav class="menu">
<ul>
<li><a href="admin.html">Dashboard</a></li>
<li><a href="fetch_users.html">Fetch Users</a></li>
<li><a href="fetch_items.html">Fetch Items</a></li>
<li><a href="fetch_messages.html">Fetch Messages</a></li>

<!--
<li><a href="lostandfound.html">Lost Needs</a></li>
<li><a href="post.html">Post an Item</a></li>
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact Us</a></li> -->
<li><a href="login.html">Logout</a></li>

</ul>
</nav>
</header>
Ramniranjan Jhunjhunwala College Page 86
<body>
<div class="wrapper">
<!-- <table id="crud-loginform">
<caption>LoginForm Data</caption>
<thead>
<tr>
<td>Email</td>
<td>Timestamp</td>
</tr>
</thead>
<tbody id="tbody-loginform"></tbody>
</table> -->
<button class="add-user">Add User</button>
</div>

<div class="popup add">


<form action="">
<input type="email" placeholder="email" id="email" name="email">
<input type="password" placeholder="password" id="password" name="password">
<input type="submit" id="submit" value="submit">
</form>
</div>

<!-- <div class="popup update">


<form action="">
<input type="email" placeholder="email" id="email" name="email">
<input type="text" placeholder="password" id="password" name="password">

<input type="submit" id = "submit" value="submit" >


</form>
</div> -->
<script>
let addUser = document.querySelector(".add-user"),
popup = document.querySelector(".popup");

addUser.addEventListener("click", () => {
popup.classList.add("active");
});

window.addEventListener("click", (e) => {


if (e.target == popup) {
popup.classList.remove("active");
}
});

</script>

Ramniranjan Jhunjhunwala College Page 87


<script type="module">
// Your existing add user popup script

// Firebase authentication and Realtime Database script


import { initializeApp } from "https://www.gstatic.com/firebasejs/10.8.1/firebase-app.js";
import { getAuth, createUserWithEmailAndPassword } from
"https://www.gstatic.com/firebasejs/10.8.1/firebase-auth.js";
import { getDatabase, ref, push, onValue } from
"https://www.gstatic.com/firebasejs/10.8.1/firebase-database.js";

const firebaseConfig = {
apiKey: "AIzaSyBK2LDvCKgpPMQsT_KGKP6AITlUueSwZUA",
authDomain: "lost-needs.firebaseapp.com",
databaseURL: "https://lost-needs-default-rtdb.firebaseio.com",
projectId: "lost-needs",
storageBucket: "lost-needs.appspot.com",
messagingSenderId: "126043221284",
appId: "1:126043221284:web:a8dc83fa30f8c7ce54d7b1"
};

const app = initializeApp(firebaseConfig);


const auth = getAuth(app);

const submitButton = document.getElementById('submit');

submitButton.addEventListener("click", function (event) {


event.preventDefault();

const email = document.getElementById('email').value;


const password = document.getElementById('password').value;

createUserWithEmailAndPassword(auth, email, password)


.then((userCredential) => {
// Signed up successfully
const user = userCredential.user;
alert("User created successfully!");
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
// Handle the error, e.g., display an error message to the user
alert(`Error: ${errorCode} - ${errorMessage}`);
});
});

const db = getDatabase();

// Get a reference to the table body


const tbodyLoginForm = document.getElementById('tbody-loginform');
Ramniranjan Jhunjhunwala College Page 88
// Function to add a LoginForm entry to the table
function AddLoginFormEntryToTable(loginFormEntry) {
const trow = document.createElement("tr");
const tdEmail = document.createElement('td');
const tdTimestamp = document.createElement('td');

tdEmail.innerHTML = loginFormEntry.email;
tdTimestamp.innerHTML = loginFormEntry.timestamp;

trow.appendChild(tdEmail);
trow.appendChild(tdTimestamp);

tbodyLoginForm.appendChild(trow);
}

// Function to add all LoginForm entries to the table


function AddAllLoginFormEntriesToTable(loginFormEntries) {
tbodyLoginForm.innerHTML = "";
loginFormEntries.forEach(loginFormEntry => {
AddLoginFormEntryToTable(loginFormEntry);
});
}

// Function to get all data in real-time from Firebase


function GetAllLoginFormEntriesDataRealtime() {
const loginFormEntriesRef = ref(db, "LoginForm");

onValue(loginFormEntriesRef, (snapshot) => {


const loginFormEntries = [];
snapshot.forEach(childSnapshot => {
loginFormEntries.push(childSnapshot.val());
});
console.log("Login Form Entries:", loginFormEntries); // Add this line

AddAllLoginFormEntriesToTable(loginFormEntries);
});
}

// Trigger the function to get data once on window load


window.onload = GetAllLoginFormEntriesDataRealtime;
</script>

</body>
<footer class="site-footer">
<div class="footer-content">
Ramniranjan Jhunjhunwala College Page 89
<p>&copy; 2023 LOST NEEDS. All rights reserved.</p>
<p>Designed by SudeshDR</p>
<p id="visit-counter">Visit Counter: <span id="counter">0</span></p>
</div>
</footer>
</html>

5.3 Testing Approach

Usually testing begins when the whole software is developed successfully. But here we have followed
Iterative model where 1 module is developed and when next module is developed, previous module is
redeveloped resulting of a better version than before.
Software testing is a process, to evaluate the functionality of a software application with an intent to
find whether the developed software met the specified requirements or not and to identify the defects
to ensure that the product is defect free in order to produce the quality product.
Two types of testing performed on this project modules are

5.3.1 Unit Testing

Unit testing involves testing of each and every small module developer one after another. Here
modules are tested as and when they are developed. When the new module is developed, new module
and the previous module both are tested sequentially. All modules once created are tested and
improved before developing next module.

MODULE 1 (USERS) –login:


Firebase Users:

Ramniranjan Jhunjhunwala College Page 90


Authenticated User is Logging In:

Ramniranjan Jhunjhunwala College Page 91


Non authenticated Users Logging in:

Module 2 –POSTING ITEMS (USERS)

Firebase Before:

Ramniranjan Jhunjhunwala College Page 92


Firebase Realtime Database Updated:

Ramniranjan Jhunjhunwala College Page 93


Module 3- Inform Admin

Informing :

Ramniranjan Jhunjhunwala College Page 94


5.3.2 Integrated Testing

Integrated Testing is the phase in software testing in which individual software modules are combined
and tested as a group. Integration testing is conducted to evaluate the compliance of a system or
component with specified functional requirements. Here after successfully completing development
of all small modules, all modules are integrated together and hence the testing performed is called as
integrated testing.

5.3.3 Beta Testing

Beta testing is a crucial phase in the software development life cycle where a pre-release version of a
product is made available to a select group of users, known as beta testers, for real-world testing. This
phase allows developers to gather valuable feedback on the product's functionality, performance, and
usability before the official release to a wider audience.

Ramniranjan Jhunjhunwala College Page 95


5.4 Modifications and Improvements
After successful unit testing as well as integrated testing, a number of changes in frontend, backend,
logic lists down depending on each other. Since the system needs to be fully bug free and errorless,
thus modification in source code is a necessary part before deployment of software.
Some modifications performed in the system after testing-
➢ initially users are unable to see the password that what they are typing is correct or not. So after
modification in the code user are able to shoe/hide password.
And as I will be converting my Website to app I had to focus on being responsive with respect to css.
Making CSS responsive involves creating designs that adapt to different screen sizes and devices. Here
are some tips and techniques to help you make modifications and improvements to make your CSS
more responsive:

Use Media Queries:

Media queries allow you to apply specific CSS rules based on the characteristics of the device, such as
screen width, height, or device orientation.

Flexible Grids and Layouts

Use percentage-based widths instead of fixed pixel values for containers and columns to create flexible
layouts.

CSS frameworks like Bootstrap provide grid systems that automatically adjust based on screen size.

Fluid Images:

Set images to max-width: 100%; to ensure they scale proportionally within their parent container.

This prevents images from overflowing or breaking the layout on smaller screens.

Viewport Units:

Use viewport units (vw, vh, vmin, vmax) for font sizes, padding, and margins to make them relative to
the viewport size.

CSS Flexbox and Grid:

Utilize Flexbox and Grid layout systems for more control over the positioning and alignment of
elements.

These layouts make it easier to create responsive designs without relying heavily on media queries.

Font Sizes and Line Heights:

Set font sizes and line heights using relative units (em, rem) to ensure scalability across different
devices.

Ramniranjan Jhunjhunwala College Page 96


Hide/Show Content:

Use the display: none; property in media queries to hide or show specific content based on screen size.

This is useful for simplifying the layout on smaller screens.

Mobile-First Approach:

Start with the mobile layout and then use media queries to enhance the design for larger screens. This
approach ensures a better user experience on smaller devices.

Testing Across Devices:

Regularly test your responsive design on various devices and browsers to identify and address any
issues.

Ramniranjan Jhunjhunwala College Page 97


5.5 Test Cases

A TEST CASE is a set of conditions or variables under which a tester will determine whether
a system under test satisfies requirements or works correctly.
The process of developing test cases can also help find problems in the requirements or
design of a web application.

Test Test Test Test Data Expected Actual Pass/


Case Scenario Steps Results Results Fail
ID

T_0 Check 1. Go to User As Pa


1 User login Sudeshdr03@gmai should expec ss
Login screen. l.com login ted
with 2. into
valid Enter applicati
data. email on.
ID &
passwo
rd.
3. Click
Login.

T_0 Show/ 1. Go 123456 Passwor As Pa


2 Hide to d expec ss
passwor login should ted
d or display
signup
screen
.
2.
Enter
passwor
d.
3.
Click
on
show
button

T_0 Post 1.Go to Post Lost Needs Alert As Pa


3 Items items Documentation, should expec ss
2.Write Black book , be ted
description IT Lab 1, generate
of item Lost Date,Time
or found
3.Click
Submit

Ramniranjan Jhunjhunwala College Page 98


4. Inform 1.Go to Name,mobile Alert As Pa
Us inform us no,email,Title/me should expec ss
2.Write ssage be ted
deatils generate
Click Send d

Admin:

Test Test Test Test Expected Actual Pass/


Case Scenario Steps Data Results Results Fail
ID

T_05 View 1. Go to Display As Pass


Users Fetch Logins of expected
users users

T_06 View 1. Go to Display of As Pass


Items Fetch Items Lost expecte
Items. and found d.

T_07 View 1. Go to Display of As Pass


message Fetch Messages by expecte
s Messages users d.
.

T_08 Add 1.Go to Users is As Pass


users add added in expected
users firebase
2.Write Authenticatio
name n
and
email.
3. add
5.6 Execution of Project

Users:

1.Login By Users

Ramniranjan Jhunjhunwala College Page 99


2.Home page of users

Ramniranjan Jhunjhunwala College Page 100


3.Post items by users

4.Items in Firebase updated

Ramniranjan Jhunjhunwala College Page 101


5. Inform admin by users.

Ramniranjan Jhunjhunwala College Page 102


6. Message updated in admin.

Ramniranjan Jhunjhunwala College Page 103


Admin:
1.Login by admin

2.Admin dashboard

Ramniranjan Jhunjhunwala College Page 104


3.Fetch users by admin

4. Fetch messages by admin

5.Add users by admin

Ramniranjan Jhunjhunwala College Page 105


Firebase Authentication added:

HOSTING WEB-APPLICATION ONLINE:

Ramniranjan Jhunjhunwala College Page 106


Ramniranjan Jhunjhunwala College Page 107
Website link: http://lostneeds.kesug.com/index.html

Converting Web to App:

Ramniranjan Jhunjhunwala College Page 108


APP UI:

Ramniranjan Jhunjhunwala College Page 109


Ramniranjan Jhunjhunwala College Page 110
CHAPTER 6: RESULTS AND DISCUSSION
6.1 Test Reports

Test Report ID : TR_01

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : User

Description : User Login using his/her credentials

Result : Successful

Status: Pass

Test Report ID : TR_02

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : User

Description : Posting Items

Result : Successful

Status: Pass

Test Report ID : TR_03

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : User

Description : Informing Message.

Result : Successful

Status: Pass

Ramniranjan Jhunjhunwala College Page 111


Test Report ID : TR_04

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : User

Description : Logout

Result : Successful

Status: Pass

Test Report ID : TR_05

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : Admin

Description : Add user

Result : Successful

Status: Pass

Test Report ID : TR_06

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : Admin

Description : Fetch Items

Result : Successful

Status: Pass

Ramniranjan Jhunjhunwala College Page 112


Test Report ID : TR_07

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : Admin

Description : Fetch Messages

Result : Successful

Status: Pass

Test Report ID : TR_08

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : Admin

Description : Fetch Users

Result : Successful

Status: Pass

Ramniranjan Jhunjhunwala College Page 113


Test Report ID : TR_9

Date created : 03-09-2024

Created by : Sudesh Rajbhar

Actor : User

Description : Logout

Result : Successful

Status: Pass

6.2 User Documentation

lostneeds is a web application involving various actors, including authorized Users, each equipped with
distinct functionalities. The primary workflow of the lostneeds application revolves around user
registration. Users have the option to select a category of interest, where they can make choices from the
provided options.

Upon interaction, the correct selections are revealed at the bottom of the screen. Post-activity, the system
generates a score along with a personalized message, allowing users to view their performance immediately
or opt to see a detailed summary.

In addition to its core features, lostneeds offers users the ability to visit the developer's site and provide
valuable feedback for continuous improvement

Ramniranjan Jhunjhunwala College Page 114


CHAPTER 7: CONCLUSIONS
7.1 Conclusion

In conclusion, the Lost and Found web application, "LostNeeds," is designed to provide a user-
friendly platform for individuals to report and search for lost items. The application facilitates a
straightforward user experience, allowing users to register, submit information about lost items, and
browse through listings in search of their belongings.

LostNeeds not only streamlines the process of reporting lost items but also enhances the chances of
reuniting lost possessions with their owners. The system's functionality includes personalized score
generation and detailed summaries, offering users insights into their activities within the application.

Furthermore, LostNeeds encourages user engagement by providing an avenue for visitors to explore
the developer's site and contribute valuable feedback, fostering a sense of community and continuous
improvement.

Overall, LostNeeds aims to be a reliable and efficient solution for individuals dealing with lost and
found items, combining user-centric design with practical features to create a seamless experience in
the realm of lost possessions.

7.1.1 Significance of the System

The LostNeeds system holds significant importance in addressing the challenges associated with lost and
found items. Its key significance includes:

1.Efficient Retrieval: LostNeeds streamlines the process of reporting and searching for lost items,
significantly improving the efficiency of item retrieval.

2.User Convenience: Users benefit from a user-friendly interface, making it convenient to report lost items,
search for belongings, and receive detailed summaries of their activities.

3.Community Engagement: The system encourages community engagement by providing a platform for
users to share feedback, enhancing the overall user experience and fostering a sense of belonging.

4.Data-Driven Insights: The personalized scoring system and detailed summaries offer users insights into
their interactions, creating a more informed and engaged user community.

Ramniranjan Jhunjhunwala College Page 115


7.2 Limitations of the System

1.Dependency on User Input: The system relies on accurate and timely user input for lost item
reports, and the effectiveness is contingent on the active participation of the user community.

2.Limited Search Scope: The efficiency of item retrieval is constrained by the system's database, and
it may not cover all lost items, particularly if users do not utilize the platform widely.

3.Internet Connectivity: LostNeeds heavily depends on internet connectivity, and users without
access to a stable internet connection may experience limitations in using the system.

7.3 Future Scope of the Project

The LostNeeds project has promising avenues for future development and enhancement:

1.Integration with IoT: Exploring integration with Internet of Things (IoT) devices could enhance the
accuracy of locating lost items and provide real-time updates to users.

2.Mobile Applications: Developing dedicated mobile applications for LostNeeds would broaden its
accessibility, catering to a larger audience and promoting on-the-go usage.

3.Machine Learning Algorithms: Implementing machine learning algorithms could improve the
system's predictive capabilities, offering users tailored suggestions based on their activities.

4.Extended Collaboration: Partnering with local authorities, businesses, or community organizations


could extend the reach and impact of LostNeeds, making it a more comprehensive lost and found
solution.

5.Enhanced Security Measures: Implementing advanced security measures to protect user data and
ensure the integrity of lost item reports would further establish LostNeeds as a secure and trustworthy
platform.

Ramniranjan Jhunjhunwala College Page 116


8. REFERENCES

https://www.youtube.com/watch?v=BOITPwChVP4&t=11s

https://www.youtube.com/watch?
v=KnAsYNhI_CY&ab_channel=TheAmazingCodeverse

https://www.youtube.com/watch?
v=lEPGHKEx9yU&t=632s&ab_channel=TheAmazingCodeverse

https://www.youtube.com/watch?v=NYlthz0_wyo&t=1991s&ab_channel=AgCoding

Ramniranjan Jhunjhunwala College Page 117

You might also like