diff options
Diffstat (limited to '')
| -rw-r--r-- | docs/DesignDoc.md | 6 | ||||
| -rw-r--r-- | docs/architecture-tiers-and-layers.drawio | 195 | ||||
| -rw-r--r-- | docs/architecture-tiers-and-layers.png | bin | 77956 -> 82794 bytes | 
3 files changed, 108 insertions, 93 deletions
diff --git a/docs/DesignDoc.md b/docs/DesignDoc.md index 8996e67..27d14f6 100644 --- a/docs/DesignDoc.md +++ b/docs/DesignDoc.md @@ -17,6 +17,8 @@ geometry: margin=1in  Our project is intended to create a space to fund aquatic conservation, from physical ecosystems such as coral reefs to aquatic creatures such as jellyfish. Users will be able to donate funds, both physical and monetary, to individal 'needs', and see how close to reaching a funding goal each need is.  ### Purpose + +The purpose of this project is to provide an avenue for companies to crowd-fund and for users to contribute to funds of their choosing.  >  _**[Sprint 2 & 4]** Provide a very brief statement about the project and the most  > important user group and user goals._ @@ -34,6 +36,8 @@ Our project is intended to create a space to fund aquatic conservation, from phy  This section describes the features of the application. +The requirements for this u-fund project to be functional include a system for organizations (administrators) to create funding goals (needs) that can be satisfied by clients (users). +  > _In this section you do not need to be exhaustive and list every  > story.  Focus on top-level features from the Vision document and  > maybe Epics and critical Stories._ @@ -186,6 +190,8 @@ In our model tier we have a Need class, a User class, and a UserAuth class. The  Currently around 100 tests, with roughly 95% coverage overall. Model tier is above 95% individually.  ### Acceptance Testing + +The number of user storeis that have passed their a  > _**[Sprint 2 & 4]** Report on the number of user stories that have passed all their  > acceptance criteria tests, the number that have some acceptance  > criteria tests failing, and the number of user stories that diff --git a/docs/architecture-tiers-and-layers.drawio b/docs/architecture-tiers-and-layers.drawio index e3fb576..f60cd70 100644 --- a/docs/architecture-tiers-and-layers.drawio +++ b/docs/architecture-tiers-and-layers.drawio @@ -1,234 +1,243 @@ -<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0" version="26.0.13"> +<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0" version="26.0.14">    <diagram name="Page-1" id="P8hgUCnVgUD2r0shnHkA"> -    <mxGraphModel dx="1105" dy="566" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> +    <mxGraphModel dx="1313" dy="673" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">        <root>          <mxCell id="0" />          <mxCell id="1" parent="0" /> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-1" value="View" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1">            <mxGeometry x="125" y="220" width="120" height="120" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-3" value="ViewModel" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1"> -          <mxGeometry x="285" y="220" width="240" height="120" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-3" value="ViewModel" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1"> +          <mxGeometry x="285" y="220" width="355" height="120" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-4" value="Model" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" vertex="1" parent="1"> -          <mxGeometry x="565" y="220" width="355" height="120" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-4" value="Model" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;" parent="1" vertex="1"> +          <mxGeometry x="680" y="220" width="240" height="120" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-5" value="Web Interface" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-5" value="Web Interface" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">            <mxGeometry x="135" y="270" width="100" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-6" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-6" value="User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">            <mxGeometry x="65" y="250" width="30" height="60" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-7" value="<div>REST API</div><div>(CupboardController)</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-7" value="<div>REST API</div><div>(CupboardController)</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">            <mxGeometry x="300" y="270" width="115" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-8" value="<div>Service</div><div>(TBD)</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;dashed=1;dashPattern=8 8;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-8" value="<div>Service</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">            <mxGeometry x="435" y="270" width="80" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-9" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#ffe6cc;strokeColor=#d79b00;" edge="1" parent="1" target="Ork7YycwdDH3GpRj4XOS-5"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-9" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" target="Ork7YycwdDH3GpRj4XOS-5" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="105" y="295" as="sourcePoint" />              <mxPoint x="415" y="370" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-10" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#ffe6cc;strokeColor=#d79b00;" edge="1" parent="1" target="Ork7YycwdDH3GpRj4XOS-7"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-10" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" target="Ork7YycwdDH3GpRj4XOS-7" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="235" y="294.78" as="sourcePoint" />              <mxPoint x="265" y="294.78" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-11" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-11" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="415" y="294.78" as="sourcePoint" />              <mxPoint x="435" y="295" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-12" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="Ork7YycwdDH3GpRj4XOS-13"> -          <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="515" y="294.78" as="sourcePoint" /> -            <mxPoint x="555" y="295" as="targetPoint" /> -          </mxGeometry> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-13" value="Model" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> +          <mxGeometry x="690" y="270" width="100" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-13" value="Model" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> -          <mxGeometry x="575" y="270" width="100" height="50" as="geometry" /> -        </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-14" value="Persistence" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> -          <mxGeometry x="695" y="270" width="100" height="50" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-14" value="Persistence" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> +          <mxGeometry x="810" y="270" width="100" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-15" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-13" target="Ork7YycwdDH3GpRj4XOS-14"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-15" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="Ork7YycwdDH3GpRj4XOS-13" target="Ork7YycwdDH3GpRj4XOS-14" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="675" y="294.78" as="sourcePoint" />              <mxPoint x="695" y="295" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-17" value="Storage" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-17" value="Storage" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">            <mxGeometry x="980" y="270" width="100" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-5"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-19" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" source="Ork7YycwdDH3GpRj4XOS-5" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="195" y="440" as="sourcePoint" />              <mxPoint x="185" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-20" value="<div>Angular</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-20" value="<div>Angular</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">            <mxGeometry x="305" y="100" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-21" value="Frameworks" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-21" value="Frameworks" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">            <mxGeometry x="235" y="125" width="60" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="357.19" y="320" as="sourcePoint" />              <mxPoint x="357" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-26" value="Any Modern Browser" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-26" value="Any Modern Browser" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">            <mxGeometry x="530" y="120" width="100" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-27" value="Platform" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-27" value="Platform" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">            <mxGeometry x="460" y="125" width="60" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="1029.5700000000002" y="320" as="sourcePoint" />              <mxPoint x="1030" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-33" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-33" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="474.76" y="320" as="sourcePoint" />              <mxPoint x="474.57" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="624.76" y="320" as="sourcePoint" /> -            <mxPoint x="624.5699999999999" y="380" as="targetPoint" /> +            <mxPoint x="739.76" y="320" as="sourcePoint" /> +            <mxPoint x="739.5699999999999" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-35" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-35" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="744.76" y="320" as="sourcePoint" /> -            <mxPoint x="744.5699999999999" y="380" as="targetPoint" /> +            <mxPoint x="859.76" y="320" as="sourcePoint" /> +            <mxPoint x="859.5699999999999" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-36" value="Usage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-36" value="Usage" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">            <mxGeometry x="50" y="390" width="60" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-38" value="TBD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-38" value="TBD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">            <mxGeometry x="135" y="380" width="100" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-39" value="SpringBoot" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-39" value="SpringBoot" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">            <mxGeometry x="307.5" y="380" width="100" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-41" value="REST API" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-41" value="REST API" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">            <mxGeometry x="305" y="120" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-43" value="Java" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-43" value="Java" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1">            <mxGeometry x="305" y="140" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-44" value="TypeScript" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-44" value="TypeScript" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">            <mxGeometry x="305" y="160" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-45" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-45" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">            <mxGeometry x="740" y="120" width="100" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-46" value="OS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-46" value="OS" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">            <mxGeometry x="670" y="125" width="60" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-48" value="Need" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1"> -          <mxGeometry x="575" y="380" width="100" height="20" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-48" value="Need" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1"> +          <mxGeometry x="690" y="380" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-56" value="DAO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1"> -          <mxGeometry x="695" y="380" width="100" height="20" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-56" value="DAO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1"> +          <mxGeometry x="810" y="380" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-58" value="FileDAO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1"> -          <mxGeometry x="695" y="400" width="100" height="20" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-58" value="FileDAO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1"> +          <mxGeometry x="810" y="400" width="100" height="20" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-61" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-14" target="Ork7YycwdDH3GpRj4XOS-60"> -          <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="795" y="295" as="sourcePoint" /> -            <mxPoint x="1010" y="295" as="targetPoint" /> -          </mxGeometry> -        </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-60" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" vertex="1" parent="1"> -          <mxGeometry x="810" y="270" width="100" height="50" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-60" value="Controller" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> +          <mxGeometry x="530" y="270" width="100" height="50" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-63" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-60" target="Ork7YycwdDH3GpRj4XOS-17"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-63" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="Ork7YycwdDH3GpRj4XOS-14" target="Ork7YycwdDH3GpRj4XOS-17" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="910" y="295" as="sourcePoint" /> +            <mxPoint x="930" y="260" as="sourcePoint" />              <mxPoint x="1010" y="295" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-18" value="<div>File</div><div>I/O</div>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-18" value="<div>File</div><div>I/O</div>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">            <mxGeometry x="920" y="280" width="60" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-69" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-69" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="859.76" y="320" as="sourcePoint" /> -            <mxPoint x="859.5699999999999" y="380" as="targetPoint" /> +            <mxPoint x="579.76" y="320" as="sourcePoint" /> +            <mxPoint x="579.5699999999999" y="380" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-70" value="<div>Cupboard</div><div>Controller</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1"> -          <mxGeometry x="810" y="380" width="100" height="30" as="geometry" /> -        </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-72" value="TBD" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> -          <mxGeometry x="435" y="380" width="80" height="40" as="geometry" /> -        </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-73" value="<div>Remote</div><div>Storage Location</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> -          <mxGeometry x="980" y="380" width="100" height="30" as="geometry" /> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-70" value="<div>Cupboard</div><div>Controller</div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" parent="1" vertex="1"> +          <mxGeometry x="530" y="380" width="100" height="30" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-74" value="Any Modern Browser" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-74" value="Any Modern Browser" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">            <mxGeometry x="135" y="480" width="100" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-76" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-76" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="184.47" y="420" as="sourcePoint" />              <mxPoint x="184.47" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-77" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-77" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="356.19" y="420" as="sourcePoint" />              <mxPoint x="356" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-78" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-78" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry">              <mxPoint x="1028.5700000000002" y="420" as="sourcePoint" />              <mxPoint x="1029" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-79" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-79" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="473.76" y="420" as="sourcePoint" /> +            <mxPoint x="474" y="440" as="sourcePoint" />              <mxPoint x="473.57" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-80" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-80" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1" source="Ork7YycwdDH3GpRj4XOS-48">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="623.76" y="420" as="sourcePoint" /> -            <mxPoint x="623.5699999999999" y="480" as="targetPoint" /> +            <mxPoint x="738.76" y="420" as="sourcePoint" /> +            <mxPoint x="738.5699999999999" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-81" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-81" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="743.76" y="420" as="sourcePoint" /> -            <mxPoint x="743.5699999999999" y="480" as="targetPoint" /> +            <mxPoint x="858.76" y="420" as="sourcePoint" /> +            <mxPoint x="858.5699999999999" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-82" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" edge="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-82" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" edge="1" source="Ork7YycwdDH3GpRj4XOS-70">            <mxGeometry width="50" height="50" relative="1" as="geometry"> -            <mxPoint x="858.76" y="420" as="sourcePoint" /> -            <mxPoint x="858.5699999999999" y="480" as="targetPoint" /> +            <mxPoint x="578.76" y="420" as="sourcePoint" /> +            <mxPoint x="578.5699999999999" y="480" as="targetPoint" />            </mxGeometry>          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-83" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-83" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">            <mxGeometry x="307.5" y="480" width="602.5" height="40" as="geometry" />          </mxCell> -        <mxCell id="Ork7YycwdDH3GpRj4XOS-84" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> +        <mxCell id="Ork7YycwdDH3GpRj4XOS-84" value="Any Modern Operating System" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">            <mxGeometry x="980" y="480" width="100" height="40" as="geometry" />          </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-1" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-60" target="Ork7YycwdDH3GpRj4XOS-13"> +          <mxGeometry width="50" height="50" relative="1" as="geometry"> +            <mxPoint x="800" y="305" as="sourcePoint" /> +            <mxPoint x="820" y="305" as="targetPoint" /> +          </mxGeometry> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-2" value="" style="endArrow=classic;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ork7YycwdDH3GpRj4XOS-8" target="Ork7YycwdDH3GpRj4XOS-60"> +          <mxGeometry width="50" height="50" relative="1" as="geometry"> +            <mxPoint x="810" y="315" as="sourcePoint" /> +            <mxPoint x="830" y="315" as="targetPoint" /> +          </mxGeometry> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-3" value="Cupboard.json" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> +          <mxGeometry x="980" y="380" width="100" height="20" as="geometry" /> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-4" value="User.json" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> +          <mxGeometry x="980" y="400" width="100" height="20" as="geometry" /> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-5" value="UserService" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> +          <mxGeometry x="425" y="380" width="100" height="20" as="geometry" /> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-6" value="CupboardService" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> +          <mxGeometry x="425" y="400" width="100" height="20" as="geometry" /> +        </mxCell> +        <mxCell id="52uoB4Gf5a0lLT2oJs9e-7" value="AuthService" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1"> +          <mxGeometry x="425" y="420" width="100" height="20" as="geometry" /> +        </mxCell>        </root>      </mxGraphModel>    </diagram> diff --git a/docs/architecture-tiers-and-layers.png b/docs/architecture-tiers-and-layers.png Binary files differindex 02647b2..4d0bdae 100644 --- a/docs/architecture-tiers-and-layers.png +++ b/docs/architecture-tiers-and-layers.png  | 
