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

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 accept
        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 plants indoor (vorziehen)
    User->>App: set batch as raised

    World->>User: plants ready, weather ok
    loop
        App->>User: batch (of plants) should be planted
        User->>World: plant batch in garden
        activate World
        User->>+App: set batch as planted


    end

    World->>User: harvest and remove plants
    deactivate World
    User->>App: set plants as harvested or removed
    World->>User: seeds for next year