Mobile Architecture Sketch
Mobile Architecture Sketch
We attempt a description of the architecture (i.e folder structure) intended for the Proposed App in this
document. We intend to follow a domain driven approach to our architecture.
56 directories, 65 files
7 directories, 8 files
The asset folder encapsulates files and media that may be bundled with the application, which may be
relevant to base settings or the manner in which the app may be presented. It also holds language files for
internationalization.
46 directories, 54 files
The lib folder serves as the core of our app, holding all application code, business logic and configurations
relevant to the actual functioning of the application. It encapsulates the following:
Core Folder
.
├── config
│ └── app_config.dart
├── data
│ ├── constants
│ │ ├── regex.dart
│ │ └── strings.dart
│ └── enums
│ └── screen_type.dart
├── infra
│ └── app_firebase_plugin.dart
├── network
│ ├── app_http_client.dart
│ ├── interceptors
│ │ └── log_interceptor.dart
│ └── models
│ └── app_network_response.dart
├── services
│ ├── ipc
│ │ └── app_method_channels.dart
│ └── storage
│ └── app_db_client.dart
├── tree.txt
└── utilities
├── app_date_utilities.dart
├── app_form_validation_utilities.dart
├── app_helpers.dart
├── app_logger.dart
├── app_responsive_utillities.dart
├── app_text_format_utilities.dart
└── app_typedef_utilities.dart
12 directories, 18 files
This folder holds central configurations, services and utilities relevant to the functionality of the application.
This folder could well be separated into a standalone library.
App Folder
.
├── borg.dart
├── common
│ ├── data
│ │ ├── enums
│ │ └── podos
│ │ ├── focus.dart
│ │ └── prefix_style.dart
│ ├── extensions
│ │ └── app_extensions.dart
│ ├── presentation
│ │ ├── assets
│ │ │ ├── app_images.dart
│ │ │ └── app_translations.dart
│ │ ├── theme
│ │ │ ├── colors.dart
│ │ │ ├── input_styles.dart
│ │ │ ├── text_styles.dart
│ │ │ └── theme.dart
│ │ └── widgets
│ │ ├── fragments
│ │ │ ├── app_bars
│ │ │ │ └── app_bars.dart
│ │ │ ├── buttons
│ │ │ │ ├── app_back_button.dart
│ │ │ │ └── app_button.dart
│ │ │ ├── headers
│ │ │ │ └── form_header.dart
│ │ │ ├── images
│ │ │ │ ├── app_fade_in_image.dart
│ │ │ │ ├── app_logo.dart
│ │ │ │ └── app_svg.dart
│ │ │ ├── indicators
│ │ │ │ ├── app_radio_indcator.dart
│ │ │ │ └── app_spinner.dart
│ │ │ ├── inputs
│ │ │ │ └── app_text_field.dart
│ │ │ └── spacers
│ │ │ ├── app_divider.dart
│ │ │ └── app_sized_box.dart
│ │ ├── overlays
│ │ │ └── app_keyboard_overlay.dart
│ │ └── typography
│ │ ├── app_text.dart
│ │ └── button_text.dart
│ └── routing
│ ├── app_router.dart
│ └── app_routes.dart
├── modules
│ ├── launcher
│ │ ├── data
│ │ │ ├── models
│ │ │ │ └── launch_response_model.dart
│ │ │ ├── params
│ │ │ │ └── launch_request_param.dart
│ │ │ └── podos
│ │ │ └── launch_person.dart
│ │ ├── launcher_di.dart
│ │ ├── presentation
│ │ │ ├── logic
│ │ │ └── ui
│ │ │ ├── mixins
│ │ │ └── screens
│ │ │ └── launch_screen.dart
│ │ └── services
│ │ └── launcher_http_service.dart
│ └── modules_di.dart
└── tree.txt
32 directories, 35 files
The App folder holds application specific code, it includes the following
.
├── data
│ ├── enums
│ └── podos
│ ├── focus.dart
│ └── prefix_style.dart
├── extensions
│ └── app_extensions.dart
├── presentation
│ ├── assets
│ │ ├── app_images.dart
│ │ └── app_translations.dart
│ ├── theme
│ │ ├── colors.dart
│ │ ├── input_styles.dart
│ │ ├── text_styles.dart
│ │ └── theme.dart
│ └── widgets
│ ├── fragments
│ │ ├── app_bars
│ │ │ └── app_bars.dart
│ │ ├── buttons
│ │ │ ├── app_back_button.dart
│ │ │ └── app_button.dart
│ │ ├── headers
│ │ │ └── form_header.dart
│ │ ├── images
│ │ │ ├── app_fade_in_image.dart
│ │ │ ├── app_logo.dart
│ │ │ └── app_svg.dart
│ │ ├── indicators
│ │ │ ├── app_radio_indcator.dart
│ │ │ └── app_spinner.dart
│ │ ├── inputs
│ │ │ └── app_text_field.dart
│ │ └── spacers
│ │ ├── app_divider.dart
│ │ └── app_sized_box.dart
│ ├── overlays
│ │ └── app_keyboard_overlay.dart
│ └── typography
│ ├── app_text.dart
│ └── button_text.dart
├── routing
│ ├── app_router.dart
│ └── app_routes.dart
└── tree.txt
19 directories, 27 files
This folder commonly reused widgets, themes, navigation tables and data objects.
.
├── launcher
│ ├── data
│ │ ├── models
│ │ │ └── launch_response_model.dart
│ │ ├── params
│ │ │ └── launch_request_param.dart
│ │ └── podos
│ │ └── launch_person.dart
│ ├── launcher_di.dart
│ ├── presentation
│ │ ├── ui
│ │ │ ├── arguments
│ │ │ ├── mixins
│ │ │ ├── screens
│ │ │ │ └── launch_screen.dart
│ │ │ └── widgets
│ │ └── view_models
│ └── services
│ └── launcher_http_service.dart
├── modules_di.dart
└── tree.txt
13 directories, 8 files
This folder holds a collection of behavioural domains, which are logical groupings of app functionality. In the
presented tree we have the auth domain as a folder which encapsulates auth related functionality. Holding
files and folders relevant to presentation, data fetch and modelling.
56 directories, 65 files
The Asset Folder
.
├── fonts
│ └── Font.otf
├── images
│ ├── raster
│ │ ├── 2.0x
│ │ │ └── logo.png
│ │ ├── 3.0x
│ │ │ └── logo.png
│ │ └── logo.png
│ └── vector
│ └── logo.svg
├── translations
│ ├── ch.json
│ └── en.json
└── tree.txt
7 directories, 8 files
The asset folder encapsulates files and media that may be bundled with the application, which may be
relevant to base settings or the manner in which the app may be presented. It also holds language files for
internationalization.
46 directories, 54 files
The lib folder serves as the core of our app, holding all application code, business logic and configurations
relevant to the actual functioning of the application. It encapsulates the following:
Core Folder
.
├── config
│ └── app_config.dart
├── data
│ ├── constants
│ │ ├── regex.dart
│ │ └── strings.dart
│ └── enums
│ └── screen_type.dart
├── infra
│ └── app_firebase_plugin.dart
├── network
│ ├── app_http_client.dart
│ ├── interceptors
│ │ └── log_interceptor.dart
│ └── models
│ └── app_network_response.dart
├── services
│ ├── ipc
│ │ └── app_method_channels.dart
│ └── storage
│ └── app_db_client.dart
├── tree.txt
└── utilities
├── app_date_utilities.dart
├── app_form_validation_utilities.dart
├── app_helpers.dart
├── app_logger.dart
├── app_responsive_utillities.dart
├── app_text_format_utilities.dart
└── app_typedef_utilities.dart
12 directories, 18 files
This folder holds central configurations, services and utilities relevant to the functionality of the application.
This folder could well be separated into a standalone library.
App Folder
.
├── borg.dart
├── common
│ ├── data
│ │ ├── enums
│ │ └── podos
│ │ ├── focus.dart
│ │ └── prefix_style.dart
│ ├── extensions
│ │ └── app_extensions.dart
│ ├── presentation
│ │ ├── assets
│ │ │ ├── app_images.dart
│ │ │ └── app_translations.dart
│ │ ├── theme
│ │ │ ├── colors.dart
│ │ │ ├── input_styles.dart
│ │ │ ├── text_styles.dart
│ │ │ └── theme.dart
│ │ └── widgets
│ │ ├── fragments
│ │ │ ├── app_bars
│ │ │ │ └── app_bars.dart
│ │ │ ├── buttons
│ │ │ │ ├── app_back_button.dart
│ │ │ │ └── app_button.dart
│ │ │ ├── headers
│ │ │ │ └── form_header.dart
│ │ │ ├── images
│ │ │ │ ├── app_fade_in_image.dart
│ │ │ │ ├── app_logo.dart
│ │ │ │ └── app_svg.dart
│ │ │ ├── indicators
│ │ │ │ ├── app_radio_indcator.dart
│ │ │ │ └── app_spinner.dart
│ │ │ ├── inputs
│ │ │ │ └── app_text_field.dart
│ │ │ └── spacers
│ │ │ ├── app_divider.dart
│ │ │ └── app_sized_box.dart
│ │ ├── overlays
│ │ │ └── app_keyboard_overlay.dart
│ │ └── typography
│ │ ├── app_text.dart
│ │ └── button_text.dart
│ └── routing
│ ├── app_router.dart
│ └── app_routes.dart
├── modules
│ ├── launcher
│ │ ├── data
│ │ │ ├── models
│ │ │ │ └── launch_response_model.dart
│ │ │ ├── params
│ │ │ │ └── launch_request_param.dart
│ │ │ └── podos
│ │ │ └── launch_person.dart
│ │ ├── launcher_di.dart
│ │ ├── presentation
│ │ │ ├── logic
│ │ │ └── ui
│ │ │ ├── mixins
│ │ │ └── screens
│ │ │ └── launch_screen.dart
│ │ └── services
│ │ └── launcher_http_service.dart
│ └── modules_di.dart
└── tree.txt
32 directories, 35 files
The App folder holds application specific code, it includes the following
The borg.dart file
.
├── data
│ ├── enums
│ └── podos
│ ├── focus.dart
│ └── prefix_style.dart
├── extensions
│ └── app_extensions.dart
├── presentation
│ ├── assets
│ │ ├── app_images.dart
│ │ └── app_translations.dart
│ ├── theme
│ │ ├── colors.dart
│ │ ├── input_styles.dart
│ │ ├── text_styles.dart
│ │ └── theme.dart
│ └── widgets
│ ├── fragments
│ │ ├── app_bars
│ │ │ └── app_bars.dart
│ │ ├── buttons
│ │ │ ├── app_back_button.dart
│ │ │ └── app_button.dart
│ │ ├── headers
│ │ │ └── form_header.dart
│ │ ├── images
│ │ │ ├── app_fade_in_image.dart
│ │ │ ├── app_logo.dart
│ │ │ └── app_svg.dart
│ │ ├── indicators
│ │ │ ├── app_radio_indcator.dart
│ │ │ └── app_spinner.dart
│ │ ├── inputs
│ │ │ └── app_text_field.dart
│ │ └── spacers
│ │ ├── app_divider.dart
│ │ └── app_sized_box.dart
│ ├── overlays
│ │ └── app_keyboard_overlay.dart
│ └── typography
│ ├── app_text.dart
│ └── button_text.dart
├── routing
│ ├── app_router.dart
│ └── app_routes.dart
└── tree.txt
19 directories, 27 files
This folder commonly reused widgets, themes, navigation tables and data objects.
.
├── launcher
│ ├── data
│ │ ├── models
│ │ │ └── launch_response_model.dart
│ │ ├── params
│ │ │ └── launch_request_param.dart
│ │ └── podos
│ │ └── launch_person.dart
│ ├── launcher_di.dart
│ ├── presentation
│ │ ├── ui
│ │ │ ├── arguments
│ │ │ ├── mixins
│ │ │ ├── screens
│ │ │ │ └── launch_screen.dart
│ │ │ └── widgets
│ │ └── view_models
│ └── services
│ └── launcher_http_service.dart
├── modules_di.dart
└── tree.txt
13 directories, 8 files
This folder holds a collection of behavioural domains, which are logical groupings of app functionality. In the
presented tree we have the auth domain as a folder which encapsulates auth related functionality. Holding
files and folders relevant to presentation, data fetch and modelling.
Kotlin
android {
flavorDimensions "app"
productFlavors {
cs {
dimension "app"
resValue "string", "app_name", "CS - Proposed"
applicationId "com.borg.app"
applicationIdSuffix ".cs"
versionNameSuffix "-cs"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_cs"
]
}
en {
dimension "app"
resValue "string", "app_name", "EN - Proposed"
applicationId "com.borg.app"
applicationIdSuffix ".en"
versionNameSuffix "-en"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_en"
]
}
en {
dimension "app"
resValue "string", "app_name", "DE - Proposed"
applicationId "com.borg.app"
applicationIdSuffix ".de"
versionNameSuffix "-de"
manifestPlaceholders = [
appIcon: "@mipmap/ic_launcher_de"
]
}
}
}
Swift
The native flavourse allow for us to build different variants of the app, they correspond with the various
languages we wish to support. e,g.:
Table of European Language Codes
Language Code
Bulgarian bg
Croatian hr
Czech cs
Danish da
Dutch nl
English en
Estonian et
Finnish fi
French fr
German de
Greek el
Hungarian hu
Irish ga
Italian it
Latvian lv
Lithuanian lt
Maltese mt
Polish pl
Portuguese pt
Romanian ro
Slovak sk
Slovenian sl
Spanish es
Swedish sv
In conjunction with the native side flavours, we would implement multiple entry points into the application.
Which would be represented by a main.dart files suffixed with relevant language codes. These files serve
as the point for injecting themes and configurations relevant to a specific flavour of the app.
.
├── app
├── main.dart
├── main_cs.dart
├── main_de.dart
└── tree.txt
1 directories, 4 files