Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save alexandre-touret/e0b7dfea74ff6d3483e439865e08b4eb to your computer and use it in GitHub Desktop.

Select an option

Save alexandre-touret/e0b7dfea74ff6d3483e439865e08b4eb to your computer and use it in GitHub Desktop.
workspace {
model {
properties {
"structurizr.groupSeparator" "/"
}
user = person "Traveller" {
tags "Person" "traveller" "localOrg"
description "A person who travels and uses the sustainable travel system."
}
organization = softwareSystem "Sustainable Travel Organization" {
tags "Person" "localOrg"
description "An organization that promotes and manages sustainable travel initiatives."
}
serviceProvider = softwareSystem "Sustainable Travel Service Provider" {
tags "Person" "serviceProvider"
description "A service provider that offers sustainable travel options and services."
}
iotDevice = softwareSystem "IoT Device" {
tags "external" "iot"
description "An IoT device that provides real-time data related to travel."
}
travelSystem = softwareSystem "Sustainable Travel System" {
tags "internal"
description "A system that provides information and services related to sustainable travel."
group "Traveller Services" {
travellerPortal = container "Traveller Portal" {
description "A web portal for travellers to access sustainable travel options."
technology "Web Application"
tags "internal" "portal" "traveller"
}
preferencesService = container "Preferences Service" {
description "A service that manages traveller preferences for sustainable travel."
technology "REST API"
tags "internal" "traveller"
}
gamificationService = container "Gamification Service" {
description "A service that provides gamification features for travellers."
technology "REST API"
tags "internal" "traveller"
}
gamificationDatabase = container "Gamification Database" {
description "A database that stores gamification data for travellers."
technology "Relational Database"
tags "internal" "database" "traveller"
}
preferencesDatabase = container "Preferences Database" {
description "A database that stores traveller preferences for sustainable travel."
technology "Relational Database"
tags "internal" "database" "traveller"
}
}
group "Booking" {
bookingService = container "Booking Service" {
description "A service that manages bookings for sustainable travel activities."
technology "REST API"
tags "internal" "traveller" "localOrg" "serviceProvider"
}
bookingDatabase = container "Booking Database" {
description "A database that stores booking information for sustainable travel activities."
technology "Relational Database"
tags "internal" "database" "traveller"
}
}
group "Carbon Footprint Monitoring" {
iotDeviceGateway = container "IoT Device Gateway" {
description "An IoT device gateway."
technology "MQTT"
tags "internal" "messaging" "iot"
}
iotDeviceStatisticsBatch = container "IoT Device Statistics" {
description "A service that processes and analyzes data from IoT devices."
technology "Stream Processing"
tags "internal" "iot"
}
carbonEfficiencyService = container "Carbon Efficiency Service" {
description "A service that calculates and provides carbon efficiency metrics."
technology "REST API"
tags "internal" "traveller" "iot" "serviceProvider"
}
iotDeviceDatabase = container "IoT Device Database" {
description "A database that stores IoT device data."
technology "Relational Database"
tags "internal" "database" "iot"
}
}
group "Local Organization Services" {
organizationPortal = container "Organization Portal" {
description "A web portal for the organization to manage sustainable travel initiatives."
technology "Web Application"
tags "internal" "portal" "localOrg"
}
participantManagementService = container "Participant Management Service" {
description "Handles participant registration, management, and project progress tracking."
technology "REST API"
tags "internal" "localOrg"
}
projectDatabase = container "Project Database" {
description "Stores information about sustainable travel projects and participants."
technology "Relational Database"
tags "internal" "database" "localOrg"
}
communicationService = container "Communication Service" {
description "Enables communication between organizations and interested travellers."
technology "Messaging Service"
tags "internal" "messaging" "localOrg"
}
}
group "Service Provider Profile" {
serviceProviderPortal = container "Service Provider Portal" {
description "A web portal for service providers to manage their profiles and offers."
technology "Web Application"
tags "internal" "portal" "serviceProvider"
}
serviceProviderService = container "Service Provider Management Service" {
description "Manages registration, presentation, and eco-certification of service providers (accommodations, guides, local producers)."
technology "Web Application"
tags "internal" "portal" "serviceProvider"
}
ecoSolidarityPackageService = container "Eco-Solidarity Package Service" {
description "Allows providers to propose eco-solidarity packages including ecological activities."
technology "REST API"
tags "internal" "serviceProvider"
}
ecoSolidarityPackageDatabase = container "Eco-Solidarity Package Database" {
description "Stores eco-solidarity package information."
technology "Relational Database"
tags "internal" "database" "serviceProvider"
}
ecologicalEngagementIndicators = container "Ecological Engagement Indicators" {
description "Provides indicators of the ecological commitment of service providers."
technology "REST API"
tags "internal" "serviceProvider"
}
}
group "Transaction Management" {
donationService = container "Donation Service" {
description "Handles donations for sustainable travel projects."
technology "REST API"
tags "internal" "traveller" "localOrg"
}
paymentService = container "Payment Service" {
description "Handles payments and transactions for sustainable travel activities."
technology "REST API"
tags "internal" "traveller" "localOrg"
}
}
}
psp = softwareSystem "Payment Service Provider" {
tags "external" "localOrg" "traveller"
}
user -> travellerPortal "Searches for sustainable travel, Proposes activities, browse, update options" "HTTPS"
organization -> travelSystem "Publish Probono activities, Manage participants, Communication with travellers"
serviceProvider -> travelSystem "Publish activities & Offers, Manage bookings, Provide information"
travelSystem -> psp "Handle payments & Donations, Process transactions"
iotDevice -> iotDeviceGateway "Provides real-time data on travel conditions, environmental impact, etc."
travellerPortal -> gamificationService "Provides gamification features for travellers" "REST"
gamificationService -> gamificationDatabase "Stores gamification data for travellers" "JDBC"
// travellerPortal
travellerPortal -> bookingService "Manages bookings for sustainable travel activities" "REST"
bookingService -> bookingDatabase "Stores and retrieves booking information" "JDBC"
travellerPortal -> preferencesService "Manages traveller preferences for sustainable travel" "REST"
preferencesService -> preferencesDatabase "Stores and retrieves traveller preferences" "JDBC"
iotDeviceStatisticsBatch -> iotDeviceGateway "Gets real-time data to the IoT device gateway" "MQTT"
iotDeviceStatisticsBatch -> iotDeviceDatabase "Stores IoT device statistics" "JDBC"
carbonEfficiencyService -> iotDeviceDatabase "Accesses IoT device data for carbon efficiency metrics" "JDBC"
travellerPortal -> carbonEfficiencyService "Accesses carbon efficiency metrics" "REST"
organization -> organizationPortal "Manages sustainable travel initiatives" "HTTPS"
organizationPortal -> donationService "Handles donations for sustainable travel projects" "REST"
donationService -> psp "Handles donations for sustainable travel projects" "REST"
organizationPortal -> participantManagementService "Manages participant registration and project progress" "REST"
participantManagementService -> projectDatabase "Stores information about sustainable travel projects and participants" "JDBC"
communicationService -> organization "Enables communication between organizations and interested travellers" "Messaging"
communicationService -> user "Enables communication between organizations and interested travellers" "Messaging"
participantManagementService -> bookingService "Manages bookings for sustainable travel activities" "REST"
serviceProvider -> serviceProviderPortal "Manages service provider profiles and offers" "HTTPS"
serviceProviderPortal -> serviceProviderService "Manages service provider profiles and offers" "HTTPS"
ecoSolidarityPackageService -> serviceProviderService "Allows providers to propose eco-solidarity packages" "REST"
ecologicalEngagementIndicators -> carbonEfficiencyService "Provides indicators of ecological commitment" "REST"
serviceProviderPortal -> ecoSolidarityPackageService "Allows providers to propose eco-solidarity packages" "REST"
serviceProviderPortal -> ecologicalEngagementIndicators "Provides indicators of ecological commitment" "REST"
serviceProviderService -> bookingService "Manages bookings for sustainable travel activities" "REST"
ecoSolidarityPackageService -> ecoSolidarityPackageDatabase "Stores eco-solidarity package information" "JDBC"
travellerPortal -> donationService "Handles donations for sustainable travel projects" "REST"
travellerPortal -> paymentService "Handles payments and transactions for sustainable travel activities" "REST"
paymentService -> psp "Processes payments and transactions" "REST"
psp -> paymentService "Callback" "REST"
psp -> donationService "Callback" "REST"
paymentService -> bookingService "Confirm bookings and transactions" "REST"
bookingService -> gamificationService "Updates gamification data based on bookings" "REST"
donationService -> gamificationService "Updates gamification data based on donations" "REST"
participantManagementService -> communicationService "Sends notifications to participants" "Messaging"
bookingService -> communicationService "Sends booking confirmations and updates" "Messaging"
serviceProviderService -> communicationService "Sends notifications about projects" "Messaging"
gamificationService -> communicationService "Sends gamification updates to travellers" "Messaging"
}
views {
systemContext travelSystem "ContextView" {
include *
}
container travelSystem "ContainerView" {
include *
}
filtered "ContainerView" include "Relationship,traveller" "TravellerPortal"
filtered "ContainerView" include "Relationship,iot" "CarbonEfficiencyMonitoring"
filtered "ContainerView" include "Relationship,localOrg" "LocalOrganizationPortal"
filtered "ContainerView" include "Relationship,serviceProvider" "ServiceProvider"
filtered "ContainerView" include "Element,Relationship" "landscape-all"
styles {
element "external" {
shape RoundedBox
}
element "internal" {
background #1168bd
color #ffffff
shape RoundedBox
}
element "Person" {
shape person
background #08427b
color #ffffff
}
element "database" {
shape cylinder
}
element "messaging" {
shape pipe
}
element "portal" {
shape WebBrowser
}
}
}
configuration {
scope softwaresystem
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment