Flutter Project Documentation
Flutter Project Documentation
submitted by
Bedatree Karmakar
MCA
In the
of
at
Ardent Computech Pvt. Ltd.
CERTIFICATE FROM SUPERVISOR
This is to certify that Bedatree Karmakar have completed the project titled "OTT Platform - CLUSTER" under my
supervision during the period from “06.07.2024” to “10.08.24” which is in partial fulfilment of requirements for the
award of the MCA degree and submitted to the Department of “Computer Application” of “Future Institute of
Engineering and Management”.
___________________________
Date:
Certified that this project work was carried out under my supervision
The achievement associated with the successful completion of any task would be completed by mentioning the names
of those whose endless cooperation made it possible. Their constant guidance and encouragement made all our efforts
successful.
We take this opportunity to express our deep gratitude towards our project mentor, Mr. Anindya Mukherjee for giving
such valuable suggestions, guidance, and encouragement during the development of this project work.
Last but not least we are grateful to all Ardent Computech Pvt. Ltd. faculty members for their support.
ABSTRACT OF THE PROJECT
The rapid advancement of digital technology has significantly transformed the entertainment industry, leading to the
proliferation of Over-The-Top (OTT) platforms that deliver streaming content directly to viewers via the internet. The
project "OTT Platform - CLUSTER" aims to develop a comprehensive and user-friendly OTT platform that offers a
seamless streaming experience for a diverse range of content, including movies, TV shows, documentaries, and live
events.
The core objective of CLUSTER is to provide a robust, scalable, and highly available platform that caters to the growing
demand for digital content consumption. The platform will leverage cutting-edge technologies to ensure high-quality
video streaming, adaptive bitrate streaming, and minimal latency, thus enhancing the viewer's experience. Key features
of CLUSTER include personalized content recommendations, user profiles, secure content delivery, offline viewing,
and multi-device synchronization.
Overall, CLUSTER aims to redefine the OTT landscape by delivering a superior streaming experience, fostering a
community of engaged viewers, and empowering content creators to reach a global audience.
CONTENTS
1 Introduction
9 Conclusion
Cluster is an innovative Over-The-Top (OTT) platform developed using Flutter and Dart, designed to
deliver seamless streaming experiences across various devices. This project leverages the powerful
capabilities of Flutter to provide a highly responsive and visually appealing user interface, ensuring that
users can enjoy their favourite content without any interruptions.
Cluster is an advanced OTT platform developed using Flutter and Dart, designed to deliver seamless,
high-quality streaming across multiple devices. It offers an extensive library of movies, TV shows, and
documentaries, categorized by genre, popularity, and new releases, making content discovery
effortless. Key features include adaptive streaming technology for smooth viewing, personalized
recommendations, multiple user profiles with customizable avatars, and options for offline viewing.
Cluster integrates secure user authentication via Firebase and maintains real-time data synchronization
with Cloud. Users can create watchlists, receive real-time notifications about new content, and utilize
customizable parental controls for a safe viewing environment. The platform’s intuitive design ensures a
consistent, high-quality experience across smartphones, tablets, and smart TVs.
Built to set a new standard in streaming, Cluster combines advanced technology with user-centric
features, catering to diverse entertainment needs worldwide. Whether enjoying the latest blockbuster,
binge-watching a TV series, or exploring documentaries, Cluster provides a top-tier, personalized
streaming experience, positioning itself as the go-to OTT platform for entertainment enthusiasts.
SCOPE OF THE PROJECT
The scope of the Cluster OTT platform project encompasses the development, deployment, and
continuous enhancement of a comprehensive streaming service designed to meet the diverse
entertainment needs of users globally. The project will focus on the following key areas:
• Developing the system, which meets the SRS and solving all the requirements of the system.
• Demonstrating the system and installing the system at client’s location after acceptance testing
is successful.
• Submitting the required user manual describing the system interfaces to work on it and also the
documents of the system.
• Conducting any user training that might be needed for using the system.
• Maintain the system for a period of one year after installation.
Conceptual data model: The conceptual ER model normally definesmaster reference data entities that
are commonly used by the organization. Developing an enterprise-wide conceptual ER model isuseful
to support documenting the data architecture for an organization. A conceptual ER model may be
used as the foundationfor one or more logical data models . The purpose of the conceptual ER model
is then to establish structural metadata commonality for the master data entities between the set of
logical ER models.
Logical data model: The logical ER model contains more detail thanthe conceptual ER model. In
addition to master data entities, operational and transactional data entities are now defined. The
details of each data entity are developed and the relationships between these data entities are
established. The logical ER model ishowever developed independent of technology into which it can be
implemented.
Physical data model: One or more physical ER models may be developed from each logical ER model.
The physical ER model is normally developed to be instantiated as a database. Therefore, eachphysical
ER model must contain enough detail to produce a databaseand each physical ER model is technology
dependent since each database management system is somewhat different.
The physical model is normally instantiated in the structural metadata of a database management
system as relational database objects, database tables, database indexes such as unique keyindexes,
and database constraints such as a foreign key constraint ora commonality constraint. The ER model is
also normally used to design modifications to the relational database objects and to maintain the
structural metadata of the database.
The first stage of information system design uses these models during the requirements analysis to
describe information needs or the type of information that is to be stored in a database. The data
modeling technique can be used to describe any ontology (i.e. an overview and classifications of used
terms and their relationships) fora certain area of interest. In the case of the design of an information
system that is based on a database, the conceptual data model is, at a later stage (usually called logical
design), mapped to a logical data model, such as the relational model; this in turn is mapped to a
physical model during physical design. Note that sometimes, both of these phases are referred to as
"physical design". It is also used indatabase management system.
CARDINALITY:
ER-DIAGRAM:
1 1
1 1
1
1 1
Many
1 Many
DATA FLOW DIAGRAM
A data flow diagram (DFD) is a graphical representation of the "flow" of data through an information
system, modelling its process aspects. A DFD is often used as a preliminary step to create an overview of
the system, which can later be elaborated. DFDs can also be used for the visualization of data processing
(structured design).
A DFD shows what kind of information will be input to and output from the system, where the data will
come from and go to, and where the data will be stored. It does not show information about the timing of
process or information about whether processes will operate in sequence or in parallel (which is shown on
a flowchart).
This context-level DFD is next "exploded", to produce a Level 1 DFD that shows some of the detail of the
system being model. The Level 1 DFD shows how the system is divided into sub-systems (processes), each
of whi1ch deals with one or more of the data flows to or from an external agent, and which together
provide all of the functionality of the system as a whole. It also identifies internal data stores that must be
present in order for the system to do its job, and shows the flow of data between the various parts of the
system.
Data flow diagrams are one of the three essential perspectives of the structured-systems analysis and
design method SSADM. The sponsor of a project and the end users will need to be briefed and consulted
throughout all stages of a system's evolution. With a data flow diagram, users are able to visualize how the
system will operate, what the system will accomplish, and how the system will be implemented. The old
system's dataflow diagrams can be drawn up and compared with the new system's data flow diagrams to
draw comparisons to implement a more efficient system. Data flow diagrams can be used to provide the
end user with a physical idea of where the data they input ultimately has an effect upon the structure of
the whole system from order to dispatch to report. How any system is developed can be determined
through a data flow diagram model.
In the course of developing a set of level data flow diagrams the analyst/designer is forced to address how
the system may be decomposed into component sub-systems, and to identify the transaction data in the
data model. Data flow diagrams can be used in both Analysis and Design phase of the SDLC. There are
different notations to draw data flow diagrams. defining different visual representations for processes, data
stores, data flow, and external entities.
DFD NOTATION:
Steps to Construct Data Flow Diagram:-
Four Steps are generally used to construct a DFD.
• Process should be named and referred for easy reference. Each name should be representative of
the reference.
• The destination of flow is from top to bottom and from left to right.
• When a process is distributed into lower level details they are numbered.
• The names of data stores, sources and destinations are written in capital letters.
import 'package:ott_1/Pages/login.dart';
import 'package:ott_1/widgets/CustomNavBar.dart';
import 'package:ott_1/widgets/profilewidget.dart';
@override
return Scaffold(
appBar: AppBar(
backgroundColor: Color(0xFF292B37),
leading: BackButton(
color: Colors.white,
),
title: Center(
child: Text(
'ACCOUNT TAB',
style: TextStyle(
fontSize: 40, fontWeight: FontWeight.w500, color: Colors.white),
),
),
),
body: Padding(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
// Profile Image
Center(
child: CircleAvatar(
radius: 50,
backgroundImage: AssetImage(
),
),
),
SizedBox(height: 20),
// User Name
Text(
'USER PROFILE',
style: TextStyle(
color: Colors.green,
fontSize: 24,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 10),
// User Email
Text(
style: TextStyle(
fontSize: 16,
color: Colors.grey[600],
),
),
SizedBox(height: 30),
// Logout Button
ElevatedButton.icon(
onPressed: () {
showDialog(
context: context,
return AlertDialog(
title: Text('Logout'),
actions: [
TextButton(
child: Text('Cancel'),
onPressed: () {
Navigator.of(context).pop();
},
),
TextButton(
child: Text('Logout'),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
));
},
),
],
);
},
);
},
icon: Icon(Icons.logout),
label: Text('Logout'),
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: Colors.red,
textStyle: TextStyle(
fontSize: 18,
),
),
),
SizedBox(height: 25),
profilewidget()
],
),
),
bottomNavigationBar: CustomNavBar(),
);
}
CLUSTER Homepage Screenshot:
import "package:flutter/material.dart";
import "package:ott_1/Pages/profile.dart";
import "package:ott_1/widgets/CustomNavBar.dart";
import "package:ott_1/widgets/NewMoviesWidget.dart";
import "package:ott_1/widgets/UpcomingWidget.dart";
const homepage({super.key});
@override
@override
return Scaffold(
body: SingleChildScrollView(
child: SafeArea(
child: Column(
children: [
Padding(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Welcome",
style: TextStyle(
color: Colors.red,
fontSize: 30,
fontWeight: FontWeight.w600,
),
),
Text(
"What to watch?",
style: TextStyle(
color: Colors.white54,
),
),
],
),
ClipRRect(
borderRadius: BorderRadius.circular(30),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
));
},
child: Image.asset(
"images/profile.jpg",
height: 60,
width: 60,
),
),
],
),
),
Container(
height: 65,
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Color(0xFF292B37),
borderRadius: BorderRadius.circular(27),
),
child: Row(
children: [
Icon(
Icons.search,
color: Colors.white54,
size: 27,
),
Container(
width: 280,
decoration: InputDecoration(
border: InputBorder.none,
hintText: "seacrh",
),
),
],
),
),
SizedBox(height: 30),
UpcomingWidget(),
SizedBox(
height: 40,
),
NewMoviesWidget(),
],
),
),
),
bottomNavigationBar: CustomNavBar(),
);
}
CLUSTER Login Page Screenshot:
import 'package:flutter/material.dart';
import 'package:ott_1/Pages/HomePage.dart';
import 'package:ott_1/Pages/forgotpassword.dart';
const mylogin({super.key});
@override
@override
void login() {
_auth.signInWithEmailAndPassword(
Navigator.push(
return Container(
decoration: BoxDecoration(
image: DecorationImage(
),
child: Scaffold(
backgroundColor: Colors.transparent,
body: Stack(
children: [
Container(
child: Text(
"WELCOME",
style: TextStyle(
color: Colors.white,
fontSize: 33,
fontWeight: FontWeight.bold),
),
),
SingleChildScrollView(
child: Container(
padding: EdgeInsets.only(
left: 35,
right: 35),
child: Form(
key: _formkey,
child: Column(
children: [
TextFormField(
controller: emailcontroller,
decoration: InputDecoration(
labelText: "EMAIL",
labelStyle: TextStyle(
color: Colors.purple,
fontSize: 19,
fontWeight: FontWeight.bold),
fillColor: Colors.grey.shade100,
filled: true,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10)),
),
validator: (value) {
if (value!.isEmpty
// !RegExp(r'^[\w-\.}+@([\w-]+\.)+[\w-]{2,4}')
// .hasMatch(value!)
){
} else {
return null;
},
),
SizedBox(
height: 30,
),
TextFormField(
controller: passwordcontroller,
obscureText: true,
decoration: InputDecoration(
labelText: "PASSWORD",
labelStyle: TextStyle(
color: Colors.purple,
fontSize: 19,
fontWeight: FontWeight.bold),
fillColor: Colors.grey.shade100,
filled: true,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10)),
),
validator: (value) {
if (value!.isEmpty) {
return null;
},
),
SizedBox(
height: 40,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"LOGIN",
style: TextStyle(
fontSize: 27,
fontWeight: FontWeight.w700,
color: Colors.cyanAccent,
),
),
CircleAvatar(
radius: 30,
backgroundColor: Colors.yellow,
child: IconButton(
color: Colors.black,
onPressed: () {
if (_formkey.currentState!.validate()) {
login();
},
icon: Icon(Icons.arrow_forward)),
),
],
),
SizedBox(
height: 40,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
TextButton(
onPressed: () {
Navigator.pushNamed(context, "register");
},
child: Text(
"SIGN UP",
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 18,
color: Colors.cyanAccent),
),
),
TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
},
child: Text(
"FORGOT PASSWORD",
style: TextStyle(
decoration: TextDecoration.underline,
fontSize: 18,
color: Colors.cyanAccent),
),
),
],
],
),
),
),
),
],
),
),
);
}
IMPLEMENTATION & TESTING
A software system test plan is a document that describes the objectives, scope, approach and focus of
software testing effort. The process of preparing a test plan is a usual way to think the efforts needed to
validate the acceptability of a software product. The complete document will help people outside the test
group understand the "WHY" and "HOW" product validation. It should be through enough to be useful but
not so through that no one outside the test group will read it.
INTRODUCTION TO TESTING: Testing is the process of running a system with the intention of finding errors.
Testing enhances the integrity of a system by detecting deviations in design and errors in the system.
Testing aims at detecting error-prone areas. This helps in the prevention of errors in a system. Testing also
adds value to the product by conforming to the user requirements.
The main purpose of testing is to detect errors and error-prone areas in a system. Testing must be thorough
and well-planned. A partially tested system is as bad as an untested system. And the price of an untested
and under-tested system is high.
The implementation is the final and important phase. It involves user-training, system testing in order to
ensure successful running of the proposed system. The user tests the system and changes are made
according to their needs. The testing involves the testing of the developed system using various kinds of
data. While testing, errors are noted and correctness is the mode.
OBJECTIVES OF TESTING: The objective our test plan is to find and report as many bugs as possible to
improve the integrity of our program. Although exhaustive testing is not possible, we will exercise a broad
range of tests to achieve our goal. Our user interface to utilize these functions is designed to be user-
friendly and provide easy manipulation of the tree. The application will only be used as a demonstration
tool, but we would like to ensure that it could be run from a variety of platforms with little impact on
performance or usability.
PROCESS OVERVIEW: The following represents the overall flow of the testing process:
1. Identify the requirements to be tested. All test cases shall be derived using the current Program
Specification.
2. Identify which particular test(s) will be used to test each module.
3. Review the test data and test cases to ensure that the unit has been thoroughly verified and that the
test data and test cases are adequate to verify proper operation of the unit.
4. Identify the expected results for each test.
5. Document the test case configuration, test data, and expected results.
6. Perform the test(s).
7. Document the test data, test cases, and test configuration used during the testing process. This
information shall be submitted via the Unit/System Test Report (STR).
8. Successful unit testing is required before the unit is eligible for component integration/system testing.
9. Unsuccessful testing requires a Bug Report Form to be generated. This document shall describe the test
case, the problem encountered, its possible cause, and the sequence of events that led to the problem.
It shall be used as a basis for later technical analysis.
10.Test documents and reports shall be submitted. Any specifications to be reviewed, revised, or updated
shall be handled immediately.
TEST CASES: A test case is a document that describe an input, action, or event and expected response, to
determine if a feature of an application is working correctly. A test case should contain particular such as
test case identifier, test condition, input data.
TESTING STEPS
UNIT TESTING: Unit testing focuses efforts on the smallest unit of software design. This is known as module
testing. The modules are tested separately. The test is carried out during programming stage itself. In this
step, each module is found to be working satisfactory as regards to the expected output from the module.
INTEGRATION TESTING: Data can be lost across an interface. One module can have an adverse effect on
another, sub functions, when combined, may not be linked in desired manner in major functions.
Integration testing is a systematic approach for constructing the program structure, while
at the same time conducting test to uncover errors associated within the interface. The objective is to take
unit tested modules and builds program structure. All the modules are combined and tested as a whole.
VALIDATION: At the culmination of the integration testing, Software is completely assembled as a package.
Interfacing errors have been uncovered and corrected and a final series of software test begin in validation
testing. Validation testing can be defined in many ways, but a simple definition is that the validation
succeeds when the software functions in a manner that is expected by the customer. After validation test
has been conducted, one of the three possible conditions exists.
a) The function or performance characteristics confirm to specification and are accepted.
b) A deviation from specification is uncovered and a deficiency lists is created.
c) Proposed system under consideration has been tested by using Validation test and found to be
working satisfactory.
The user should enter his/ her accurate mail- id and password so
that he/she can able to go for the further options. The test case will
Test Case Description
check the application for the same since a user can only login with
the correct user id, password.
Item(s) to be tested
Specifications
POSITIVE
Tested By: Subham Dutta Chowdhury
User will enter the details in the registration form and the credentials
will be checked by the validators used in the form. If the user’s
Test Case Description
credentials does match to the existing details then an error message
will be shown and the email already exist.
Item(s) to be tested
1 The entered credentials match or not. If not the registered user gets the option to register.
Specifications
WHITE BOX TESTING: In white box testing, the UI is bypassed. Inputs and outputs are tested directly at the
code level and the results are compared against specifications. This form of testing ignores the function of
the program under test and will focus only on its code and the structure of that code. Test case designers
shall generate cases that not only cause each condition to take on all possible values at least once, but that
cause each such condition to be executed at least once. To ensure this happens, we will be applying Branch
Testing. Because the functionality of the program is relatively simple, this method will be feasible to apply.
Each function of the binary tree repository is executed independently; therefore, a program flow for each
function has been derived from the code.
BLACK BOX TESTING: Black box testing typically involves running through every possible input to verify that
it results in the right outputs using the software as an end-user would. We have decided to perform
Equivalence Partitioning and Boundary Value Analysis testing on our application.
SYSTEM TESTING: The goals of system testing are to detect faults that can only be exposed by testing the
entire integrated system or some major part of it. Generally, system testing is mainly concerned with areas
such as performance, security, validation, load/stress, and configuration sensitivity. But in our case well
focus only on function validation and performance. And in both cases we will use the black-box method of
testing.
OUTPUT TESTING: After performing the validation testing, the next step is output testing of the proposed
system, since no system could be useful if it does not produce the required output in a specific format. The
output format on the screen is found to be correct. The format was designed in the system design time
according to the user needs. For the hard copy also; the output comes as per the specified requirements by
the user. Hence output testing did not result in any correction for the system.
USER ACCEPTANCE TESTING: User acceptance of a system is the key factor for the success of any system.
The system under consideration is tested for the user acceptance by constantly keeping in touch with the
prospective system users at the time of developing and making changes whenever required.
This is done in regard to the following point:
a) Input Screen Design
b) Output Screen Design
c) Format of reports and other outputs.
GOAL OF TESTING: "Program testing can be used to slow the presence of bug, but never to slow their
absence." If the results delivered by the system are different from the excepted ones then the system is
incorrect and these bugs should be fixed.
FUTURE SCOPE & FURTHER ENHANCEMENT
Cluster aims to continually evolve and expand its capabilities to meet the ever-changing demands of the
digital entertainment industry. The future scope and potential enhancements of the platform include:
1. Content Expansion:
o Broaden the content library by partnering with more studios and content creators to offer a
wider range of genres, including live sports, news, and exclusive original programming.
o Integrate user-generated content features to enable content creators to upload and share
their videos directly on the platform.
2. Advanced Personalization:
o Implement machine learning algorithms to provide even more accurate and personalized
content recommendations based on user behaviour, preferences, and viewing history.
o Develop AI-driven content curation to create personalized playlists and thematic collections
for users.
3. Security and Privacy:
o Continuously improve security measures to protect user data and privacy, including
implementing end-to-end encryption and multi-factor authentication.
o Regularly update the platform to address new security threats and vulnerabilities.
4. Monetization Strategies:
o Explore additional monetization strategies, such as ad-supported content, premium
subscriptions with exclusive benefits, and pay-per-view events.
o Develop partnerships with brands for in-app advertising and sponsored content.
Cluster aims to stay at the forefront of the OTT industry by adopting the latest technologies and trends,
ensuring a continually enhanced and engaging experience for its users. Through these future
developments, Cluster will solidify its position as a leading OTT platform, catering to the diverse and
evolving needs of global audiences.
CONCLUSION
This project has been appreciated by all the users in the organization. It is easy to use, since it uses the GUI
provided in the user dialog. User friendly screens are provided. The usage of software increases the
efficiency, decreases the effort. It has been efficiently employed as a Site management mechanism. It has
been thoroughly tested and implemented.
BIBLIOGRAPHY
• https://www.w3schools.com
• https://www.slideshare.com
• https://www.scribd.com
• https://www.tutorialspoint.com
• https://www.geeksforgeeks.org.com
• https://www.youtube.com
• https://www.javatpoint.com
THANK YOU