Professional Documents
Culture Documents
Fire Box Chat Application Report
Fire Box Chat Application Report
“FireBox-App”
JODHPUR
OF
(BATCH 2021-2024)
SUBMITTED BY
MALIK KHAN
SADIK
RAVI KUMAR
Mrs.SWETA BOHRA
(ASSISTANCT PROFESSOR)
LUCKY INSTITUTE OF PROFESSIONAL STUDIES
Affiliated to
Jodhpur
CERTIFICATE
MALIK KHAN
SADIK
RAVI KUMAR
in partial fulfillment of the degree of BCA III year Examination 2024, under my
supervision and guidance.
Mrs.SWETA BOHRA
Assistant Professor
Faculty of Information Technology
Date: _________________
ACKNOWLEDGMENT
The success and outcome of this Project report required a lot of guidance and assistance
from many people, and we are extremely privileged to have got this all along the
completion of the report. All that we have done is only due to such supervision and
assistance and we would not forget to thank them.
We are grateful to the mentor Mrs.SWETA BOHRA for giving guidelines to make
the report successful. The interest and attention which has shown so graciously lavished
upon this work.
We extend our thanks to Dr. Saurabh Khatri (HOD, IT) for his cooperation, guidance,
encouragement, inspiration, support, and attention led to complete this report.
We would like to give sincere thanks to Dr. Manish Kachhawaha (Director) and Mr.
Arjun Singh Sankhala (Principal) for providing cordial environment to exhibit my
abilities to the fullest.
Yours Sincerely,
SADIK
MALIK KHAN
RAVI KUMAR
DECLARATION
We SADIK MALIK and RAVI, hereby declare that this Project “FireBox APP” is a
record of original work done by me under the supervision and guidance of Mrs.SWETA
BOHRA.(Asst.Prof.).
We further certify that this report work has not formed the basis for the award of the
Degree/Diploma or similar work to any candidate of any university and no part of this
report is reproduced as it is from any source without seeking permission.
SADIK
MALIK KHAN
ABSTRACT
Key features of FireBox -APP include real-time messaging, group chats, announcements boards. These
features enable users to engage in meaningful conversations, coordinate group projects, and stay informed
about campus events.
The user interface of FireBox -APP is intuitive and user-friendly, ensuring ease of navigation for users of
all technical backgrounds. Customizable profiles allow users to personalize their accounts.
By fostering communication and collaboration, FireBox -APP contributes to a more connected and
cohesive college community. Whether used for academic purposes, extracurricular activities, or
administrative announcements, FireBox -APP serves as a central hub for college communication,
bringing students, faculty, and staff closer together.
In conclusion, FireBox -APP represents a valuable tool for college communities seeking to enhance
communication and collaboration among their members. With its user-friendly interface, comprehensive
features, and emphasis on security and privacy.
INDEX
S.NO TITLE PAGE NO
1 INTRODUCTION. 1
2 SYSTEM ANALYSIS 2
3 FEASIBILITY STUDY 4
5 SYSTEM DESIGN 8
6 PROJECT DESIGN 16
6.2 Coding 19
7 TESTING 32
8 FUTURE ENHANCEMENT 34
9 CONCLUSION 35
---- REFERENCES 36
CHAPTER 1-INTRODUCTION
In today's digitally connected world, communication plays a pivotal role in both personal and professional
spheres. Mobile applications have become indispensable tools for facilitating instant communication and
collaboration among individuals and groups. Chat applications have gained widespread popularity due to
their ability to enable real-time messaging, file sharing, and multimedia communication.
This report presents an analysis of the "Chat-Box app," a chat application developed using Flutter, a
versatile and rapidly growing framework for building cross-platform mobile applications. Flutter offers
developers a comprehensive toolkit for creating rich, interactive user interfaces and seamless user
experiences across Android, iOS, and web platforms. Leveraging Flutter's capabilities, the Chat-Box app
aims to provide users with a reliable and feature-rich messaging platform that fosters communication and
collaboration.
1
CHAPTER 2-System Analysis
Key Features
Real-Time Messaging: Facilitates instant communication between users with minimal latency.
Contact Management: Enables users to manage their contacts list, add new contacts, and block
or remove existing ones.
Group Chats: Supports the creation and participation in group conversations with multiple users.
Emojis : Enhances communication by offering a wide range of emojis.
Status Updates: Allows users to set and view status updates to inform their contacts about their
availability or mood
Technology Stack
Flutter: Developed using Flutter, a versatile UI toolkit for building natively compiled
applications for mobile, web, and desktop from a single codebase
Firebase: Firebase Realtime Database ensures real-time data synchronization for a seamless user
experience. Firebase Authentication provides secure login processes, prioritizing user privacy.
Firebase Cloud Storage securely stores multimedia content associated with tasks.
3
CHAPTER 3-FEASIBILITY STUDY
Feasibility study is the most important step in system analysis. It is the determination of whether the
project is feasible or not. Once it has been determined that a project is feasible, the analyst can go ahead
and prepare the project specification which finalizes project requirement.
It provides data about user requirements and a full identification of system objectives. A feasibility study
is carried out to select the best system that meets performance standards.
Statement of constraints: Encompassing all the factors that limit the solution of the problem.
Identification of specific system objectives.
Description of outputs as required by the users.
• Economic feasibility
• Technical feasibility
• Operational feasibility
4
software and hardware cost for the class of application being considered should be evaluated. By
implementing the computerized management software in our WedMart, we are able to store our record
electronically which replace the storage area, with this we are able to keep a backup of all our records.
This again helps in reducing the cost of stationery using earlier system and making our system
electronically better.
Economic analysis is the most frequently used method for evaluating the effectiveness of a new system.
More commonly known as cost/benefit analysis, the procedure is to determine the benefits and savings
that are expected from a candidate system and compare them with costs. If benefits outweigh costs, then
the decision is made to design and implement the system. An entrepreneur must accurately weight the
cost versus benefits before taking an action.
Economic Feasibility in this project:
5
The proposed system offers greater level of user-friendliness.
The proposed system produces best results and gives high performance.
Implemented easily. So, this project is operationally feasible.
6
CHAPTER 4-SYSTEM REQUIREMENT SPECIFICATIONS
1. 4.1 Hardware Requirements:
· RAM: Minimum 2GB (4GB recommended)
· Storage: Minimum 100MB available disk space
· Network: Stable internet connection for real-time messaging
· Display: Minimum resolution of 540x960 pixels
2. 4.2 Software Requirements:
· Operating System:
· Android: Android 6.0 (Marshmallow) or later
· iOS: iOS 11 or later
· Development Environment:
· Flutter SDK: Latest stable version installed
· Integrated Development Environment (IDE):
· Android Studio with Flutter plugin
· Visual Studio Code with Flutter extension
· Backend Services:
· Firebase: Used for backend services including authentication, real-time database,
and cloud storage
· Third-Party Integrations:
· APIs for multimedia services (e.g., cloud storage APIs for multimedia sharing)
· OAuth for third-party authentication (if required)
· Testing Tools:
· Emulators: Android Emulator, iOS Simulator for local testing
· Real Devices: Testing on actual Android and iOS devices
· Firebase Test Lab for automated testing on real devices (optional)
· Version Control:
· Git for version control and collaboration
7
CHAPTER 5-SYSTEM DESIGN
System Design is the most creative and challenging phase in the system life cycle. Design is the first step
into the development phase for any engineered product or system. Design is a creative process. A good
design is the key to effective system. System design is a solution how to approach the creation of a new
system. System design transforms a logic representation of what is required to do into the physical
specification. The specification is converted into physical reality during development.
In the existing Wedding Planner system, users need to waste a lot of time and physical effort in
finding the place for the event and no proper information is provided to the user regarding the
event details like food, decoration, and budget.
All the information is maintained in records which are difficult to view or modify.
Sometimes the users themselves are not able to make the selection according to their own choices,
but in this application the user will directly make all the choices to their likings and no mediator
will be placed between the vendor and the user.
The user will always stay in their budget and all his/her choices will be maintained neatly.
Includes the design of application, network, databases, user interfaces, and system interfaces
Logical Design
The logical flow defines the functionality of a system. It includes the following steps:
Reviews the current physical system – its data flows, file content, volumes, frequencies etc.
Prepares output specifications – that is, determines the format, content and frequency of reports.
Prepares input specifications – format, content and most of the input functions.
Prepares edit, security and control specifications.
Specifies the implementation plan.
Prepares a logical design walk through of the information flow, output, input, controls, and
implementation plan.
Reviews benefits, costs, target dates and system constraints.
Physical Design
Physical system produces the working systems by define the design specifications that tell the
programmers exactly what the candidate system must do. It includes the following steps:
Design the physical system.
Specify input and output media.
Design the database and specify backup procedures.
Design physical information flow through the system and a physical design Walk through.
8
Plan system implementation.
Prepare a conversion schedule and target date.
Determine training procedures, courses and timetable.
Devise a test and implementation plan and specify any new hardware/software.
Update benefits, costs, and conversion date and system constraints.
Chat History
Management
FirBox-app
Login
Management
9
First Level DFD - FireBox-App
FirBox-app
10
Second Level DFD - FireBox-App
11
5.2 E-R Diagrams
UserId
Passwo ProfileP has ReceiverID
rd ic
UserNa SenderID
Massages
me ReadTime
MsgID
SendTime ReadTime
Table Name:-User
Primerykey :User_Id
Unread LastMassag
Count eTime
UserId LastMassag
e
ProfilePi
Passwor
c
d
UserNam
e
12
Table Name:-Massages
Primerykey :Massage_Id
SendTime ReadTime
Massages
MassageTim ReceiverID
e
Massage SenderID
Table Name:Chat_Room
Primery_key:ID
Chat_Room
ID
13
5.3 Database Structure
TableName user
Primery Key:UserId
TableName :Chat_Room
Primerykey:ID
14
TableName :Massages
Primery Key:MassageID
15
CHAPTER 6-PROJECT DESIGN
16
17
18
6.2
6.2 Coding
Firebase.dart
import 'dart:async';
import 'package:chat_app/pref/shafed_pref.dart';
import 'package:chat_app/screens/onbording_screen/sign_in.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../bottom_nav_page.dart';
19
@override
State<Splash> createState() => _SplashState();
}
20
}
}
Sign_in.dart
import 'package:chat_app/firebase/firebase.dart';
import 'package:chat_app/screens/onbording_screen/sign_up.dart';
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@override
State<SignIn> createState() => _SignInState();
}
22
width:MediaQuery.of(context).size.width*0.7,
child: ElevatedButton(
onPressed: () {
FirebaseFeatures().firebaseAuthSignIn(emailController.text, passController.text, context);
},
style: ButtonStyle(backgroundColor:MaterialStateProperty.all(Colors.red) ),
child:Text('Sign In',style: TextStyle(fontSize: 25.sp,color: Colors.white),) ,
),
),
SizedBox(height: 10.h,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text('Don\'t have account ? ',style: TextStyle(fontSize: 13.sp,color: Colors.red.shade600),),
InkWell(
onTap: (){
Navigator.push(context, MaterialPageRoute(builder: (context)=>const SignUp()));
},
child: Text('SignUp Now',style: TextStyle(fontSize: 13.sp,color: Colors.black),)),
],
),
],
),
),
);
}
Widget mTextField(
{
required double widthByMQ,
required String textFiledHeading,
required String hintText, bool isTherePassword=false,required TextEditingController controller
}){
return Container(
23
height: 100.h,
width: widthByMQ,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.5.sp),
// color: Colors.red.shade50
),
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(textFiledHeading,style: TextStyle(fontSize: 15.sp,fontWeight: FontWeight.w400),),
SizedBox(
height: 55.h,
width: widthByMQ,
child: TextField(
obscureText: isTherePassword?mObscureText:false,
controller: controller,
decoration: InputDecoration(
hintText: hintText,
suffixIcon:isTherePassword!=false? InkWell(
onTap: (){
setState(() {
mObscureText=!mObscureText;
});
},
child: Icon(mObscureText?FluentIcons.eye_20_filled:FluentIcons.eye_20_regular)):null,
hintStyle: TextStyle(
color: Colors.red.shade400,
fontSize: 15.sp,
fontWeight: FontWeight.w300),
filled: true,
fillColor: Colors.red.shade50,
focusedBorder: OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(22.5.sp)),
24
borderSide: const BorderSide(
color: Colors.red,
width: 1,
style: BorderStyle.solid)),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(22.5.sp))),
),
),
],
),
)
);
}
}
class MyClipPath extends CustomClipper<Path>{
@override
Path getClip(Size size) {
double w=size.width;
double h=size.height;
Path mPath=Path();
mPath.lineTo(0,h);
mPath.quadraticBezierTo(w*0.1,h-100,w*5,h);
//mPath.lineTo(w,h);
mPath.lineTo(w,0);
// mPath.lineTo(,size.height);
mPath.close();
return mPath;
}
@override
bool shouldReclip(covariant CustomClipper<Path> oldClipper) {
return true;
}
}
25
Sign_up.dart
import 'package:chat_app/custom_widget/custom_widget.dart';
import 'package:chat_app/firebase/firebase.dart';
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@override
State<SignUp> createState() => _SignUpState();
}
@override
Widget build(BuildContext context) {
final Size size = MediaQuery.of(context).size;
return Scaffold(
backgroundColor: Colors.red.shade100,
body: SingleChildScrollView(
child: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
26
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'Sign Up Now!',
style: TextStyle(
color: Colors.white,
fontSize: 35.sp,
fontWeight: FontWeight.w800,
),
),
Container(
height: size.height * 0.7,
width: size.width,
margin: EdgeInsets.all(15.sp),
padding: EdgeInsets.all(15.sp),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15.sp),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildNameNumberRow(size),
_buildTextField(size, "Email", "Enter your email", emailController, isPassword: false),
_buildTextField(size, "Password", "Enter your password", passController, isPassword: true),
_buildTextField(size, "ReCheck", "Check your Password", checkPassController, isPassword:
true),
],
),
),
SizedBox(
height: 55.h,
width: size.width * 0.9,
child: ElevatedButton(
27
onPressed: () => _signUpButtonPressed(),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.red),
),
child: Center(
child: Text(
'Create Account',
style: TextStyle(fontSize: 25.sp, color: Colors.white),
),
),
),
),
],
),
),
),
);
}
28
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
heading,
style: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w400),
),
SizedBox(
height: 55.h,
width: size.width,
child: TextField(
obscureText: isPassword?obscureText:false,
onChanged: (value) => _handleTextChanged(value),
keyboardType: keyboardType,
controller: controller,
decoration: _buildInputDecoration(hintText, isPassword),
),
),
],
),
);
}
29
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(22.5.sp)),
borderSide: const BorderSide(color: Colors.red, width: 1, style: BorderStyle.solid),
),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(22.5.sp),
),
);
}
void _togglePasswordVisibility() {
setState(() {
obscureText = !obscureText;
});
}
30
Navigator.pop(context);
} else {
// Display the sign-up error if there is one
if (signUpError != null) {
AppWidget.errorBox(signUpError, context);
} else {
AppWidget.errorBox(errorMessage, context);
}
}
}
textFieldValidation() {
if (nameController.text.isEmpty || emailController.text.isEmpty) {
errorMessage = emailController.text.isEmpty ? 'Email field is required' : 'Name should be entered';
} else if (numberController.text.isEmpty || numberController.text.length != 10) {
errorMessage = 'Please enter a valid mobile number!';
} else if (passController.text.length < 8) {
errorMessage = 'Password length should be greater than or equal to 8!';
} else if (passController.text != checkPassController.text) {
errorMessage = 'Passwords do not match!';
isThereSignInError=true;
} else if (passController.text == checkPassController.text) {
isThereSignInError=false;
}else if (RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(emailController.text)) {
errorMessage = 'email matched';
} else {
errorMessage = 'Please enter a valid email format';
}
setState(() {});
}
}
31
CHAPTER 7- TESTING
Testing plays a vital role in the success of the system. Once program code has been developed, testing
begins. The testing process focuses on the logical internals of the software, ensuring that all statements
have been tested, and on the functional externals, that is conducted tests to uncover errors and ensure that
defined input will produce actual results that agree with requires results. Testing is a process of executing
a program with the intent of finding the error.
32
2.0 Register/s Clicked on Register Sign up Sign up page is Success
ig n up Button of Home Page window opening
3.1 View After Login View Should be After Login It’s Success
Profile should be showing after showing
profile
show login
4.0 Logout After Login , Logout Logout option It’s Showing Success
button should be should be
show showing after
Login
33
CHAPTER 8-FUTURE ENHANCEMENT
34
CHAPTER 9-CONCLUSION
In conclusion, the future enhancements for the "Fire-Box App" aim to make chatting safer, more
enjoyable, and accessible to everyone. By adding features like advanced reporting, sentiment analysis,
and improved privacy options, we're committed to creating a platform where users feel comfortable and
respected. we're striving to foster a welcoming community where users can connect seamlessly and
engage in meaningful conversations.
In summary, the enhancements planned for the "Fire-Box App" promise to elevate the chatting experience
for users. By introducing features like advanced reporting and sentiment analysis, we're prioritizing safety
and positivity within our community. Additionally, improvements in privacy settings and accessibility
will ensure that all users feel comfortable and included. With these updates, we're dedicated to building a
vibrant and engaging platform where everyone can connect easily and enjoy meaningful conversations.
35
REFERENCES
36