شمس
شمس
Prepared By
Mohammed Modar Monir Al-Hawrani
ID number: 441805460
Mohammed Rashid Saleh Al-Shahri
ID number: 441800775
Hassan Abdullah Mohammed Al-Omari
ID number: 441804688
MUHANNAD AYIDH FAHID ALSHEHRI
ID number: 441804963
Fahad Ali Mohammed Alshehri
ID number: 441804945
Majed Amer Al-shehri
ID number: 441800774
Chapter One: Introduction to the project
Its goals_____________________________________________________________________________________________________
1.1. Importance of the project___________________________________________________________________________
1.2. Project objectives____________________________________________________________________________________
1.3. Target group: ________________________________________________________________________________________
1.4. Application advantages_____________________________________________________________________________
1.5. General structure of the application_______________________________________________________________
1.6. Conclusion____________________________________________________________________________________________
1
1.1. Importance of the project
With the rapid technological development, smart applications have begun to play a
major role in facilitating our daily lives
One area that can benefit from this technology is agriculture. Whether you are a
professional farmer or someone interested in home gardening, having accurate
information about plants and how to care for them is essential to ensure successful
farming.
This application aims to provide a comprehensive platform that provides detailed
information about plants, including
In addition, the app will help users choose the right plants for their environment,
whether in the ground or in pots, making gardening easier and more efficient
2
1.3. Target audience.
The application is intended for the following categories:
Hobby farmers
. People who are interested in home gardening and want to improve their skills
. Those who want to grow certain plants but lack sufficient experience
2 Professional Farmers
. who need accurate information to improve the productivity of their farms
. Those who wish to expand their knowledge of plant types and ways to care for them
3 Environmentalists
. People who want to increase green spaces in their homes or communities
. who are looking for sustainable ways to farm
1.4. Application Features
The application has many features that make it a useful tool for users, including:
1Comprehensive information
The application contains a large database containing information about many plants.
The information is updated periodically to ensure accuracy.
2 custom tips
Advice is provided based on the user's location and weather conditions.
. Reminder notifications for watering and plant care times.
3. Ease of use
. Simple and intuitive user interface.
. Ability to quickly search for plants using the plant name or type.
4. Weather integration
. Use weather data to provide personalized advice.
. Notifications when weather conditions change that may affect plants.
5. Multi-language support
The application can be used in different languages to meet the needs of users around
the world.
3
1.5. General structure of the application
The application consists of the following main sections:
1Search interface
The user can search for plants using name or species.
. Display a list of plants with thumbnails.
3. Weather section
. Personalized tips based on weather conditions.
. Notifications when weather conditions change.
5 Notification system
Watering reminder
. Notifications when weather conditions change.
1.6. Conclusion
This app comes to make the planting process easier and more accessible to everyone,
whether they are amateurs or professionals. By providing accurate information and
personalized tips, the app will help users improve the productivity of their plants and
keep them in the best condition
4
CHAPTER 2
Requirements analysis and design
5
.2.1. Functional Requirements Analysis
These are the basic tasks that the application must perform to meet the
needs of users.
3 Notification system
Send watering reminders.
. Alerts when weather changes may affect plants.
6
2.2. Non-functional requirements
These are the general characteristics that ensure the quality and performance of the
application:
1 Performance:
. Response time less than 2 seconds when searching or loading data
Support up to 10,000 daily active users
2 Security
Encrypt user data such as bookmarks.
. Use HTTPS to connect to servers and APIs
3 Ease of use
. Intuitive user interface design with visual guidance
Support multiple languages (Arabic, English, etc.)
4. Compatibility
.Works on Android and iOS systems.
Support for various smart devices (phones, tablets)
2.3. User Interface Design (UI/UX)
The main user interfaces are designed as follows:
1 Search interface
. Search bar at the top of the page.
. List of common plants with thumbnails.
Filter options by plant type, lighting needs, season)
7
4. Settings section
. Language options.
. Manage notifications (on/off)
. Manually or automatically determine the geolocation
.2.4. Database Design
A relational database (such as MySQL or Firebase) was used with the following tables:
8
2 Weather Table
3 Users table
9
2.5. System design and overall architecture
10
2 Data Flow Diagram (DFD)
11
3 Use Case Diagram
12
2.6. Schematic diagrams
1 ER Diagram of Database
13
2 Plant Search Sequence Diagram
14
2.7. Tools and techniques
1 Development
Front-end: React Native or Flutter.
Express.js with Node.js server.
. Firebase database (for beginners) or MySQL for larger projects).
2 Design
. Design interfaces Adobe XD or Figma
. Lucidchart drawing diagrams
3 Project management
To track tasks use Jira or Trello
. Code Management GitHub
2.8. Expected Challenges
3 User experience
. Design an interface that suits all age groups and technical levels
15
CHAPTER 3
application development
16
1 Frontend
Framework: Flutter for cross-platform development.
With VS Code or Android Studio tools. Dart Flutter add-on
Additional packages: http to connect to the server provider management status.
2 Server (Backend)
Express.js with Node.js language framework.
Tools: Postman for testing, Firebase Firestore or MongoDB APIs.
3 Database
System: Firebase Firestore for cloud database)
Setup: Create a new Firebase project and configure security rules
3.2. Building the database
The main tables in Firebase are designed as follows Firestore
1Plants Collection
{
"plant_id": "001",
"name": {
"Basil": "ar"
},
"en": "Basil"
2Users Collection
{
"user_id": "user_123",
"favorite_plants": ["001", "005"],
"location": " السعوديه,"الرياض
}
3Weather Collection
{
"location_id": "cairo_eg",
"temperature": 32.5,
"humidity": 60,
"alerts": ""ال توجد تحذيرات
}
.3.3. Front-end development
The interface is divided into four main units.
18
//Flutter لعرض قائمة النباتات
ListView.builder(
itemCount: plants.length,
itemBuilder: (context, index) {
return PlantCard(
name: plants[index].name,
image: plants[index].images[0],
);
},
)
3. Weather section
OpenWeatherMap API integration with .
Use the http package to send a GET request to
.API
. Processing data and displaying it in the user interface.
19
4 Notification system
Firebase Cloud Messaging integration with .
:(FCM)
. Setting up FCM in the project
. Send automatic notifications when the weather or watering schedule changes
.3.4. Backend Development
The server is built using Node.js and Express.js.
To handle requests
.1 Endpoints
GET plants. Get a list of all plants.
GET /plants/ id: Get plant details
specific
Send weather data based on: POST / weather
On the site
2 Error management
. Hiring middleware like
To handle express-async-errors unexpected errors.
Send custom error messages (eg 404 if plant not found)
20
3.5. Integration with APIs
1Weather integration
. Steps
21
2 Integration testing
. Ensure that the front-end communicates with the server APIs without errors.
. Test sending notifications in a timely manner
2 API document
Fetch code
Create an API .md file that explains the connection points and how to use them
22
CHAPTER 4
application testing and optimization
23
4.1. Types of Tests
The tests are divided into four main types.
1Functional Testing
. Ensure that all features work as expected.
Covering basic and extreme cases.
2 UI/UX Testing
. Ensure that the interface is user-friendly and consistent with the planned
design.
. Testing the user experience on different devices (phones, tablets).
3) Performance Testing
. Measure application speed and resource consumption (memory, battery).
. Testing the application under different loads (large number of users).
4) Security Testing
.Ensure that users' data is protected.
. Testing the application's resistance to common attacks (such as SQL injection)
4.2. Functional testing
Functional tests were performed using tools such as:
Jest Flutter Driver
1 design test
Ensure that the interface matches the design in
.Figma
. Test colors, fonts, and spacing
// مثال باختبارWidget
testWidgets(''عرض بطاقة النبات, (WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(home: PlantCard(name: ''الريحان,
image: 'url')));
expect(find.text(')'الريحان, findsOneWidget);
});
2 Interaction test
. Make sure the buttons are working properly.
Scrolling test on long pages.
3 Compatibility testing
Test the app on different devices (Android).
.(iOS
. Ensure that the interface adapts to different screen sizes
25
4.4. Performance Testing
Tools like Firebase Performance have been used.
Flutter Dev Tools وMonitoring
3 Pregnancy test
Simulate a large number of users (10,000 active users)
. Ensure that the server processes requests without delay
2 Test APIs
.Ensure that the connection points are secured such as using JWT for
verification).
. Testing APIs resistance to common attacks (such as
.(DDoS
26
service cloud.firestore {
match /databases/{database}/documents {
match /plants/{plant} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
2. Improve images
Use WebP format to reduce image size.
Lazy Loading.
3. Server optimization
Use Load Balancing technology to distribute the load.
Optimize database queries to be faster
27
4.7. Bug fixing
The following errors were detected and fixed:
Interface errors:
Fixed an issue where the “Add to Favorites” button was not working on iOS.
Improved display of long texts in plant cards.
2. Performance errors:
. Fix Memory Leak in Plant Details Page.
. Improve loading time of large images.
3 Security errors
Fixed a security vulnerability in the Weather API that allowed unauthorized
access.
. Updated Firebase rules to prevent unauthorized access to user data
2 Compatibility test
. Test the app on 10 different devices.
.(Android, iOS)
28
4.9. Test Report
Test results are documented in a report that includes:
29
CHAPTER 5
application launch and maintenance
30
5.1. Launch the application
The application will be launched on the Google Play and App Store platforms after
all stages of development and testing have been completed.
App Store:.
Download the app via Xcode or App Store.
.Connect
Submit the application for review by
.Apple
3 Gradual release
. Launch with 10% of users monitoring performance.
Increase the percentage to 100% after ensuring the stability of the application
31
5.2. Marketing Campaign
The app was promoted using various marketing strategies.
1Digital marketing
. Create pages on social media (Facebook, Instagram, Twitter).
Paid advertising on Google Ads.
Facebook Ads
Sending emails to those interested in agriculture.
2 Content marketing
. Publish articles about the benefits of home gardening.
. Share educational videos on how to use the app.
3 communication channels
. Provide an email for technical support.
Create a “Contact Us” section within the app
32
5.4. Periodic Updates
Regular updates are released to improve the app and add new features
2. Improved functionality
Added "fertilization reminder" feature.
Improved recommendation algorithm based on weather
3 Bug fixes
. Release quick updates to fix critical bugs
Example: Fixed an issue with displaying images on some devices
5.5. Ongoing maintenance
An ongoing maintenance plan has been put in place to ensure the stability of
the application.
1. Performance monitoring:
. Use tools like Firebase
To monitor the speed of the application Performance Monitoring
Fix any performance issues as soon as they are discovered
2 Update libraries
. Regularly update Flutter and Node.js libraries
Ensure that the application is compatible with the latest versions of operating
systems.
3 backup copies
. Perform daily database backups
. Store backups on Google Cloud services such as
33
.5.6. Data Analysis
Data analysis tools were used to understand user behavior.
1.Google Analytics:
. Track the number of active users
. Analysis of the most used features
2.Firebase Analytics:
.Measuring user retention rate
.(Retention Rate)
Identify points where users lose interest
3 custom reports
. Create monthly reports on application performance
Example: “20% increase in active users
5.7. Future Expansion
A plan has been put in place for future expansion that includes:
2 new features
Add a “Community” feature to share tips between users
.Integrate with smart devices to water plants automatically
3 Geographical expansion
. Promote the application in new countries
Adding native plants to each area
34
5.8.References
1Application development
Flutter - flutter.dev
React Native - reactnative.dev
Node.js - nodejs.org
Django - djangoproject.com
2 Databases and APIs
Firebase - firebase.google.com
OpenWeatherMap API -
openweathermap.org/api
Google Maps API -
developers.google.com/maps
3Security
Let's Encrypt - letsencrypt.org
OWASP Security - owasp.org
4Design and experiment
Figma - figma.com
Adobe XD adobe.com/xd
Material Design - material.io
5Testing and deployment
Postman - postman.com
It is - jestjs.io
AWS aws.amazon.com
Docker docker.com.
35