powerplant:development_log

This is an old revision of the document!


Companion Planting Development Log

Garden Planner A non-open source, paid desktop/iOS app for hand-designing a garden and planning your crops. Has a very nice looking calendar.

List of companion plants Wikipedia's list of companion plants. Quite comprehensive, covers some things not in the database yet. Even if you don't want to trust a wikipedia article, it still has links to 50+ useful sources.

Companion Plant Spacing Research done by Kentucky State University on the spacing of intermixed companion plants in a hexagonal formation. The gist is that the spacing is a weighted average of the recommended spacing of the two crops based on the proportions of the crops.

Paper by M.K. Bomford Further development on the KYSU research above. Has a few key conclusions, including:

  • Results suggest that mixed planting can increase land-use efficiency of BIA systems under resource-limiting conditions.
  • Cool-season crops should not be mixed with warm-season crops for synchronous growth in mixed plantings.

Crop Planning Open-source Java program to plan crops. Not too well-designed or easily usable. Does not appear to have any data on time until harvest, or take conditions into account, or include any companion crop information. However, it's open-source, so it could theoretically be expanded. At first glance it does not seem like a great base upon which to expand.

Another Crop Planner Also open-source, this time a single page application. Angular front, Spring framework Java back end. Claims to offer advice on companion planting, harvesting dates! No longer hosted online, and I haven't yet tried hosting locally, but it is definitely worth checking out if it does indeed do what it claims to. A single page application could be a good format for the companion planner due to its cross-platform compatibility. Also has 970 commits by a single person so a lot of work has gone into it. Also means it's very complex, so more time spent learning someone else's code/system.

Yet Another Crop Planner Open-source planting calendar, this time using Meteor.js. Much more simple, but maybe this means easier to build upon. No companion features but they could be created. Have not tested yet either.

The ticket #959 is the information base for the specification. Its written in a markup language not compatible with this wiki. Redmine is used to track the tasks around the development so it makes more sense to make this location the primary datasource. To make your contributions usable, write in the ticket or use redmine markup in the CODE text. Copy it over from the redmine everytime its updated there:

Software Requirement Specification
for Companion Planner
Version <0.2>

Introduction
TO DO: Identify the product whose software requirements are specified, including the revision or release number. Describe the scope of the product.

Users
Gardeners
Goal
Help with garden planning using companion plants to deter pests, improve the harvest and add variety ie more diversity.

Taking into account:

Soil type
Climate
Growth time
Sun and water requirements
Improve harvest and diversity by adding valuable information during the planning stage.
Product Scope
TO DO: Provide a short description of the software being specified and its purpose, including relevant benefits, objectives, and goals.

Software description
Convert data on crops into something usable by anyone interested in gardening.
Open-source
Objectives
Improve planning process for anyone who wants to use permaculture principles in their gardening.
Save time during planning process who wants to use permaculture principles in their gardening.
Education of users
Improve and collect data
Increase harvest yield
Overall Description
Product Perspective
Users

Anyone who wants to plan a garden.
People who want to use open source software.
Outcome
A year of use of this software will result in:
Users adding to data from all over the world (different climates, soil types)
TO DO: more added here
Context
The information that we provide is all out there, we want to provide a central source for all of it. Gardening without experience and make quick and precise descision more experienced.

Origin
Permaculture guidelines, gardening best practices. Permaculture ideals: Take care of earth, regenerate soil.

Permaculture ideals

Care for the earth
Care for the people
Fair share
TO DO: Describe the context and origin of the product being specified. Include a simple diagram that shows the major components of the overall system, subsystem interconnections, and external interface.

Product Functionality
1 TO DO: Summarize the major functions that the product must perform or must let the user perform.

Must Have
Need a list of available plants
Need to be able to see compatible/incompatible plants
Need to be able to filter by multiple plants
Find optimal planting schedule for a set of plants
Information accessible on timeline of different stages and locations of growth (i.e. greenhouse or outside)
Read more information on the plant we display
?? Add information on plants
?? Print Shopping List
?? Print what we get List
?? Print Requirements for selected plants.
?? List Plants that are only available in a certain timespan
List Plants that are only available in filter
List following plants for harvested beds
List compatible plants for selected beds
List compatible plants for harvested beds
List of plants i like (with autocomplete)
add from all plants
remove already added plants
add constraints
compatibility chart
warnings on too many combinations (reason: size of beds, efficient seed usage)
best 5 group combination, description of each group
select favourite group
compatibility suggestions, add new plant into group
list plants compatible to this group
schedule (status of garden)
list plant grow/harvest times
list plant fill bed times
define livecycle for plant (percent)
display suggestions for empty times (herbs when only short terms)
define time the schedule displays (min: week, max: month)
create new compatibility chart for next period/timeframe
reports weekly what needs to be done with each plant
filter when nothing has to be done
store the schedule for one 'bed', create a url that can be shared/bookmarked
load bed from url and display schedule for current date
display plant information dialog
profile to store multiple beds
Should Have
Find optimal planting combinations for any number of plants per bed
Based on distance between plants
Cool to Have:
Include types of beds required for a crop
Get revenue from links for more information.
? technical detail? ** Include: Soil conditions, grow time, climate, sun direction relative to each bed, labor required for each plant, sun+water required, best season/time to plant, care frequency

Have some visualization of garden beds w/plants
Draw in current crops
Fill in blank spaces in beds
Filter crops added by algorithm based on preference
Add/remove crops for any reason
Deny/change crops selected by algorithm for any reason
Save user profiles with all information
Save past combinations
Keep track of nitrogen fixers/consumers in each bed over time
Take user feedback
Sharing/collaboration between users
TODO: Still to decide in which section the attributes fit
Need to filter by attribute(s):
TODO
2. Organize the functions to make them understandable to any reader.
Aimee says: Urgent: Good combinations for current month
Less Urgent: Planting location
Not urgent: Visualizing beds
3. Provide a Data Flow Diagram of the system to show how these functions relate to each other.
will create later
TO DO

Users and Characteristics
Identify the various users that you anticipate will use this product.
Hobbyist - small home garden. 20 m2
Countryside garden - 250 - 1000 m2
Organic farmer - 1000 m2 +
Describe the pertinent characteristics of each user.
Hobbyist - Not too much labor is better,
Countryside garden - Wants to be self-sufficient.
Organic farmer - Prioritizing lower labor. Intermixed plants means more labor. Technologically literate, want to use software to improve their yields
Operating Environment
Describe the environment in which the software will operate, including the hardware platform, operating system and versions, and any other software components or applications with which it must peacefully coexist. In this part, make sure to include a simple diagram that shows the major components of the overall system, subsystem interconnections, and external interface

Lower range laptop
Windows 10, Chrome, use in office or garden
Android x.x.x, Chrome, use in office or garden, but mainly garden
Design and Implementation Constraints
Describe any items or issues that will limit the options available to the developers. These might include:

hardware limitations (timing requirements, memory requirements)
interfaces to other applications
specific technologies
tools
databases to be used
language requirements
User Documentation
Need to have user documentation. Usability will be severly limited without. Need to have in depth descriptions of how to input data, what
screen should look like, how to interpret output. Need to document things before creating them.
Need to use vanilla Javascript for front end.
Plain HTML, LESS for css
Need eventually be compatible with FarmOS.
Have to use FarmOS database.
Text + photo editors.
Back end: PHP to deal with database, Javascript to process business logic
TO DO: Describe what kind of manuals and what kind of help is needed for the software you will be developing.

List the user documentation components (such as user manuals, on-line help, and tutorials) that will be delivered along with the software.//

User manual
FAQ
First time user prompts
Community talking points
Chat rooms (FarmOS)
Tutorials for most exemplary tasks
User Documentation
TO DO: Describe what kind of manuals and what kind of help is needed for the software you will be developing.

List the user documentation components (such as user manuals, on-line help, and tutorials) that will be delivered along with the software.//

User manual
FAQ
First time user prompts
Community talking points
Chat rooms (FarmOS)
Tutorials for most exemplary tasks
Specific Requirements
External Interface Requirements
TO DO: Describe user interfaces, different screen images, any GUI standards, standard buttons and functions (e.g., Cancel) that will be available to the user. Define error message display standards.

TODO: Warnings / Suggestions all over the place, define toast/framework how to display them without annoying

Hardware Interfaces
Describe the logical and physical characteristics of each interface between the software product and the hardware components of the system. This may include, the supported device types, the nature of the data and control interactions between the software and the hardware.

800x400 display * 100kB/s * 200mb memory on mobile * 512mb memory on non-mobile * 5mb local storage
Software Interfaces
TO DO: Describe: the connections between the product and other specific software components (name and version), databases, operating systems (Windows? Linux? Etc…), tools, libraries and integrated commercial components.

FarmOS
TO DO: Identify data items or messages coming into the system and going out and describe the purpose of each.

FarmOS specs go here
TO DO: Describe the services needed.

TO DO: Identify data that will be shared across software components.

need to look at what FarmOS stores and what we store
figure out what we can store in FarmOS
Communications Interfaces
TO DO:

1. Describethe requirements associated with any communications functions required by this product, including e-mail, web browser, network server communications protocols, electronic forms. 
2. Define any pertinent message formatting.

communication standards that will be used, such as FTP or HTTP.
REST

communication security or encryption issues, data transfer rates, and synchronization mechanisms.
Profile could have sensitive info
Even in case of illegal crops being grown, info cannot be accessible by anyone
Yield is sensitive
Complete transparency within network of gardeners, zero transparency outside
low bandwidth because garden usually has bad reception (GPRS traffic)
Behavior Requirements
Use Case View
TO DO: Provide a use case diagram which will encapsulate the entire system and all possible actors.
  • powerplant/development_log.1497216810.txt.gz
  • Last modified: 2017/06/11 23:33
  • by kimparker