Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revisionLast revisionBoth sides next revision | ||
companion_planting:powerplant:software_specification [2017/12/10 21:08] – [Product Functionality] aimeejulia | powerplant:software_specification [2018/12/03 21:11] – aimeejulia | ||
---|---|---|---|
Line 120: | Line 120: | ||
==== Product Functionality ==== | ==== Product Functionality ==== | ||
- | > 1 TODO: Add major functions that the product must perform or must let the user perform. | + | >TODO: Add major functions that the product must perform or must let the user perform. |
=== Must Have === | === Must Have === | ||
Line 191: | Line 191: | ||
* This should represent the function of creating multiple beds from a list of seeds/ | * This should represent the function of creating multiple beds from a list of seeds/ | ||
* TODO | * 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. | + | * Backend: Import plant data from practicalplants |
=== Detailed function description. === | === Detailed function description. === | ||
Line 216: | Line 216: | ||
== Suggestions == | == Suggestions == | ||
- | * Provide suggestions for adding specific crops to existing beds | + | |
- | ** User can ask for crop suggestions when adding crops to a garden or bed | + | * User can ask for crop suggestions when adding crops to a garden or bed |
- | * Provide suggestions for adding specific crops to a specific bed | + | * Provide suggestions for adding specific crops to a specific bed |
- | ** User can also ask for suggestions for crops to add to a specific bed | + | * 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 | + | * Must have at least one user-selected crop to provide suggestions |
== Notifications == | == Notifications == | ||
Notify users of tasks that should be done for each garden/ | Notify users of tasks that should be done for each garden/ | ||
- | * Email notifications | + | |
- | ** should be opt out by default | + | * should be opt out by default |
- | ** include weekly summary of upcoming tasks | + | * include weekly summary of upcoming tasks |
- | * Push notifications | + | |
- | ** Need to be enabled in browser (would only work on desktop) | + | * Need to be enabled in browser (would only work on desktop) |
- | ** include | + | * Include |
== Tasks and Actions == | == Tasks and Actions == | ||
- | * Right now, this would include planting, transplanting, | + | |
- | * Users can add custom tasks from a predefined set of actions (or " | + | * Users can add custom tasks from a predefined set of actions (or " |
- | ** Tasks are associated with a location, bed, or crop | + | * Tasks are associated with a location, bed, or crop |
- | ** Repeatable tasks | + | * Repeatable tasks |
- | * Mark tasks as complete, or postpone or ignore them | + | * Mark tasks as complete, or postpone or ignore them |
== Schedule == | == Schedule == | ||
Find optimal planting schedule for a target bed (with at least one user picked crop) | Find optimal planting schedule for a target bed (with at least one user picked crop) | ||
- | * 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 | + | * 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) | 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 | + | * 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 | + | * 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 | + | * Also be able to identify gaps in the schedule which could be filled |
- | * Should also show information about compatibility interactions | + | * Should also show information about compatibility interactions |
- | ** Needs to be intuitive and simple to understand, obvious from one look at the schedule | + | * Needs to be intuitive and simple to understand, obvious from one look at the schedule |
== User Contributions == | == User Contributions == | ||
Line 261: | Line 261: | ||
Creating Guides should link into OpenFarm directly - Create Guide. | Creating Guides should link into OpenFarm directly - Create Guide. | ||
- | * pro: less work for developer | + | |
- | * contra: might be confusing for the user | + | * contra: might be confusing for the user |
Editing Guides should be put into powerplant " | Editing Guides should be put into powerplant " | ||
Editing Cropinformation should be edited in OpenFarm directly. | Editing Cropinformation should be edited in OpenFarm directly. | ||
Line 269: | Line 270: | ||
=== Terminology === | === Terminology === | ||
- | Location: Group of gardens whose permaculture zones are defined relative to a common zone 0 | + | **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) | + | **Garden**: combination of beds in the same vicinity and permaculture zone |
- | 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 | + | **Bed**: Section in a garden (can be a greenhouse, a pot or a patch of soil) |
- | Zone/ | + | |
+ | **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/ | ||
- | === 2. Provide a Data Flow Diagram of the system to show how these functions relate to each other. === | + | === Provide a Data Flow Diagram of the system to show how these functions relate to each other. === |
Data flow diagram for cropinformation/ | Data flow diagram for cropinformation/ | ||
Line 376: | Line 382: | ||
> TO DO: Describe what kind of manuals and what kind of help is needed for the software you will be developing. | > 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. |
- | Need to have user documentation. Usability will be severly | + | Need to have user documentation. Usability will be severely |
- | * User manual | + | |
- | * FAQ | + | * FAQ |
- | * First time user prompts | + | * First time user prompts |
- | * Community talking points | + | * Community talking points |
- | * Chat rooms (like FarmOS) | + | * Chat rooms (like FarmOS) |
- | * Tutorials for most exemplary tasks (Videos, ...) | + | * Tutorials for most exemplary tasks (Videos, ...) |
===== Specific Requirements ===== | ===== Specific Requirements ===== | ||
Line 398: | Line 404: | ||
[[https:// | [[https:// | ||
- | * 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) | + | * Font size standards based on Marvel prototype (maybe change to be based on screen size in the future) |
- | ** Main page title: 26pt | + | * Main page title: 26pt |
- | ** Subtitle: 18pt | + | * Subtitle: 18pt |
- | ** Body text: 14pt | + | * 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) | + | * 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? | + | * Gardens and Beds contain 3 subscreens (fragments? |
- | ** Dashboard, Beds/Crops, Schedule | + | * Dashboard, Beds/Crops, Schedule |
- | ** Dashboard shows relevant tasks | + | * Dashboard shows relevant tasks |
- | ** Beds/Crops shows all Beds/Crops contained within the Garden/ | + | * Beds/Crops shows all Beds/Crops contained within the Garden/ |
- | ** Schedule shows history of all past, present, and future crops for the Garden/ | + | * Schedule shows history of all past, present, and future crops for the Garden/ |
- | * Any time there is a title/ | + | * Any time there is a title/ |
- | ** Menu items: Edit, delete | + | * Menu items: Edit, delete |
- | ** This is the main mechanism by which user can change settings/ | + | * This is the main mechanism by which user can change settings/ |
=== View Description === | === View Description === | ||
Line 434: | Line 440: | ||
> TO DO: Describe: the connections between the product and other specific software components (name and version), | > TO DO: Describe: the connections between the product and other specific software components (name and version), | ||
- | * FarmOS | + | |
- | ** FarmOS users can provide the url of their server and save/load all of their data BESIDES crop guides and crop information from there | + | * FarmOS users can provide the url of their server and save/load all of their data BESIDES crop guides and crop information from there |
- | ** There will have to be a moderate amount of translation between powerplant data format and FarmOS data format | + | * There will have to be a moderate amount of translation between powerplant data format and FarmOS data format |
- | ** Rather than building a seperate FarmOS module, we will make our web app compatible with FarmOS | + | * Rather than building a seperate FarmOS module, we will make our web app compatible with FarmOS |
- | ** A FarmOS module could be possible, but requires much more time and expertise than it is worth at the moment | + | * A FarmOS module could be possible, but requires much more time and expertise than it is worth at the moment |
- | * Openfarm.cc | + | * Openfarm.cc |
- | ** Openfarm stores CropRelationships, | + | * Openfarm stores CropRelationships, |
- | ** Powerplant users can choose to register their accounts with Openfarm as well | + | * Powerplant users can choose to register their accounts with Openfarm as well |
- | ** Users who do this will be able to save/modify this data | + | * Users who do this will be able to save/modify this data |
- | ** All users (registered or not), while load this data from Openfarm | + | * All users (registered or not), while load this data from Openfarm |
> TO DO: Identify data items or messages coming into the system and going out and describe the purpose of each. | > 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 | + | * openfarm.cc specs go here |
> TO DO: Describe the services needed. | > TO DO: Describe the services needed. | ||
Line 454: | Line 460: | ||
> TO DO: Identify data that will be shared across software components. | > TO DO: Identify data that will be shared across software components. | ||
- | * need to look at what FarmOS stores and what we store | + | |
- | | + | |
Line 462: | Line 468: | ||
TO DO: | 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. | + | - 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. | + | |
==== communication standards that will be used, such as FTP or HTTP. ==== | ==== communication standards that will be used, such as FTP or HTTP. ==== | ||
Line 508: | Line 514: | ||
=== List of Use case === | === List of Use case === | ||
- | * a user has an empty garden, and they want to know what they should plant | + | |
- | * a user has a non-empty garden, and they want to know what they should add to it | + | * a user has a non-empty garden, and they want to know what they should add to it |
- | * user wants to track their garden' | + | * user wants to track their garden' |
- | * user has some data they want to contribute | + | * user has some data they want to contribute |
- | * cool to have | + | * cool to have |
- | ** user wants to manage a garden with multiple people working on it | + | |
> TODO: Add more use cases | > TODO: Add more use cases | ||
Line 521: | Line 527: | ||
> TODO: Create use case diagrams involving each of the possible types of users | > TODO: Create use case diagrams involving each of the possible types of users | ||
- | + | > TODO: Convince openfarm to enhance companionship model or find a suitable ruby on rails developer | |
- | General | + | |
- | | + | |
| | ||
[[https:// | [[https:// | ||