Professional Documents
Culture Documents
Digital Grain Commerce Platform: Project Semester Report
Digital Grain Commerce Platform: Project Semester Report
by
Vidhi Gupta
(102003324)
(Software Developer)
(Assistant Professor)
Submitted to the
by Vidhi Gupta
Place of work: Aryatech Platforms Private Limited.
Submitted to the Computer Science & Engineering Department, Thapar Institute of Engineering &
Technology
May, 2024
In Partial Fulfilment of the Requirements for the Degree of Bachelor of Engineering in Computer
Engineering
Certified by
Certified by
i
CERTIFICATE
ii
ABSTRACT
During my industrial internship at Arya.ag, an AgriTech enterprise, I was integrated into
AryaTech Platforms Pvt Ltd, one of its subsidiaries. Arya.ag extends a comprehensive array
of services to farmers, FPOs, banks, and traders, encompassing trading, e-auction, crop yield
optimization leveraging technology, and financial solutions such as commodity-backed loans.
Additionally, I was involved in the Selenium testing of builds to ensure the reliability and
functionality of the software. Selenium, an open-source tool, was instrumental in automating
web application testing, thereby enabling efficient identification and rectification of bugs and
performance issues. This process ensured that the digital grain commerce platform operated
seamlessly across different browsers and devices.
iii
LIST OF FIGURES
iv
TABLE OF CONTENTS
Certificate ii
Abstract iii
1.1. Overview 1
1.3. Service 3
2. Introduction 5
2.4. Objectives 7
3. Background 10
4. Objectives 11
v
5. Methodology 13
5.3. Development 13
5.4. Testing 14
6.1. Java 16
6.2. GitHub 17
6.3. Grafana 17
6.4. React 18
6.5. Selenium 19
6.6. Cucumber 20
6.7. Prometheus 22
6.8. Jenkins 23
7. Observation and findings 30
8. Limitations 33
9. Future Work 34
10. References 35
vi
1.ARYATECH PLATFORMS PRIVATE LIMITED
.
1.1 Overview
Arya.ag is a leading innovator in the agricultural technology sector, delivering a
comprehensive range of solutions tailored to the specific requirements of farmers, FPOs,
banks, and traders. Committed to revolutionizing agriculture, Arya.ag offers state-of-the-art
services spanning trading and e-auction platforms to advanced crop yield optimization
solutions.
Arya.ag has achieved remarkable milestones, including the listing of 11,659 warehouses,
managing 2,833 warehouses, and actively storing 2.99 crore metric tons. This fiscal year
alone, Arya.ag has disbursed ₹157.77 crore through Aryadhan and facilitated a total trade
volume of 75,783.98 metric tons across various agricultural commodities. Arya.ag has
1
achieved significant milestones, including listing 11,000 near-farm storage points and
managing USD 2.5 billion in stored produce. They have provided digital identities to over
10% of agri-warehouses and implemented IoT-enabled hermetic storage. The company
utilizes AI-enabled surveillance and quality assurance, ML-enabled auto decisioning, and
integrated seamless payments for transaction integration. They employ intelligent demand-
supply matching, satellite-based traceability, and offer seamless embedded finance against
inventory. Arya.ag has partnered with 25 banks, facilitating USD 1.3 billion in annual finance
with zero NPAs. The company ensures digital matching of supply to demand, structured
finance, full payment assurance, and boasts a commerce ARR of USD 600 million.
2
1.3 Service
• E-store Creation: The platform empowers users to establish certified e-stores, facilitating
easier online visibility and marketing of their produce.
• Simplified Management: Users can efficiently manage their storage needs through the
platform, including booking warehouse space, storing and releasing commodities, and
accessing invoices.
• Demand & Supply Matching: Arya.ag acts as a bridge between buyers and sellers,
allowing users to view current demands and connect with potential partners who share their
needs.
• Market Price Transparency: Real-time access to mandi bhav (market prices) empowers
informed decision-making for both buyers and sellers.
Financial Empowerment:
• Loan Disbursement: Arya.ag simplifies access to credit for farmers and other stakeholders
by enabling loan disbursements against stored commodities.
• Secure Payment Platform: The platform ensures secure and hassle-free transactions
through a user-friendly payment system.
3
Arya.ag also boasts a range of innovative apps, including Aryashakti, a weather monitoring,
analysis, and reporting app; Prakshep, an agri-intelligence solution maximizing crop yield
through real-time monitoring and analysis; and Arjun, an integrated procurement
management platform providing a comprehensive solution for procurement needs. Through
these initiatives, Arya.ag continues to redefine the agricultural landscape, driving efficiency
and sustainability in the industry.
4
2. INTRODUCTION
Initially, I dedicated the first two weeks to familiarize myself with the project's codebase and
the work environment. This foundational period was crucial for understanding the existing
framework. Following this, I delved into 'Arya 4.0,' a significant UI update for the Arya.ag
website and mobile applications aimed at enhancing the user experience.
• My primary focus has been on 'Arya 4.0,' where I engage in frontend development using
React, JavaScript, Redux, and CSS. This hands-on experience has allowed me to apply
theoretical knowledge in practical scenarios and collaborate with the design team to ensure
a functional and aesthetically pleasing UI.
• The development and integration of a robust monitoring system for Arya 4.0, an advanced
frontend application, ensures optimal user experience. Leveraging Prometheus and
Grafana, the system tracks Core Web Vitals and additional performance metrics
comprehensively. Using the web-vitals library and the performance API, critical metrics
are captured and visualized through Grafana dashboards for real-time insights and historical
analysis. Alerting rules are configured to promptly identify and address performance
degradations and errors. This setup contributes to the application's continuous
improvement.
• In addition to frontend development, I have been heavily involved in testing frontend builds
using Java Selenium in conjunction with the Cucumber framework. Selenium is a powerful
tool for automating web applications for testing purposes, and integrating it with Cucumber
allows for behaviour-driven development (BDD). This combination enables us to write
clear, understandable tests that mimic real user scenarios. I have been writing and executing
test cases to ensure the reliability.
5
2.2 Nature and Scope of Project
Arya 4.0 is a significant upgrade to Arya.ag's frontend, enhancing user retention and trading
activity through a complete UI overhaul for Trade Services, Long Term Procurement (LTP)
customers, Sell Stock, Stock Ledger, and improved account settings functionality. A key
feature involves implementing automation scripts using Cucumber and Selenium, which
ensure robust testing by automating user interactions and validating expected behaviors.
Additionally, Arya 4.0 integrates Prometheus for observability metrics, collecting real-time
performance data to monitor latency, throughput, and error rates. This setup, combined with
thorough local testing, aims to create a seamless user experience, empowering users with
enhanced functionalities and contributing to a more efficient digital grain commerce
ecosystem.
In the dynamic landscape of digital commerce, Arya.ag recognizes the critical importance of
continually enhancing its user interface to remain competitive and meet the evolving needs of
its stakeholders. With Arya 4.0, the company acknowledges the significance of user
experience in driving user retention and engagement. The project's background lies in
Arya.ag's commitment to revolutionizing agricultural technology and providing cutting-edge
solutions tailored to farmers, FPOs, banks, and traders. By prioritizing the overhaul of UI
design for Trade Services and improving account settings functionality, Arya 4.0 aims to
streamline user interactions, facilitate easier data management, and ultimately foster greater
user satisfaction. The relevance of this project extends beyond mere aesthetic enhancements;
it directly impacts user engagement, trading activity, and overall platform usability. As
Arya.ag continues to expand its footprint in the agricultural sector, Arya 4.0 represents a
pivotal step towards creating a more efficient and user-centric digital grain commerce
ecosystem.
6
2.4 Objectives
• Ensure proper functioning of the updated UI through rigorous Selenium testing of builds.
• Foster greater engagement with the Arya.ag platform through improved functionalities.
Arya 4.0 is a major upgrade to Arya.ag's website and apps, aiming to boost user retention,
trading activity, and user experience. The project includes a comprehensive UI redesign for
Trade Services, tailored for Long Term Procurement (LTP) customers, and enhanced account
settings for easier data management.
Utilizing Reacts component-based architecture, Arya 4.0 ensures efficient updates and
scalability. These improvements create a more engaging, seamless user experience, driving
higher user satisfaction and engagement. By refining the UI and optimizing account settings,
Arya 4.0 enhances the efficiency and effectiveness of the digital grain commerce ecosystem.
Type Name
Text Editor Visual Studio Code
Design Platform Figma
Version Control Git, Bitbucket
Libraries React JS, Axios
7
2.5.2 Automated Testing with Selenium and Cucumber
As we develop new features for Arya.ag's frontend, builds are made and rigorously tested
using Selenium with Java and the Cucumber framework. This involves writing scripts for
automation testing to ensure that new UI components and functionalities work seamlessly
across different browsers and devices. Selenium is employed to automate web application
testing, providing comprehensive coverage and consistent test execution. Integrating
Selenium with Cucumber allows us to use behavior-driven development (BDD) principles,
making test scenarios more readable and maintainable. By automating tests, we can quickly
identify and rectify issues, ensuring a robust and user-friendly interface for all users. This
process enhances the overall reliability and performance of Arya.ag's digital grain commerce
platform.
Type Name
Testing Framework Selenium
Programming Language Java
BDD Framework Cucumber
Test Runner JUnit
Build Tool Maven
Continuous Integration Jenkins
For Arya 4.0, our advanced frontend application, we integrate Prometheus and Grafana to
monitor key performance metrics and ensure optimal user experience. Using the `web-vitals`
library, we capture Core Web Vitals like Largest Contentful Paint (LCP), First Input Delay
(FID), and Cumulative Layout Shift (CLS) to assess loading performance, interactivity, and
visual stability. Additional metrics such as Time to First Byte (TTFB), First Contentful Paint
(FCP), Time to Interactive (TTI), and Total Blocking Time (TBT) are collected via the
`performance` API, providing insights into application responsiveness. Error tracking is
managed by a global error handler that logs JavaScript errors and intercepts network requests
to monitor API call failures, enabling swift issue identification and resolution. Metrics are
8
sent from the React app to Prometheus for aggregation and analysis. Grafana, connected to
Prometheus, visualizes these metrics through custom dashboards, offering real-time insights
and historical trends. Dashboards highlight key performance indicators, error rates, and
network metrics, facilitating proactive performance management and issue resolution.
Alerting rules in both Prometheus and Grafana notify us of significant performance
degradations or error spikes, ensuring immediate response. This comprehensive monitoring
ensures Arya 4.0 delivers a seamless, high-performance user experience, driving continuous
improvement and operational efficiency.
Type Name
Code Instrumentation Tool Prom-react
Monitoring Tool Prometheus
Data Visualization Tool Grafana
9
3. BACKGROUND: ARYA 4.0 INITIATIVE
• Recognizing the significance of user experience (UX) in driving user retention and
engagement, Arya 4.0 aims to improve the overall usability of Arya.ag's platform.
• Tailored solutions for farmers, Farmer Producer Organizations (FPOs), banks, and traders
demonstrate the company's dedication to transforming the agricultural sector.
• Arya 4.0 represents a pivotal step toward creating a more efficient and user-centric digital
grain commerce ecosystem.
• Utilizing automation with Java Selenium for testing and integrating Prometheus and
Grafana for metrics observability strengthens Arya 4.0's capabilities in ensuring seamless
user experiences and optimizing platform performance.
10
4.OBJECTIVES
Enhance user retention, trading activity, and overall user experience on Arya.ag's
website and apps.
Arya 4.0 utilizes React's component-based architecture to achieve efficient updates and
scalability. This modular approach allows for quick, isolated updates, ensuring the platform
remains scalable and maintainable as new features are developed and integrated.
Arya.ag's frontend builds undergo rigorous testing using Selenium with Java and the
Cucumber framework. Automation testing scripts verify that new UI components and
functionalities perform seamlessly across different browsers and devices. Selenium's
automation capabilities provide comprehensive coverage and consistent test execution, while
integrating Selenium with Cucumber facilitates the use of behavior-driven development
(BDD) principles, making test scenarios more readable and maintainable.
11
4.4 Enhancing Observability
My role in Arya 4.0 involved fortifying observability by instrumenting code on Arya.ag. This
comprehensive approach enables meticulous tracking of performance metrics, including
loading times, interactivity, and visual stability. Critical Core Web Vitals like LCP, FID, and
CLS, along with metrics like TTFB, FCP, TTI, and TBT, are monitored. We've integrated
error tracking mechanisms to log JavaScript errors and monitor API call failures. Leveraging
visualization tools such as Prometheus and Grafana, real-time insights empower proactive
issue resolution. This meticulous instrumentation reflects our commitment to elevating Arya
4.0's performance and user experience.
Continuous monitoring of crucial metrics such as Largest Contentful Paint (LCP), First Input
Delay (FID), and Cumulative Layout Shift (CLS) is imperative for enhancing the
performance and user experience of our React application. These metrics provide valuable
insights into the loading speed, interactivity, and visual stability of our application, allowing
us to identify and address performance bottlenecks effectively.
By closely tracking LCP, FID, and CLS, we can pinpoint areas for optimization and
implement strategies to improve load times, responsiveness, and visual rendering. This
proactive approach enables us to deliver a seamless and engaging user experience, ultimately
leading to increased user satisfaction and retention.
12
5. METHODOLOGY
• Conducted detailed meetings with stakeholders to understand the business objectives and
user needs for Arya 4.0.
• Gathered requirements for UI redesign and new features tailored to Long Term
Procurement (LTP) customers.
• Utilized wireframes and prototypes created with Figma for iterative feedback and approvals
from stakeholders.
5.3 Development
• Implemented new UI components and enhanced account settings using React and Redux
for state management.
• Developed efficient and scalable code, ensuring adherence to best practices and coding
standards.
• Integrated version control with Git and Bitbucket to manage and track code changes.
13
5.4 Testing
• Wrote automation test scripts using Selenium with Java and the Cucumber framework to
ensure cross-browser and cross-device compatibility.
• Conducted rigorous testing to identify and rectify issues promptly, ensuring a robust and
user-friendly interface.
• Prom-React Integration: The React application was instrumented using the Prom-React
library. This library facilitates the collection of performance metrics directly within the
application code. These metrics can provide valuable insights into various aspects of the
application's behavior, such as component rendering times and API call durations.
• Prometheus for Data Collection: Prometheus, a time-series database, was used to collect
the metrics instrumented within the application using Prom-React. Prometheus periodically
scrapes these metrics from the application, enabling the storage and analysis of historical
data.
14
• Grafana for Visualization: Grafana, a data visualization tool, was leveraged to create
dashboards that effectively visualize the collected metrics. These dashboards allow for real-
time monitoring of various application performance aspects, enabling quick identification
of potential issues.
• Adopted Agile practices to manage the project, ensuring iterative development and
continuous feedback.
• Conducted regular sprint planning, daily stand-ups, and retrospective meetings to track
progress and address challenges.
This structured approach ensured that Arya 4.0 not only met the project goals but also
delivered a high-quality, user-friendly digital grain commerce platform.
15
6. TOOLS AND TECHNOLOGY
6.1 Java
Java is a highly versatile and widely-used programming language known for its platform
independence, performance, and robustness. It was central to backend development in my
projects due to its capability to handle large-scale, high-performance applications. Key
features of Java include:
• Object-Oriented Programming (OOP): Java's OOP principles enable modularity,
reusability, and ease of maintenance, making it ideal for developing complex backend
systems.
• JVM (Java Virtual Machine): The JVM allows Java applications to run on any device or
operating system, enhancing flexibility and scalability.
• Rich Standard Library: Java’s extensive standard library supports a wide range of
functionalities, from data structures and algorithms to networking and concurrency,
streamlining development processes.
• Performance and Efficiency: Java’s Just-In-Time (JIT) compiler and garbage collection
mechanisms optimize runtime performance and memory management, crucial for handling
heavy loads and real-time operations.
• Ecosystem and Tools: Java’s mature ecosystem includes numerous libraries and
frameworks, such as Spring, Hibernate, and Apache Commons, which expedite
development and ensure robustness.
16
6.2 GitHub
GitHub is a comprehensive platform for version control and collaboration. In the project,
GitHub was used for:
• Source Code Management: GitLab repositories managed the project's source code,
facilitating collaboration and version control.
• CI/CD Pipelines: GitHub’s integrated CI/CD pipelines automated the testing and
deployment processes, ensuring code quality and accelerating delivery.
• Pull Requests: GitHub’s pull request functionality enabled code reviews, fostering
collaboration and ensuring code quality before integration.
• Issue Tracking: GitHub’s issue tracking system allowed the team to manage tasks, bugs,
and feature requests efficiently.
• Container Registry: GitHub’s built-in container registry streamlined the management of
Docker images, essential for deploying applications
..
6.3 Grafana
Grafana is an open-source platform for monitoring and observability, used in the project for:
• Data Visualization: Grafana’s rich visualization capabilities allowed the creation of
interactive and informative dashboards, presenting real-time data insights.
• Alerting: Configurable alerts based on predefined thresholds notified the team of critical
issues, enabling proactive management and response.
17
• Integration: Grafana integrates with various data sources, including Prometheus,
InfluxDB, and Elasticsearch, providing a unified view of system metrics.
• Custom Dashboards: The ability to create custom dashboards tailored to specific needs
helped in monitoring different aspects of the application and infrastructure.
• Performance Monitoring: Grafana’s visualizations helped track key performance
indicators (KPIs), ensuring that the system met its performance and reliability goals.
6.4 React
• Virtual DOM: React utilizes a virtual DOM to efficiently update the UI. Instead of directly
manipulating the browser's DOM, react creates a lightweight representation of the DOM in
memory. When the state of a component changes, react calculates the most efficient way to
update the actual DOM and applies those changes, resulting in better performance.
• Declarative Syntax: React allows developers to describe the desired state of the UI, and
React takes care of updating the DOM to match that state. This declarative approach to
building UIs makes code more predictable, easier to understand, and less error-prone
compared to imperative approaches.
18
• Unidirectional Data Flow: React follows a unidirectional data flow, also known as one-
way data binding. Data flows from parent components to child components via props, and
child components can communicate with parent components through callbacks. This pattern
makes it easier to understand how data changes propagate through the application, leading
to more predictable behaviour.
• Ecosystem and Community: React has a vast ecosystem of libraries, tools, and resources
that complement its core functionality. This includes state management solutions like
Redux and MobX, routing libraries like React Router, and UI component libraries like
Material-UI and Ant Design. Additionally, react has a large and active community of
developers who contribute to its development, share best practices, and provide support
through forums, meetups, and online communities.
6.5 Selenium
• Cross-Browser Testing: Selenium allows for automated testing of web applications across
multiple browsers, including Chrome, Firefox, Safari, and Internet Explorer. This ensures
that the application behaves consistently across different browsers and helps identify any
browser-specific issues.
19
allows testers to write automated tests using their preferred programming language, making
it accessible to a wide range of developers and QA engineers.
• Integration with Testing Frameworks: Selenium can be integrated with popular testing
frameworks such as JUnit, TestNG, NUnit, and Mocha. This enables testers to organize and
execute their automated tests more efficiently, leveraging the features provided by these
frameworks such as test case management, assertions, and reporting.
• Dynamic Element Interaction: Selenium provides robust mechanisms for interacting with
dynamic elements on web pages, such as dropdown menus, pop-up windows, and AJAX-
based components. This allows testers to simulate user interactions more accurately and
effectively, leading to more comprehensive test coverage.
• Scalability with Selenium Grid: Selenium Grid is a powerful component of the Selenium
ecosystem that allows for distributed testing across multiple machines and browsers
simultaneously. This enables testers to execute tests in parallel, reducing overall testing
time and increasing efficiency, particularly for large-scale web applications or complex test
suites. Additionally, Selenium Grid supports configuration for different environments,
making it a valuable tool for teams working on projects with diverse testing requirements.
20
approach helps ensure that everyone involved has a shared understanding of the
requirements and encourages a focus on business value.
• Feature Files: Cucumber tests are written in plain-text feature files using a Gherkin syntax,
which is easy to understand even for non-technical stakeholders. Feature files contain
scenarios written in a human-readable format, describing various use cases and expected
outcomes of the system's behaviour.
• Step Definitions: Cucumber step definitions are written in programming languages such as
Java, Ruby, JavaScript, or Python. These step definitions map the plain-text steps from
feature files to executable code, allowing testers to automate the validation of each step's
behaviour against the application.
• Reusable Step Definitions and Scenario Outlines: Cucumber encourages the creation of
reusable step definitions to avoid duplication and promote maintainability. Additionally,
scenario outlines enable testers to define scenarios with placeholders for parameters,
allowing for more efficient testing of similar scenarios with different inputs.
21
6.7 Prometheus
• Advanced Querying with PromQL: With its powerful query language, PromQL,
Prometheus allows for complex and precise querying of time-series data. Users can
aggregate, filter, and analyse metrics in real-time, aiding in sophisticated performance
troubleshooting.
• Scalability with Federation Model: Designed for horizontal scalability, Prometheus uses a
federation model to support large-scale, distributed systems. Multiple Prometheus servers
can scrape and aggregate data centrally, accommodating extensive and complex
monitoring needs.
22
6.8 Jenkins
Pipeline Automation: Jenkins pipelines automate the building, testing, and deployment of
code, ensuring consistent and repeatable processes.
Integration with VCS: Jenkins integrates seamlessly with version control systems like
GitLab, triggering builds automatically on code commits.
Plugins Ecosystem: Jenkins boasts a vast plugin ecosystem, allowing for the integration of
various tools and customization of the CI/CD process.
Parallel Execution: Jenkins supports parallel execution of tasks, reducing build times and
increasing efficiency.
23
Fig 6.9 Contract Listing
24
Fig 6.10 Usage of React
25
Fig 6.12 Feature File
26
Fig 6.14 Object File
27
Fig 6.16 Jenkins Integration
28
Fig 6.18 Grafana Dashboard
29
7. OBSERVATIONS AND FINDINGS
.
The comprehensive UI redesign for Trade Services, specifically for Long Term Procurement
(LTP) customers, resulted in significantly enhanced user engagement. Users found the
updated interface more intuitive and visually appealing, which increased their interaction
with the platform. Simplified navigation structures and clearer visual cues made accessing
key features easier, improving the overall user experience. Positive feedback from users
highlighted notable enhancements in both aesthetics and usability.
The adoption of Reacts component-based architecture allowed for efficient updates and
scalability of the Arya 4.0 platform. This modular approach enabled quick, isolated updates,
ensuring new features could be integrated seamlessly without disrupting existing
functionality. The architecture's scalability supported the system’s growth as user needs
evolved. Additionally, the use of reusable components ensured a consistent look and feel
across the platform, contributing to an improved user experience.
Using Selenium with Java and the Cucumber framework for automated testing ensured cross-
browser compatibility, verifying that new UI components and functionalities worked
seamlessly across different browsers and devices. Integrating Selenium with Cucumber
facilitated the use of behavior-driven development (BDD) principles, making test scenarios
more readable and maintainable. Automation testing scripts allowed for the quick
identification and rectification of issues, ensuring a robust and user-friendly interface.
30
Enhanced Observability with OpenTelemetry
The integration of Jenkins into the project established a robust Continuous Integration and
Continuous Deployment (CI/CD) pipeline. Jenkins automated the building, testing, and
deployment processes, ensuring that code changes were consistently integrated and deployed
with minimal manual intervention. This automation enhanced the development workflow,
reduced the likelihood of errors, and accelerated the release cycle, ultimately leading to more
reliable and efficient software delivery.
Enhanced observability and comprehensive testing enabled the team to quickly detect and
resolve issues, minimizing disruptions to the user experience. The proactive issue resolution
strategies improved the system’s reliability, ensuring consistent performance and user
satisfaction.
31
Enhanced Frontend Observability
32
8. LIMITATIONS
some edge cases on less common browsers or older versions may still experience issues.
the legacy codebase posed challenges, requiring significant refactoring to fully leverage
Reacts capabilities.
• User Adaptation Period: The extensive UI redesign, while improving overall user
experience, required a period of adaptation for existing users familiar with the previous
interface.
• Initial Setup Time: Setting up the automated testing framework and code instrumentation
tools required significant initial time investment, delaying the immediate availability of
these features.
• Test Coverage Gaps: Despite rigorous testing, certain complex user interactions and rare
edge cases might not have been fully covered, potentially leading to undetected issues.
33
9. FUTURE WORK
• Expand Test Coverage: Increase the scope of automated tests to cover more
functionalities and edge cases, ensuring even greater reliability and stability across all
aspects of the platform.
• Enhance User Personalization: Develop and integrate features that offer personalized
user experiences based on individual user behavior and preferences, further improving
user engagement and satisfaction.
insights into user interactions and platform performance, enabling more informed
decision-making and targeted improvements.
• Optimize Mobile Experience: Focus on optimizing the mobile version of the platform,
ensuring a seamless and intuitive user experience across all mobile devices and operating
systems.
protect user data and maintain the integrity of the platform, addressing emerging threats
and vulnerabilities proactively.
34
10. REFERENCES
35
11. PEER REVIEW
Signature of the
Evaluator student:
36
37