powerplant:development_log

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
companion_planting:development_log [2017/06/25 22:55] ecohackpowerplant:development_log [2017/12/20 00:57] (current) – ↷ Page moved from companion_planting:powerplant:development_log to powerplant:development_log aimeejulia
Line 1: Line 1:
-====== Companion Planting Development Log ====== +====== Development Log ======
-===== Research ===== +
-[[https://www.growveg.com/garden-planner-intro.aspx|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.+
  
-[[https://en.wikipedia.org/wiki/List_of_companion_plants|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.+===== Model Decisions =====
  
-[[http://organic.kysu.edu/CompanionSpacing.shtml|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. +  * https://github.com/openfarmcc/Crops/issues/5 
- +  * https://github.com/openfarmcc/Crops/issues 
-[[http://organic.kysu.edu/BiointensiveMixtures.pdf|Paper by M.K. Bomford]] Further development on the KYSU research above. Has a few key conclusions, including: +  * FarmOS Crop Decision Making Notes: [[https://docs.google.com/drawings/d/1oFB46zILfLZ5Z2xcEoQpOlXaJfawGpDeOyNSi29RwSY/edit?usp=sharing|Google Docs]] (ask FarmOS for accessmike@farmier.org)
-  * 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. +
- +
-[[https://github.com/claytonrcarter/cropplanning|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. +
- +
-[[https://github.com/nosslin579/smigo|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. +
- +
-[[https://github.com/bobbigmac/garden-planner|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: +
- +
-<code> +
- +
-[[wiki|Back To Overview]] +
- +
-{{>toc}} +
- +
-h1. Software Requirement Specification +
- +
-for "powerplant"/ Power Plant/ pp_ / ... +
-Version <0.4> +
- +
-h1. Introduction +
- +
-Powerplant is a software that allows anyone planning a garden to utilize companion planting and other permaculture practices. It provides intelligent suggestions to help the gardener by advising the best planting schedules and combinations of crops to maximize the garden's yield. +
- +
-h1. Users +
- +
-* Gardeners, including anyone who wants to plan a garden and is happy to use open source software. +
- +
-More detail below. +
- +
-h1. Goal +
- +
-Help with garden planning using companion plants to deter pests, improve and add valuable information about the harvest, variety and planning. +
- +
-Taking into account: +
- +
-* Soil type +
-* Climate +
-* Growth time +
-* Sun and water requirements +
-  +
-h2. Product Scope +
- +
-> Provide a short description of the software being specified and its purpose, including relevant benefits, objectives and goals.  +
- +
-h3. Software description +
- +
-* offering fast and easy solution for knowing which crops (bene)fit together +
-* provide an easy to follow schedule for planting, transplanting, and harvesting +
-* providing information about the plants themselves +
-* pulling plant information from several open data platforms +
-* Open-source/open-data +
- +
-> TODO: write more and better text +
- +
-h3. Objectives +
- +
-* Improve planning process for anyone who wants to use permaculture principles in their gardening. +
-* Save time during the planning process for anyone who wants to use permaculture principles in their gardening. +
-* Education of users +
-* Improve and collect data in open databases +
-* Increase harvest yield +
-* Connect with other open source projects for mutual benefit +
- +
-h1. Overall Description +
- +
->TODO: 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. +
- +
-h2. Product Perspective +
- +
-Our vision is that people are able to plan their own gardens using companion planting and other permacultures practices using our app as a central resource for information. The resources we can provide to the user will grow as the app is used more. +
- +
-h2. Context +
- +
-The information that we provide is all out there, we want to provide a central source for all of it. Aid those gardening without experience and help make quick and precise descision for the more experienced gardener. +
- +
-h2. Origin +
- +
-Permaculture guidelines, gardening best practices. +
- +
-Permaculture ideals +
- +
-* Care for the earth +
-* Care for the people +
-* Fair share +
- +
-Open Source/ Open Data. +
- +
-h3. Outcome +
- +
-A year of use of this software will result in: +
- +
-* Users adding to data from all over the world (different climates, soil types) +
-* Maybe make some money for affiliate links (seeds, supplies) or donations +
-* Users plan garden and fields with our software +
-* Users are better educated about gardening and permaculture +
-* Enhance other open source projects with valuable information +
- +
- +
->TODO: more to be added here +
-  +
-h2. Product Functionality  +
- +
-> 1 TO DO: Summarize the major functions that the product must perform or must let the user perform. +
-> 2 TO DO: Still sorting this +
- +
-h3. Must Have +
- +
-* Need a list of available plants +
-* Need to be able to see compatible/incompatible plants +
-* Need to be able to filter by compatibility with multiple plants +
-* Find optimal planting schedule for a target bed +
-* Information accessible on timeline of different stages and locations of growth (i.e. when to grow in greenhouse and transplant them outside) +
-* Read more information on the plant we display +
-* Print crops that should be ready for harvest in a specific time frame for: +
-** a bed +
-** whole garden/field +
-** Should be an alternate view of the schedule +
-* Print Requirements for selected crops +
-** Planting requirements - displayed when refining crop selection for a bed +
-** Maintenance requirements (warnings about particularly difficult crops, etc) - displayed at same time as planting requirements +
-* List Plants that match some specific attributes +
- +
-What does this mean???: +
-> * Add information on plants +
-> ** only available in a certain timespan +
-> ** compatible plants for selected beds +
-> ** compatible plants for harvested beds +
- +
-* Create and edit garden/s +
-* Create and edit bed/s within a garden +
-* Create a list of preferred plants +
-* Generate 5 plant combination suggestions for a given bed +
-* Generate compatibility chart while picking plants for a bed +
-* Modify a plant combination suggestion +
-** Provide advice to user to aid in their decision +
-*** Advice on compatibility, plant requirements +
-*** Suggest alternate plants to modify combination +
-* Provide schedule for a bed including potting, transplanting, harvesting +
-* Change timeframe of schedule (min:week, max:month) +
-* Provide suggestions for filling blank spaces in schedule +
-* Add plants to future schedule of bed using the plant-selection process as before +
-* Report weekly what needs to be done with each plant +
-* Store and load bed or garden from url and display schedule for current date +
-* profile to store multiple gardens +
-* erase bed history/garden history +
-* take user feedback - simple form: user can choose category and write a message +
-* View schedule for entire garden +
- +
-h3. Should Have +
- +
-* Suggest plans based on distance between plants +
-* List suggestions for following plants for harvested beds +
-* Sharing/collaboration between users about a specific garden using shareable link +
-* Add a crop entry +
-** fill out form +
-** should be validated +
-* validation of other users data for a specific climate (proofread, rate, comment, improve) +
-** flag trolls/... +
-* Keep track of nitrogen fixers/consumers in each bed over time +
- +
-h3. Cool to Have +
- +
-* Include types of beds required for a crop +
-* Get revenue from links for more information. +
-* Plant pictures +
-* Print Shopping List +
-* modify the same garden by multiple users at the same time +
-* Have some visualization of garden beds with plants +
-* Draw in current crops +
- +
-> TODO: Figure out where these attributes belong: 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, nitrogen/ consumption +
- +
-h3. 2. Provide a Data Flow Diagram of the system to show how these functions relate to each other. +
- +
-> TODO: will create later +
- +
-h2. Users and Characteristics +
- +
-h3.  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 + +
-* Consultant - all of the above +
-* Anyone who wants to plan a garden by using companion planting. +
-* People who want to use open source/ open data software. +
- +
- +
-h3. Describe the relevant and important characteristics of each user. +
- +
-* Hobbyist - Not too much labor is better; organic/natural garden +
-* Countryside garden - Same as Hobbyist, also wants to be self-sufficient +
-* Organic farmer - Same as Hobbyist, also prioritizing lower labor. Intermixed plants means more labor. Technologically literate, want to use software to improve their yields +
-* Consultant - Provide advise to other hobbyists/gardeners/farmers +
-  +
- +
-h2. 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 +
-* With temporary internet connection +
- +
-h2. 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 +
- +
-* React for front end +
-* Plain HTML, SASS for css +
-* Need to eventually be compatible with FarmOS+
-* Need to eventually be compatible with Openfarm.cc. +
-* Want to be similar to FarmOS crop database structure. +
-* Text + photo editors. +
-* NodeJS as backend engine running ES6 +
-** MongoDB for database with Mongoose as ODM +
-** Express for route handling +
-** Passport for user authentication +
-** Mocha + Chai + supertest for unit testing and integration testing +
- +
-h2. User Documentation +
- +
-> TO DODescribe 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 tutorialsthat will be delivered along with the software.// +
- +
-Need to have user documentation. Usability will be severly limited without. Need to have in depth descriptions of how to input data, what screens should look like, how to interpret output. Need to document things before creating them. +
- +
-* User manual +
-* FAQ +
-* First time user prompts +
-* Community talking points +
-* Chat rooms (like FarmOS) +
-* Tutorials for most exemplary tasks (Videos, ...) +
- +
-h1. Specific Requirements +
- +
-h2. 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. +
- +
- +
-h3. View Description +
- +
-h2. Log In +
- +
-*  Username +
-*  Password +
-*  reset password +
-*  register +
-*  log in facebook/google/github/... +
- +
-h2. Register +
- +
-*  Username +
-*  Password +
-*  Email (optional) +
- +
-h2. Create Garden +
- +
-* name +
-* location +
-* climate (calculated with the location) +
-* default soil type +
- +
-h2. Add Bed +
-*  name +
-*  soil type (preset to default for garden, optional) +
-*  size (width and length, optional) +
-*  pre-existing plants (optional) +
-**  checkbox for selecting empty or plants, then can select plants +
-*  amount of sun (optional) +
-*  bed type +
-*  add bed history +
-** inputfield of plantname +
-** planted (optional) +
-** deceased (optional) +
- +
-> TODO: add many many more more more more views +
- +
-h3. 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 +
- +
-h3. 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 +
-* Openfarm.cc +
- +
-> TO DO: Identify data items or messages coming into the system and going out and describe the purpose of each.  +
- +
-* FarmOS specs go here +
-* openfarm.cc 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 +
- +
- +
-h3. Communications Interfaces +
- +
-TO DO: +
- +
-1. Describe the requirements associated with any communication functions required by this product, including e-mail, web browser, network server communications protocols, electronic forms.  +
-2. Define any pertinent message formatting.  +
- +
-h2. communication standards that will be used, such as FTP or HTTP.  +
- +
-REST +
- +
-> TODO: Put API specs on wiki and link to it +
- +
-h4. communication security or encryption issues, data transfer rates, and synchronization mechanisms. +
- +
-  * Profile could have sensitive info +
-  * Even in case of (locally) 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) +
-  * Sync profile data between local and server +
- +
- +
-h2. Behavior Requirements +
- +
-h3. Use Case View +
- +
-> TO DO: Provide a use case diagram which will encapsulate the entire system and all possible actors. +
- +
-"Workflow Diagram":https://www.draw.io/?state=%7B%22ids%22:%5B%220BwEWI1CO-iYrWnhPV2xJRjZtUkU%22%5D,%22action%22:%22open%22,%22userId%22:%22114282926801448689365%22%7D#G0BwEWI1CO-iYrWnhPV2xJRjZtUkU +
- +
-> TODO: Create use case diagrams involving each of the possible types of users +
- +
-h2. List of Use case +
- +
-h2. Diagram +
-> TODO: Next time +
-</code>+
  • powerplant/development_log.txt
  • Last modified: 2017/12/20 00:57
  • by aimeejulia