0% found this document useful (0 votes)
13 views

Mobile Architecture Sketch

Mas

Uploaded by

ztechservice397
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Mobile Architecture Sketch

Mas

Uploaded by

ztechservice397
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Proposed Mobile Architecture Sketch

Dirisu Jesse Bayodele

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.

Folder Structure Overview


.
├── assets
│ ├── 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
├── lib
│ ├── app
│ │ ├── 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
│ ├── core
│ │ ├── 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
│ ├── main.dart
│ └── tree.txt
├── test
│ ├── tree.txt
│ └── widget_test.dart
└── tree.txt

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.

The lib Folder


.
├── app
│ ├── 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
├── core
│ ├── 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
├── main.dart
└── tree.txt

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

This is the base app widget.

The common folder

.
├── 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.

The modules folder

.
├── 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.

Proposed 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.

Folder Structure Overview


.
├── assets
│ ├── 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
├── lib
│ ├── app
│ │ ├── 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
│ ├── core
│ │ ├── 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
│ ├── main.dart
│ └── tree.txt
├── test
│ ├── tree.txt
│ └── widget_test.dart
└── tree.txt

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.

The lib Folder


.
├── app
│ ├── 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
├── core
│ ├── 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
├── main.dart
└── tree.txt

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

This is the base app widget.

The common folder

.
├── 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.

The modules folder

.
├── 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.

Multi App & Language Support


The Proposed app is designed with the goal of being the foundation for multiple apps, representing the
different locales, countries and language areas where the application will be used. The strategy we intend to
leverage flavours on the native (kotlin, swift) side of the app.

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

You might also like