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
Next revisionBoth sides next revision
companion_planting:development_log [2017/06/11 21:21] – [Product Scope] ecohackcompanion_planting:development_log [2017/11/13 22:23] ecohack
Line 1: Line 1:
-====== Companion Planting Development Log ====== +====== powerplant 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 plantsQuite comprehensivecovers some things not in the database yetEven if you don't want to trust a wikipedia article, it still has links to 50+ useful sources.+The ticket #959 is the information base for the specificationIts 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 usablewrite in the ticket or use redmine markup in the CODE textCopy it over from the redmine everytime its updated there:
  
-[[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.+<code>
  
-[[http://organic.kysu.edu/BiointensiveMixtures.pdf|Paper by M.K. Bomford]] Further development on the KYSU research above. Has a few key conclusions, including: +Work together on this Spec on: https://pad.riseup.net/p/emnTrqLdXzqy 
-  * Results suggest that mixed planting can increase land-use efficiency of BIA systems under resource-limiting conditions. +When finished change Ticket: https://work.ecohackerfarm.org/issues/959 and wiki: 
-  * 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.+[[wiki|Back To Overview]]
  
-[[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.+{{>toc}}
  
-[[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.+h1Software Requirement Specification
  
-=====Software Specifications===== +for "powerplant"/ pp_ / ... 
-Software Requirement Specification +Version <0.13>
-for Companion Planner +
-Version 0.1+
  
-====Introduction==== +h1. Introduction
-//Document Purpose +
-TO DO: Identify the product whose software requirements are specified, including the revision or release number.  +
-Describe the scope of the product.//+
  
-===Users===+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.
  
-Gardeners+h1. Users
  
-===Goal===+* Gardeners, including anyone who wants to plan a garden and is happy to use open source software. 
 +** 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.
  
-Help with garden planning using companion plants to deter pests, improve the harvest and add variety ie more diversity.+More detail below.
  
-Taking into account: +h1. Goal
-  * Soil type +
-  * Climate +
-  * Growth time +
-  * Sun and water requirements+
  
-Improve harvest and diversity by adding valuable information during the planning stage.+The goal of powerplant is to help users effectively plan their garden by providing planning and maintenance suggestions which utilize permaculture principles with a focus on companion planting. 
 +  
 +h2Product Scope
  
-====Product Scope==== +Provide a short description of the software being specified and its purpose, including relevant benefits, objectives and goals. 
-//TO DO: Provide a short description of the software being specified and its purpose, including relevant benefits, objectivesand goals.//+
  
-===Software description=== +h3. Software description
  
-Convert data on crops into something usable by anyone interested in gardening.+* Offer fast and easy solution for knowing which crops (bene)fit together 
 +* Provide an easy to follow schedule for planting, transplanting, and harvesting 
 +* Provide information about the crops themselves 
 +* Push and pull crop information to/from several open data platforms 
 +* User can submit changes to improve data 
 +* Open-source/open-data
  
-Open-source+> TODO: write more and better text
  
-===Objectives===+h3. Objectives
  
-Improve planning process for anyone who wants to use permaculture principles in their gardening.+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
  
-Save time during planning process for anyone who wants to use permaculture principles in their gardening.+h1Overall Description
  
-Education of users+<pre> 
 +                            +-----------------------+ 
 +                            |  OpenFarm.cc API      | 
 +                            +-----------+-----------+ 
 +                                        ^ 
 +                                        | 
 +                                        | 
 +                                        | 
 +                                        v 
 ++-------------+                    +----+-----------------+             +----------------+ 
 +| Front End   +<------------------>   Back End          +<----------->+ powerplant DB  | 
 ++-------------+                    +----+-----------------+             +----------------+ 
 +                                        ^   
 +                                        |    
 +                                        |    
 +                                        |    
 +                                        |    
 +                                        v    
 +                            +--------------+--------+ 
 +                            |  FarmOS API           | 
 +                            +-----------------------+ 
 +</pre>
  
-Improve and collect data 
  
-====Overall Description====+h2. Product Perspective
  
-===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.
  
-==Users==+h2. Context
  
-Anyone who wants to plan garden.+The information that we provide is all out there, we want to provide central source for all of it. Aid those gardening without experience and help make quick and precise descision for the more experienced gardener.
  
-People who want to use open source software.+h2Origin
  
-==Outcome==+Permaculture guidelines, gardening best practices. 
 + 
 +The permaculture ideals are: 
 + 
 +* 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: A year of use of this software will result in:
  
-Users adding to data from all over the world (different climates, soil types)+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 
 +* More development on powerplant resulting in better software 
 +** especially including more OS/OD enthusiasts 
 +** building up networks with different OS/OD projects 
 +  
 +h2. Product Functionality 
  
-// maybe need more added here //+> 1 TODO: Add major functions that the product must perform or must let the user perform.
  
-//TO DO: Describe the context and origin of the product being specified +h3Must Have
-Include a simple diagram that shows the major components of the overall system, subsystem interconnections, and external interface.//+
  
-===Context===+* Select different guides 
 +* Offline and online user experience 
 +* Suggestions for existing beds 
 +* Mark a bed as full or not 
 +* Notifications from schedule 
 +* Tasks and actions 
 +* Schedule
  
-The information that we provide is all out there, we want to provide a central source for all of it.+* user can signup/ login or decide to use with local storage only 
 +* user can create an account from garden data they've already entered 
 +* user can create beds 
 +* user can create gardens
  
-===Origin===+* Need a list of available plants (internal) 
 +* Need to be able to see compatible/incompatible plants (internal) 
 +* Need to be able to filter by compatibility with multiple plants (internal) 
 +* Find optimal planting schedule for a target bed (with at least one user picked crop)
  
-Permaculture guidelines, gardening best practices. Permaculture ideals: Take of earth, regenerate soil. 
  
-Permaculture ideals: +h3. Should Have
-  * Care for earth +
-  * Care for people +
-  * Fair share+
  
-====Product Functionality==== +* When offline
-//TO DO:  +** Get suggestions for where to plant crops 
-1. Summarize the major functions that the product must perform or must let the user perform.// +*** TODOFigure out if this is possible offline. 
-  Need a list of available plants +*** Only for plants currently in local memory (eg that are already in beds). More plants is then just disabled. 
-  Need to be able to see compatible/incompatible plants +If we get the data, notify the user of maintenance tasks include wateringweeding, pruning, etc. 
-  Need to be able to filter by multiple plants +Suggest plants based on distance between plants 
-  Need to filter by attribute(s) +List suggestions for following plants for harvested beds 
-    IncludeSoil conditions, grow time, climate, sun direction relative to each bed, labor required for each plant, sun+water required, best season/time to plant +Sharing/collaboration between users about a specific garden using shareable link 
-  Find optimal planting schedule for a set of plants +Add a crop entry 
-  Schedule must also include greenhousemaybe types of beds +** fill out form 
-  Find optimal planting combinations for any number of plants per bed +** should be validated 
-    * Based on distance between plants +validation of other users data for a specific climate (proofread, rate, comment, improve) 
-  Have some visualization of garden beds w/plants +** flag trolls/... 
-  Draw in current crops +* Keep track of nitrogen fixers/consumers in each bed over time 
-  Fill in blank spaces in beds +Save edit history for OpenFarm data 
-  Filter crops added by algorithm based on preference +permaculture zones: 
-  Add/remove crops for any reason +** a garden can have zones 
-  Deny/change crops selected by algorithm for any reason +** suggestions based on zones 
-  Save user profiles with all information +*** plant zone is dependent on how much attention they need/how often you harvest 
-  Save past combinations +**** TODO: think about this, how to figure that out
-  * Keep track of nitrogen fixers/consumers in each bed over time +
-  Take user feedback +
-  Sharing/collaboration between users+
  
 +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
 +* Gamification
 +** Levels/badges for users
 +*** Contributor
 +*** Expert farmer
 +*** etc.
  
-//2. Organize the functions to make them understandable to any reader. //+> 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, nitrogenconsumption
  
-Aimee says: +h3. Minimal Viable Project
-Urgent: +
-Good combinations for current month+
  
-Less Urgent+* The User should be able to select a minimum of two plants and the app will produce a result to list of plants in groups that are compatible with each other. 
-Planting location+* It should only list small groups that are not contained in a bigger group 
 +** Example{Nasturium, Potato, Onion} = {Nasturium, Potato}, {Onion} != {Nasturium, Potato}, {Onion}, {Potato}, {Nasturium} 
 +* Search by Common english name or binoial name in the same field 
 +** If crop not found it should tell: "Plant not yet in the database or you wrote the name wrong :) - or you can try again using the binomial name" 
 +* This should represent the function of creating multiple beds from a list of seeds/plants you want to plant 
 +* TODO 
 +** Backend: Import plant data from PFAF database, import basic plant relationship data (firebase), create HTTP API call to get compatible groups from a big group of plants.
  
-Not urgent: +h3. Detailed function description.
-Visualizing beds+
  
 +h4. Select different Guides
  
-// 3Provide Data Flow Diagram of the system to show how these functions relate to each other.//+User should choose between different guides (from openfarm.cc) for crop that fits their needs 
 +* When adding a crop to a bed, users have the option of selecting a guide available from openfarm 
 +* Users can view the guide for a crop at any time from the crop details page 
 +* Guides can be removed, added or changed to a crop in crop view (only one guide per crop)
  
-// will create later //+h4. Offline and Online user experience
  
-====Users and Characteristics==== +NEARLY the same UX (user experience) both offline and online! This is really important because people will need to use on mobile in their garden 
-//TO DO:  +* Things a user will most likely want to do while offlineUse command pattern for the actions and queue them upThey sync when the phone/browser has network connection again. This also allows undo's. 
-1Identify the various users that you anticipate will use this product.//+** Add a new bed 
 +** Add existing crops to that bed 
 +** Change the status of a crop 
 +** Change status of a task 
 +** Switch to any other bed in their garden 
 +** View a guide/information for a crop
  
-  * Hobbyist - small home garden20 m<sup>2</sup> +h4Suggestions
-  * Countryside garden - 250 - 1000 m<sup>2</sup> +
-  * Organic farmer - 1000 m<sup>2</sup> ++
  
-// 2. Describe the pertinent characteristics of each user. // +Provide suggestions for adding specific crops to existing beds 
-  Hobbyist - Not too much labor is better, +** User can ask for crop suggestions when adding crops to a garden or bed 
-  Countryside garden - Wants to be self-sufficient. +* Provide suggestions for adding specific crops to a specific bed 
-  Organic farmer - Prioritizing lower labor. Intermixed plants means more labor. Technologically literate, want to use software to improve their yields+** User can also ask for suggestions for crops to add to a specific bed 
 +* Must have at least one user-selected crop to provide suggestions
  
-====Operating Environment==== 
-//TO DO: 
-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+h4. Notifications
  
-Windows 10, Chrome, use in office or garden+Notify users of tasks that should be done for each garden/bed/crop on a given day 
 +* Email notifications 
 +** should be opt out by default 
 +** include weekly summary of upcoming tasks
  
-Android x.x.x, Chrome, use in office or garden, but mainly garden+* Push notifications 
 +** Need to be enabled in browser (would only work on desktop) 
 +** include events happening on the current day
  
-====Design and Implementation Constraints==== +h4Tasks and Actions
-//TO DO:  +
-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 datawhat +Right nowthis would include planting, transplantingand harvesting - only the major events 
-screen should look likehow to interpret output. Need to document things before creating them. +Users can add custom tasks from a predefined set of actions (or "other") 
-  Need to use vanilla Javascript for front end. +** Tasks are associated with a location, bed, or crop 
-  Plain HTML, LESS for css +** Repeatable tasks 
-  Need eventually be compatible with FarmOS. +Mark tasks as completeor postpone or ignore them
-  Have to use FarmOS database. +
-  Text + photo editors. +
-  Back end: PHP to deal with databaseJavascript to process business logic+
  
 +h4. Schedule
  
-//TO DO: +Find optimal planting schedule for a target bed (with at least one user picked crop) 
-Describe what kind of manuals and what kind of help is needed for the software you will be developing.+* When adding a crop, users can get suggestions for when to plant it based on the duration of growth 
 +* Goal is to maximize the overall yield and allow for consistent harvest throughout the year 
 + 
 +Information accessible on timeline of different stages and locations of growth (i.e. when to grow in greenhouse and transplant them outside) 
 + 
 +* Users can view the schedule for a location or bed as a chart 
 +* Growth periods are shaded in bars, single events are represented as lines 
 +* Should allow the user to see, at a quick glance, what is growing and when things can be harvested 
 +** Also be able to identify gaps in the schedule which could be filled 
 +* Should also show information about compatibility interactions 
 +** Needs to be intuitive and simple to understand, obvious from one look at the schedule 
 + 
 +h4. User Contributions 
 + 
 +Users can contribute in the form of editing existing cropinformation, croprelationship, and guides. 
 + 
 +Creating Guides should link into OpenFarm directly - Create Guide. 
 +* pro: less work for developer 
 +* contra: might be confusing for the user 
 +Editing Guides should be put into powerplant "centralized improved guide" (except it is your own guide?). This avoids parallel versions of the same guide edited by different users, and instead puts all the edits in one place. 
 +Editing Cropinformation should be edited in OpenFarm directly. 
 +Croprelation should be changed in the app and put into OpenFarm. 
 + 
 +h3. Terminology 
 + 
 + 
 +Location: Group of gardens whose permaculture zones are defined relative to a common zone 0 
 +Garden: combination of beds in the same vicinity and permaculture zone 
 +Bed: Section in a garden (can be a greenhouse, a pot or a patch of soil) 
 +Crop: Specific instance of a crop that will be planted in a bed 
 +Transplant: action of moving a crop from a pot (non-bed) to a bed 
 +Zone/Permaculture Zone: Ordered area from 0 to 5 by frequency of visits/maintance requirement (/often also related to proximity) 
 + 
 +h3. 2. Provide a Data Flow Diagram of the system to show how these functions relate to each other. 
 + 
 +Data flow diagram for cropinformation/croprelationship data (from openfarm) 
 + 
 +<pre> 
 +                                                                                                     
 +            ```````````                           `...`                                              
 +          `.           .`                       `.`   `.`                                            
 +         ``             ``                    ```       `.`                                          
 +                                        ```-Openfarm-..`                                        
 +    -````. User Interface .``````Send.```>`./.` registered?- `.```````no`````````````-               
 +    .    .                                 `....-........`                                       
 +    .     .`            .                      `.`     `.`                                         
 +    .      +.`       ```                         `.` `.`                                           
 +    .      ^  ``/|\``                              `-`                                             
 +    .      .     :                                  .                                .               
 +    .      .                                      .                                .               
 +    .      .                                      .                                .               
 +    .      .                                      .                                .               
 +Request    .                                      .                                .               
 +    .      .                                     yes                                             
 +    .      .                                      .                       `````````+.`````````     
 +    .      .     .````````````````````````````````  .``                    .```````````````````.     
 +    .    .``        Response to request          .    `.                                         
 +    . `Response                                  .    `.                   . no action allowed .     
 +    . .to Request                                .    `.                    `` ````` ``````` .     
 +    . .-`------                                  .    `.                                         
 +    .    ^                                          `.                   `````````````````````     
 +    .    .                                          `.                                             
 +    .    .                                          `.                                             
 +    .    .                                          \/                                             
 +    .    .                                   `````````.-                                             
 +    .    -`````````                       ```        `-:                                             
 +    .   ..        `.                     .`                                                        
 +    .  .``Openfarm` .                   `. Power plant                                             
 +    .>/- `Database` .:<`````Send ```````-  Backend    `  .                                           
 +       .` ---:::--` .                   `.   .------:    .                                           
 +        .`        `.                     .`                                                        
 +          `````````                       `.`         .`                                             
 +                                            ``````````                                               
 +                                                                                                     
 +                                                                                                    
 +</pre> 
 + 
 +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. 
 + 
 +* All users: consistent harvest throughout the year 
 +* 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 advice 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 with JSX to generate HTML 
 +* SASS for css 
 +* Need to eventually be compatible with FarmOS. 
 +* Need to eventually be compatible with Openfarm.cc. 
 +* Want to be similar to Openfarm crop database structure. 
 +* Want tasks to be similar to FarmOS Log data 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 
 +* Mobile-first, offline-first design (ok, maybe mobile-first, offline-second. they can't both be first) 
 + 
 +h2. 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.// List the user documentation components (such as user manuals, on-line help, and tutorials) that will be delivered along with the software.//
  
-  * User manual +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.
-  * FAQ +
-  * First time user prompts +
-  * Community talking points +
-  * Chat rooms (FarmOS) +
-  * Tutorials for most exemplary tasks+
  
-====Specific Requirements==== +User manual 
-===External Interface Requirements, User Interfaces=== +* FAQ 
-//TO DO: +* First time user prompts 
-Describe user interfacesdifferent screen images, any GUI standards, standard buttons and functions (e.g., Cancelthat will be available to the user. +* Community talking points 
-Define error message display standards.//+* Chat rooms (like FarmOS) 
 +* Tutorials for most exemplary tasks (Videos, ...)
  
-// come back to this //+h1. Specific Requirements
  
-===Hardware Interfaces===+h2. External Interface Requirements
  
-//TO DO:  +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. 
-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, +h3. GUI standards 
-  * the nature of the data and control interactions between the software and the hardware.//+ 
 +https://material.io/guidelines/ 
 +https://medium.com/@marcintreder/the-minimum-viable-design-system-75ca1806848a 
 + 
 +* Lots of rounded rectangles to contain components 
 +* Font size standards based on Marvel prototype (maybe change to be based on screen size in the future) 
 +** Main page title: 26pt 
 +** Subtitle: 18pt 
 +** Body text: 14pt 
 +* Sidebar menu accessible from any screen which shows the current location and allows jumping to any screen above it in the hierarchy (All Gardens -> Garden Dashboard -> Bed Dashboard -> Crop) 
 +* Gardens and Beds contain 3 subscreens (fragments?
 +** Dashboard, Beds/Crops, Schedule 
 +** Dashboard shows relevant tasks 
 +** Beds/Crops shows all Beds/Crops contained within the Garden/Bed 
 +** Schedule shows history of all past, present, and future crops for the Garden/Bed 
 +* Any time there is a title/heading of an element containing a Garden, Bed, or Crop, it will have a small drop down menu next to it 
 +** Menu items: Edit, delete 
 +** This is the main mechanism by which user can change settings/status of a specific Garden, Bed, or Crop 
 + 
 +h3. View Description 
 + 
 +"View the prototype! (INCOMPLETE)":https://marvelapp.com/94c4bh4 
 +If you want to improve it contact franz@ecohackerfarm.org to get an invite. 
 + 
 +> 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 includethe supported device types, the nature of the data and control interactions between the software and the hardware.
  
   * 800x400 display   * 800x400 display
Line 216: Line 434:
   * 5mb local storage   * 5mb local storage
  
 +h3. Software Interfaces
  
-===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. 
-//TO DO: +
- +
-1. Describe:+
  
-the connections between the product and other specific software components (name and version)+* FarmOS 
-databases+** FarmOS users can provide the url of their server and save/load all of their data BESIDES crop guides and crop information from there 
-operating systems (Windows? Linux? Etc.), +** There will have to be a moderate amount of translation between powerplant data format and FarmOS data format 
-tools, +** Rather than building a seperate FarmOS modulewe will make our web app compatible with FarmOS 
-libraries and integrated commercial components.//+** A FarmOS module could be possiblebut requires much more time and expertise than it is worth at the moment 
 +* Openfarm.cc 
 +** Openfarm stores CropRelationships, Crop Guides, and Crop Information 
 +** Powerplant users can choose to register their accounts with Openfarm as well 
 +** Users who do this will be able to save/modify this data 
 +** All users (registered or not), while load this data from Openfarm
  
-  * FarmOS+> TO DO: Identify data items or messages coming into the system and going out and describe the purpose of each. 
  
-//2Identify 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
  
-// FarmOS specs go here //+> TO DO: Describe the services needed. 
  
-//3Describe the services needed. //+> TO DO: Identify data that will be shared across software components.
  
-// also later //+* need to look at what FarmOS stores and what we store 
 + figure out what we can store in FarmOS
  
-//4. Identify data that will be shared across software components.// 
  
-// need to look at what FarmOS stores and what we store +h3. Communications Interfaces
- figure out what we can store in FarmOS //+
  
-===Communications Interfaces=== +TO DO:
-//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. //+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. 
  
-// define standards for communication w/FarmOS//+h2. communication standards that will be used, such as FTP or HTTP. 
  
-//2. Define any pertinent message formatting.//+REST
  
-// more details w FarmOS//+"Auto-generated API specs":https://github.com/Ecohackerfarm/powerplant/blob/master/docs/spec.md
  
-//3. Identify any communication standards that will be usedsuch as FTP or HTTP. //+API error messages have the following format: 
 +    <pre> 
 +    { 
 +        status: Number, 
 +        message: (optional) String, 
 +        errors: (optional) { 
 +            fieldName1: String, 
 +            ... 
 +        } 
 +    } 
 +    </pre>
  
-  * HTTP (RESTJSON)+@status@: HTTP status code 
 +@errors@: Object containing error messages pertinent to specific UI elementse.g. a login request with an incorrect password would result in @{password: "Incorrect password"}@ 
 +@message@: A general description of the error, which can be displayed to the user
  
-//4Specify any communication security or encryption issues, data transfer rates, and synchronization mechanisms.//+h4. communication security or encryption issues, data transfer rates, and synchronization mechanisms.
  
   * Profile could have sensitive info   * Profile could have sensitive info
-  * Even in case of illegal crops being grown, info cannot be accessible by anyone+  * Even in case of (locally) illegal crops being grown, info cannot be accessible by anyone
   * Yield is sensitive   * Yield is sensitive
   * Complete transparency within network of gardeners, zero transparency outside   * 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
  
-====Behavior Requirements==== 
  
 +h2. Behavior Requirements
  
-===Use Case View===+h3. Use Case View
  
-//**TO DO:** Provide a use case diagram which will encapsulate the entire system and all possible actors.//+TO DO: Provide a use case diagram which will encapsulate the entire system and all possible actors.
  
-//will do later// +"Workflow Diagram":https://github.com/Ecohackerfarm/powerplant/blob/master/docs/Powerplant%20Workflow.svg
-====Next Steps====+
  
-  - Complete the specifications +h3. List of Use case 
-    - Completing function list + * a user has an empty garden, and they want to know what they should plant 
-    Decide zthe software stack + * a user has a non-empty garden, and they want to know what they should add to it 
-    - ...  + * user wants to track their garden's progress/crops planted 
-    - MoSCoW (Must have, should have, could have) + * user has some data they want to contribute 
-  - Research interfaces with FarmOS+ * cool to have 
 + ** user wants to manage a garden with multiple people working on it 
 +> TODO: Add more use cases
  
 +h3. Diagram
 +> TODO: Create use case diagrams involving each of the possible types of users
  
-====Resources==== 
  
-Github: ... (to be filled)+General TODO: 
 +    Convince openfarm to enhance companionship model or find a suitable ruby on rails developer 
 +     
 +Diagrams: https://drive.google.com/file/d/0BwEWI1CO-iYrWnhPV2xJRjZtUkU/view?usp=sharing 
 +</code>
  • powerplant/development_log.txt
  • Last modified: 2017/12/20 00:57
  • by aimeejulia