Professional Documents
Culture Documents
By Erica Hicks
________________
________________
December 2021
1
EXECUTIVE SUMMARY
Trellis for Tomorrow is a nonprofit organization that builds shared gardens run
predominantly by volunteers. The volunteers grow organic produce in the gardens that gets
donated to local food pantries. Trellis for Tomorrow has 20+ partner sites where they have
installed shared gardens. Each garden currently uses its own method of communicating with
volunteers, but these methods are mainly old-school whiteboard and pens rather than a modern
web-based project management software. Hence, the main goal of this project was to increase
productivity at the garden sites by providing a better way to communicate tasks to volunteers and
provide them with more resources in a format that is easily searchable, trackable, and shareable.
2
TABLE OF CONTENTS
PART I 4
BACKGROUND AND APPROACH 4
INTRODUCTION 4
PROJECT NAME AND DESCRIPTION 4
ISSUE 4
SOLUTION 5
EVIDENCE OF NEED 5
PROJECT GOALS AND OBJECTIVES 6
GOALS 6
OBJECTIVES 6
ENVIRONMENTAL SCAN 7
STAKEHOLDERS AND COMMUNITY 7
ETHICAL CONSIDERATIONS 8
LEGAL CONSIDERATIONS 9
FUTURE ENHANCEMENTS 9
PART II 10
DESIGN REQUIREMENTS 10
APPROACH AND METHODOLOGY 10
FUNCTIONALITY REQUIREMENTS 11
USABILITY TESTING PLAN 13
USABILITY TESTING EVALUATION 13
PART III 13
FINAL DISCUSSION AND REFLECTION 13
TIMELINE AND BUDGET 13
TIMELINE 13
BUDGET 14
FINAL IMPLEMENTATION 15
DISCUSSION 16
PROBLEMS 16
LESSONS LEARNED 17
FUTURE 17
REFERENCES 19
APPENDICES 21
3
APPENDIX A 21
APPENDIX B 24
APPENDIX C 27
APPENDIX D 28
4
PART I
INTRODUCTION
Trellis for Tomorrow is a nonprofit organization that builds shared gardens that rely on
volunteers for virtually all aspects of the care and cultivation of the organic produce grown. The
volunteers bring a disparate range of horticultural experience and knowledge to the garden, and
are seldom able to provide their labor on a consistent schedule. This creates logistical challenges
in running the garden. My project, Shared Garden Task Map, aims to increase productivity at
garden sites by improving communication between head gardeners and volunteers, and between
ISSUE
When a volunteer arrives at the garden, how do they know what tasks need to be done,
and how do they share status for the tasks they worked on before they leave? How can head
gardeners direct volunteers remotely and effectively at a growing number of distant garden sites?
use is a physical whiteboard located on site with pending tasks written on magnetic labels that
get placed on a bird's-eye drawing of the garden. This solution is nice and intuitive but comes
with limitations. It is subject to failure when there is wind, rain, accidents, vandalism, etc. There
is also no way to restrict who has permission to move or reorganize the board. Another issue is
that it requires resources (whiteboards, pens, laminated paper, etc.) that are wasteful and
expensive. There is also no record of when a task was updated or marked complete. This requires
5
head gardeners to be on site regularly to update and monitor the board which is inconvenient,
SOLUTION
replacing the physical whiteboard with a web-based digital version that not only provides
immediate and up-to-date status, but will also feature links to resources (eg, how to care for a
tomato plant) and a forum for asking questions and reporting problems. A digital whiteboard will
enhance communication and dialogue with 24/7 remote access which should reduce the
workload for the head gardeners by helping volunteers be more independent. The head
gardeners, volunteers, and even the plants will all benefit from improved coordination of
resources. What’s more, the food banks receiving the harvests, and hence the food recipients
visiting the food banks, will benefit from the increased productivity of the gardens.
EVIDENCE OF NEED
The Shared Garden Task Map project is especially needed to increase productivity now.
The COVID-19 pandemic caused a shortage of volunteers and the ensuing economic downturn
reduced donations. At the same time demand is higher than ever for the food Trellis for
Tomorrow’s gardens produce. With head gardeners overworked, volunteers need to work more
independently and any new volunteers need to get up to speed as fast as possible which means
communication is paramount.
6
GOALS
● Help Trellis for Tomorrow accomplish their mission of fostering compassion and
● Help Trellis for Tomorrow’s Food for All program produce more food for food banks
● Help Trellis for Tomorrow’s partner sites run smoothly with greater independence
● Improve communication between head gardeners and volunteers, and between the
volunteers themselves
● Minimize the amount of time head gardeners spend directing volunteer efforts on site
● Improve productivity at the garden sites; increase size of harvests while reducing
resources used
OBJECTIVES
● Create a digital garden map for tracking garden tasks for the Dornsife garden site
● Create an intuitive user interface to move tasks around using drag and drop
ENVIRONMENTAL SCAN
There are many gardening apps available. For example, there are garden planning tools
for mapping out where to plant everything with the help of a drag and drop interface that
automatically prevents crowding and incompatible neighbors by enforcing placement rules and
showing red or green indicators between neighboring plants (Garden Plan Pro). Other apps
enable automated garden task reminders to be set based on what crops are currently growing in
your garden and which growth stage they are in (Garden Manager Plant Alarm). Other apps are
more akin to journals for tracking what has already been done in the garden and how well each
The key difference in my Shared Garden Task Map project is that it will be focusing on
improving the coordination of volunteers’ efforts in the garden. Other volunteer coordinator
applications, like Volgistics, focus on scheduling volunteers whereas the Shared Garden Task
Map app will focus on scheduling tasks not people (Volgistics, n.d.).
Existing tools for scheduling tasks with a Kanban board include project trackers like
Asana, Jira, Monday.com, and Trello. These lack an intuitive interface that maps the tasks to the
actual garden design. They also require subscriptions to get premium features.
One of the primary stakeholders is Trellis for Tomorrow who are hoping to have more
successful gardens. Other stakeholders include the head gardeners and the volunteers working in
the gardens. They all stand to gain from greater productivity. Through this increased
productivity, more food can be grown in the gardens. And more food directly benefits those in
need living in surrounding local communities who are experiencing food insecurity.
8
ETHICAL CONSIDERATIONS
current problem, but using technology is easier for some communities than others. In any
transition from a hardcopy to a digital format, there is a risk of losing less digitally-connected
users. Less tech savvy volunteers may also struggle to make the transition. This boils down to
two primary issues: some people won’t be able to access it period; and some people will have a
At this point, the gardens where the product is being tested have volunteers who have
smartphones and data plans. A lot of work was done on the GUI to make it as intuitive as
possible. Simple written instructions were also included at the top of the screen. Through testing,
a level of intuitiveness should be reached that users should not need training on how to use the
software.
9
LEGAL CONSIDERATIONS
Any application that collects user data needs to follow laws regarding user data privacy.
Currently, no user data is collected because the create account and reset password features have
not been implemented. In future releases, the app will collect user emails as needed to create a
user login and reset a password. This information needs to be protected by using encryption
among other security policies. The application is hosted on Heroku which uses the HTTPS
protocol for transmitting data and has Automated Certificate Management. Since the application
is built using the Spring Boot Java application framework, it has built in web security features to
FUTURE ENHANCEMENTS
Long term as the application gets used across multiple seasons and years, it will need
additional features such as an archive and the ability to edit the layout of the garden beds
themselves. Currently, the application has only been developed for one garden, but in the future
it will be deployed at many garden sites. The method for building the garden bed layout needs to
be streamlined. Ideally, it will be editable by the user instead of statically built out by the
programmer. Other features requested by the client include a notice board where announcements
can be posted on the homescreen or on specific gardens. Data analysis techniques could be used
to improve the efficiency of the gardens. Over the course of years, an AI feature could start
PART II
DESIGN REQUIREMENTS
The approach I followed in communicating with my client was weekly Zoom meetings
on Tuesday mornings at 10:30am with email and Slack as backup modes of communication
during the week. The project milestones were tracked using a Google Doc where features and
researching the project, I referred to previous coursework and course material, Stack Overflow
(Stack Overflow, n.d.), W3school (W3Schools, n.d.), and MDN documentation to troubleshoot
(MDN Web Docs, n.d.a). The web application was hosted on Heroku which provides free
web-hosting for MVPs (minimum viable products) (Heroku, 2021a) rather than AWS (Amazon
Web Services) because AWS limits free accounts to one year. The web application was built with
Spring Boot Java for a backend framework (IBM, 2020). Spring Boot Java, as covered in CST
438, was used as opposed to NodeJS, as covered in CST 336, so the server side code was written
in Java instead of JavaScript (Chapter247, 2020). For the frontend, the CSS framework Bootstrap
was used to style the pages and give them a professional feel (Bootstrap, n.d.). Bootstrapalso
provided shortcut methods for adding tooltips, popovers, and modals to help users find
information easily. The database used was a MySQL database hosted on Heroku using the
JawsDB addon because it has a free version called Kitefin (Heroku, 2021b). The code was saved
on GitHub to provide version control for saving code and developing new features independently
of the production version of the code deployed on Heroku. While programming, I used Eclipse
for my development environment and MySQL Workbench to create the local database for testing
11
purposes. Debugging relied on Google Chrome’s developer tools and debugger. To test the REST
FUNCTIONALITY REQUIREMENTS
User/Admin Requirement
The functionality was split into two screens: the admin screen and the user screen shown
The usability testing plan was to send the heroku web app to testers along with a google
form asking for feedback on usability and desired features. Two types of testers were found:
retirees and young professionals that fall into the demographic that is typical of volunteers at
Trellis for Tomorrow’s garden sites. Testers were given a list of tasks to complete using the app
including both admin and user roles. The usability survey for the admin side of the app is
included in Appendix A, and the usability survey for the user side of the app is included in
Appendix B.
The testing evaluation was performed remotely on the testers’ own time rather than
in-person where the tester could talk through their reactions real-time. In order to direct the
testers to various parts of the app, an email was sent out with instructions; see attached email in
Appendix C.
PART III
TIMELINE
During development, it felt like the timeline was way behind schedule, but in retrospect it
was not far off of the planned timeline (compare Figure 1 and Figure 2). The actual timeline was
stretched by one week and more time was spent on the Admin side of the application than
planned. An issue with the proposed timeline, was no cushion was built in for debugging.
BUDGET
Total $0
$10
Figure 3: Project Budget
The project expenses went over the planned budget. The area where cost went over
budget was the database. The issue was the Kitefin version limited the application to 10
connections per hour. For running the application this was enough, but for editing the database
using MySQL Workbench more connections were needed. To avoid the slow-down of waiting an
15
hour when I ran out of connections, I paid for 15 connections per hour by upgrading to the
FINAL IMPLEMENTATION
As shown in the screenshots in Appendix D, the home screen has a list of Trellis’s
Garden sites. Right now there is only the Dornsife garden, but eventually there will be all 21
Trellis Garden sites to choose from. After signing in, the Admin can see the garden map and a
list of tasks they can add. Clicking the harvest button, for example, adds a green harvest task
circle to the screen which the Admin can drag and drop onto a bed. Left-clicking on the task
circle brings up a form so that the Admin can add a description or notes to the task, see Figure 4.
Left-clicking on the bed number brings up a form so that the Admin can edit the name of the
crop currently growing in the bed. To delete a task, the Admin can just drag and drop the task
Figure 4
16
After logging in, the User can see the garden layout and the tasks assigned to each bed.
They can either go by the color codes, or left-click on a task circle to see what type it is. For
example, yellow is a Weed task. Left-clicking on a task circle also shows any notes about the
task. For example, on a Weed task it might say, “Wear gloves.” They can also view the list of
crops that are growing in each bed by clicking on the Crop List button at the top of the garden
map. To mark a task as complete, the User left-clicks the task circle which brings up the
task-info popover which includes a “Mark Complete” checkbox and a Submit button. When the
task is marked as complete, the task circle becomes grayed out but stays on the bed. If the task is
a harvest, they are prompted to enter a weight. The User (and Admin) can see the completed
tasks and submitted harvest weights by going to the Task History and Harvest Weights pages,
respectively.
DISCUSSION
PROBLEMS
Problems that appeared during the design phase were not understanding how the
application was going to be used. For example, how often the Admin would want to go in and
edit the tasks, how to archive a task or view archived tasks, and whether tasks should be
recurring. These questions were never resolved, so will be addressed in future releases. The
Problems that appeared during the implementation phase were not knowing how to
implement the interface, specifically, if I should use <svg> elements or <div> elements for the
task circles. First, I tried using <svg> elements, but clicking and dragging didn’t work like
normal on <svg> elements. I found a library called GreenSock (GreenSock, n.d.), but it just kept
creating problems that I was using <svg> elements, so eventually I went back and had to start
17
over, redoing the entire user interface using HTML <div> elements. That way, I could use
During debugging I had an issue using Ajax calls because I wanted to set a variable in the
Ajax call’s success function that I was going to use immediately after. However, Ajax calls are
asynchronous, which means they send a request to the server and then continue code execution
without waiting for a reply (SagarPPanchal, 2014). During debugging, I discovered my variable
wasn’t being set, so I had to set the asynch variable to false. But that is deprecated because it
stops execution of all other Javascript on the page which is detrimental to the user experience, so
instead I plan on using Javascript promises (MDN Web Docs, n.d.b). I did not have time to go
back and fix this implementation detail yet, but right now the application can still be used despite
this flaw.
LESSONS LEARNED
One of the lessons I learned is that I could prototype quicker by using W3School’s “Try it
Yourself” environment to test out frontend features before adding them to the app (W3Schools,
n.d.). I also learned the hard way to avoid project creep, to promise less, and deliver more when
working with a client. Another lesson learned about working with a client is to make sure I had
something new to show at every meeting or else reschedule the meeting. Also to keep the client
in the loop on weeks I didn’t have any visual progress, it would have been helpful to share the
current state of my to-do list on Asana’s project management site used by Trellis, as originally
planned, rather than keeping it in a private Google-doc out of convenience (and shame).
FUTURE
The features that will make this app the most useful are data collection and links to
Trellis’s Gardening Handbook so that all the info needed to accomplish the tasks is easily
18
accessible. Both of these features have yet to be added. While there is some data collection being
done, the data is not easily accessible yet. For example, the data tables can be sorted but not
filtered. In the future I hope to add more filter options and finetune the best way to visualize the
data.
Some additional features that I would like to add are keyboard shortcuts like ctrl-c, ctrl-v,
and ctrl-z on the admin screen for ease-of-use. Other time-savers for adding tasks would be an
option to autofill a bed with all tasks or to add a specific task to all beds. To increase
communication between volunteers and head gardeners, there should be a Submit Issue form on
the user page. There should also be an announcements box at the top of the user page where the
Admin can indicate what tasks or beds to prioritize or focus on rather than expecting the Users to
click through all the tasks to see which are marked Urgent in the notes/description box. Finally,
way down the road after collecting several seasons worth of data, machine learning could be
used to generate suggestions for when to schedule tasks to help the head gardeners.
19
REFERENCES
Bootstrap. (n.d.) Bootstrap: The most popular HTML, CSS, and JS library in the world.
https://getbootstrap.com/
Chapter247. (2020, March 17). NodeJS vs. Spring Boot Java: Which one to choose and when?
https://www.chapter247.com/blog/node-js-vs-springboot-java-
which-one-to-choose-and-when/
https://play.google.com/store/apps/details?id=com.jee.green&hl=en_GB&gl=US
Garden Plan Pro (n.d.). Garden Plan Pro: A garden planner app for iPhone.
http://www.gardenplanpro.com/
https://www.ibm.com/cloud/learn/java-spring-boot
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
Raible, M. (2018, July 30). 10 Excellent Ways to Secure Your Spring Boot Application. Okta
Developer. https://developer.okta.com/blog/2018/07/30/10-ways-to-secure-spring-boot
SagarPPanchal (2014, Feb 24). Re: What does "async: false" do in jQuery.ajax()? [Discussion
post]. stackoverflow.
https://stackoverflow.com/questions/1478295/what-does-async-false-do-in-jquery-ajax
Stack Overflow. (n.d.). Stack Overflow: Where developers learn, share, & build careers.
https://stackoverflow.com/
APPENDICES
APPENDIX A
22
23
24
APPENDIX B
25
26
27
APPENDIX C
Hi,
Thank you for volunteering to test the Shared Garden Task Map web app. You can
access the web app at https://gardenmap.herokuapp.com/
To run the app through its paces, please try the following:
Once you’re done playing, please provide feedback to describe your experience
using the admin screen and the user screen:
Sincerely,
Erica
28
APPENDIX D
29
30
31
32