Runtime View
Plantings
sequenceDiagram
actor User
User->>+Frontend: search for plant
Frontend->>+Backend: search
Backend->>-Frontend: list of plants
User->>Frontend: selects plant
Frontend->>+Backend: placements
Backend->>-Frontend: list plant_ID of relations
Backend->>+Frontend: heatmap
User->>Frontend: place plant
Frontend->>Backend: place plant
- search via GET on /api/plants
- placements via GET on /api/maps/{map_id}/layers/plants/placements
- place plant via POST on /api/maps/{map_id}/layers/plants/plantings (plant_ID, pos, date)
Onboarding
This is currently not implemented yet:
sequenceDiagram
actor User
User->>Permaplant: visit landing page
User->>Keycloak: self-registration
activate Keycloak
User->>Permaplant: visit public maps
activate Permaplant
Permaplant->>Nextcloud: use images etc.
activate Nextcloud
actor Admin
User->>Permaplant: membership application
Permaplant->>Admin: notification
alt accept
Admin->>Keycloak: change role to member and ask for email verification
else reject
Admin->>Keycloak: ask for new membership application
end
activate Keycloak
Admin->>Permaplant: remove sensitive data
Admin->>Nextcloud: change quota
Admin->>User: notification via email
deactivate Keycloak
deactivate Keycloak
deactivate Permaplant
deactivate Nextcloud
Season
Example of a typical sequence in one season:
sequenceDiagram
actor User
User->>+App: input of available seeds
User->>App: import base map
User->>App: planning of landscape
User->>App: planning of plants
App->>-User: list of needed seeds
World->>User: get missing seeds
User->>World: raise plantings indoor (vorziehen)
User->>App: set plantings as raised
World->>User: plants ready, weather ok
loop
App->>User: plan what should be planted
User->>World: plant
activate World
User->>+App: adjust to what was actually planned
end
World->>User: harvest and remove plants
deactivate World
User->>App: set plants as harvested or removed
World->>User: seeds for next year