Project Purpose
The purpose behind building this flutter application was to provide an interactive and transparent platform for the most prominent welfare society “Project Topi “. This Application will help the Society “Project Topi” in their campaign reach and help them in collection of more donations due to a trans.
Product Scope
This is a very interesting and easy to use application. Initially it is to provide the local welfare society with the latest technical advantage over other societies on campus and to have more transparent and more responsive system. It includes a notification system to notify all the donners of the ongoing or upcoming activities. It also has a home page which is same as in the concept of Facebook wall because it is where the admin can post all the campaigns related activities to keep up with his audience.
This application supports transaction from various sources such as Visa or Mastercard and Easypaisa. On the success of this application, we also wish to take it on commercial scale to other NGOs for. So, this is kind of trail and learning experience for us.
Product Perspective
The product is a new, self-contained product.
Product Functions
The user will be able to:
- Perform transactions.
- Register
- Login
- Edit information.
- Post a card.
User Classes and Characteristics
The people using this application will be anyone who wishes to donate blood or charity. They include students, teachers, NGO’s, patients, adults, teenagers etc. Basically everyone.
Operating Environment
This app will operate on Flutter and Firebase.
Design and Implementation Constraints
There will be few developers options such as, approving the posts, managing the clients, monitoring the activity, and keeping record of the transactions. There will be two separate interfaces for the client and the administrator. All records and necessary data will be held in firebase. English will be the only language used in the app.
User Documentation
None needed.
Specific Requirements
User Interfaces
There are a total of seven interfaces.
Login Interface:
Login interface includes sign-in with email and password. It also checks for the validation of the credentials entered. Furthermore, it contains a Facebook login and a button for Registration interface.
Registration Interface:
The characteristics include Text Fields for user information including its blood type. Error messages are displayed on fields not filled.
Loading Screen:
It appears mostly when some data is being loaded from the real-time database.
Blood Donation Interface:
This interface displays notifications for the users about different blood campaigns related to their blood groups.
Charity Interface:
This interface displays cards which contain information of the needy people. A user can click on any card and donate whatever amount it prefers.
Account Information Interface:
This interface contains the user data. It can edit its information and sign-out from there.
Transaction Interface:
This interface is mostly reached when a user decides to donate money.
Hardware Interfaces
There is no hardware interface.
Software Interfaces
There are mainly three interfaces for this application.
1. User Interface:
This mainly constitutes of all the functionalities of the application. A front-end of the application. The user interface will connect with the firebase interface and the transaction interface on different occasions. Whenever it wants to login or change/update its data, it’ll connect with the firebase interface. On the other hand, to make all the transactions, it’ll connect with the Transaction interface.
2. Firebase Interface:
This interface includes all the back-end. The data of the user stored in a real-time database to confirm and validate all of what the user does.
3. Transaction Interface:
In this interface, the user connects with some banking system to transfer its money.
Communications Interfaces
This application will basically use the notification system to connect with the user. It does not have any inter communication system for the users for it’s just a donation app more than a social media app.
Functional Requirement
The product provides with the functional requirements of transaction system, user authentication, registration system and notification system.
User Authentication System
User Authentication system allows only validated users to enter the application and avoid unwanted transaction of money.
A. Description and Priority
This functional requirement is of high priority because we need to authenticate the user before its transactions are made. Also, we want to store the amount of money transferred by the user in a class so we would need this function. Email and password of the user have the benefit of saving the user from getting hacked or retrieving the password from email if forgot. Phone number does not hold much priority. We might need it if the user has forgot both his email and password.
B. Stimulus/Response Sequences
First, the user enters its email and password. As soon as he clicks on “Login”, the credentials are captured by the system and they are validated by the firebase where all the data of the user is stored. If its validated data, he’s allowed to enter the app, otherwise, the system returns an error message explaining that it entered the wrong credentials.
C. Functional Requirements
For this function to be executed, there must be a database where all the data is stored such as the user credentials. Moreover, the system should have access to the firebase. A database reference of the firebase is created in which all the credentials from all the users are saved. If the user enters invalid arguments, an error message is displayed on what it should correct. If it does not know how, it can always reach the “Forgot Password” button where it will be provided with the new password as soon as it enters its email.
- Email Field: A field to fill the email credential
- Password Field: A field to fill the email credential
- Error Message: A message displayed as soon as wrong credentials are entered
- Login Button: As soon as it is pressed, the credentials should be sent for validation
- Firebase: The backend where all the data is stored
Registration System
Registration System stores all the user data in the firebase.
Description and Priority
This functional requirement is of high priority too because we need the email and password to authenticate the user when it wants to login. Also, we need to store the data of the users on a firebase so we know when to notify them of different things. A form field, called the Blood Type field is of the highest priority (9). We need it to notify the user of the nearby blood donation campaigns or if someone needs blood of their type. Name is of low priority (3). Email and password are of priority (9) as explained earlier.
Stimulus/Response Sequences
The user needs to fill the name, email, password, age, phone number and blood type to complete registration. As soon as he presses on “Register”, the email he entered is sent for verification and a new verification interface is displayed which notifies the user of the email sent to it. As soon as he verifies, it’s brought back to the login page.
Functional Requirements
If any field is left blank, error messages are displayed so it can be filled. The user needs to fill the email field correctly because it will be asked to verify it later on. Password will be confirmed by making it type twice. Blood group is required as explained earlier.
- Email Field: A field to fill the email credential with
- Password Field: A field to fill the email credential with
- Age Field: A field to fill the date of birth with
- Phone Number Field: A field to fill the phone number with
- Blood Type Field: A field to fill the blood type with
- Error Message: A message displayed as soon as wrong credentials are entered
- Register Button: As soon as it is pressed, the credentials should be sent for validation
- Firebase: The backend where all the data is stored
App Notification System
Notification system notifies the user of all the needy people, sponsorships they could facilitate and blood campaigns.
Description and Priority
This functional requirement is of medium priority because it will notify the user of the ongoing blood campaigns, if anyone needs its blood and of the new charity opportunities available.
Stimulus/Response Sequences
For this, there is no need for the user to do anything. The system automatically sends notifications to the user on different intervals to remind him of the things discussed above.
Functional Requirements
There are no functional requirements other than making sure that the system reminds the user of the ongoing events in different intervals.
App Nonfunctional Requirements
1. Performance Requirements
Our system is interactive with minimum time delays. So, in every action-response of the system, there are no immediate delays. Even while accessing data from the fire base or updating the existing data, time delays will be least of our concern, as it depends more on connection strength.
2. Safety Requirements
Users privacy and secrecy is important when it comes to software development. We ensure that all user credentials and information are remained hidden, and nothing is shared without his or her permission. We ensure transparency in money transactions while providing a safe and secure environment. Robust and meaningful design and execution of a Safety Instrumented System (SIS).
3. Security Requirements
Security vulnerabilities allow software to be abused in ways that the developers never intended.
We intend to build robust security requirements to supply a smooth and secure workplace for the user and that the software only does what it is intended to do. Like we authenticate user through its Facebook-id or the Gmail account to prevent any misinformation or breach.
Software Quality Attributes
- functional suitability: functional completeness, functional correctness, functional appropriateness.
- performance efficiency: time behavior, resource utilization, capacity.
- reliability: maturity, availability, fault tolerance, recoverability.
- usability: appropriateness, recognizability, learnability, operability, user error protection, user interface aesthetics, accessibility.
- security: confidentiality, integrity, non-repudiation, accountability, authenticity.
- compatibility: co-existence, interoperability.
- maintainability: modularity, reusability, analyzability, modifiability, testability.
- portability: adaptability, install ability, replaceability.