Get your X from Y to Z
- Passengers - Individuals, Groups, or Wards taking a trip.
- Providers - Owners or Operators providing the service.
- Managers - Fleet Managers or Dispatchers managing the service.
To get started, you'll need to first set up some credentials for the app by ensuring you have the following files with the given variables.
./local.properties
- Usually generated by Android Studio and contains a path to the Android SDK../secrets.properties
- This will need to be created in the root of the project.- MAPS_API_KEY
- AD_MOB_APP_ID
- APP_LOVIN_API_KEY
./local.defaults.properties
- defines defaults for the above, checked in VC. Used by :app-android secrets task./stripe-secrets.properties
- This will need to be created in the root of the project.- STRIPE_API_KEY_TEST
- STRIPE_API_KEY_LIVE
- STRIPE_STAGING_URL
- STRIPE_PRODUCTION_URL
./stripe-local.defaults.properties
- defines defaults for the above, checked in VC~/.gradle/gradle.properties
- user global gradle properties./gradle.properties
- project gradle properties
The client-side applications are following typical Android MVVM and Repository patterns within a 4-layer Clean Architecture, while the server-side applications are following an Express.js-derived pattern usually considered MVC, though we attempt to remain reactive, mapping any information to a higher abstraction before passing it to a higher layer of abstraction(here lower) and mapping the results back, instead of injecting output ports that would allow the model to directly control the output.
%%{
init: {
'theme': 'neutral'
}
}%%
classDiagram
namespace Api-Frameworks-Drivers {
class ServerKt {
fun main(vararg args: String)
}
class Routing
class ConnectionPool
class Database
}
ServerKt --> Routing
Database --> ConnectionPool
namespace Frameworks-Drivers {
class UI
class Views
class Cache
class Service
}
namespace Api-Adapters {
class Controllers
}
Routing --> Controllers
namespace Adapters {
class Repositories
class ViewModels
class IDataSources
}
Cache --|> IDataSources
Service --|> IDataSources
Repositories --> IDataSources
UI --> ViewModels
Views --> ViewModels
namespace Api-Application-Business-Logic {
class Services
class IDatabase
}
Database --|> IDatabase
Services --> IDatabase
Controllers --> Services
namespace Application-Business-Logic {
class Interactors
class IRepositories
}
Repositories --|> IRepositories
Interactors --> IRepositories
ViewModels --> Interactors
ViewModels --> IRepositories
namespace Enterprise-Business-Logic {
class Entities
}
Interactors --> Entities
IRepositories --> Entities
Services --> Entities
%%{
init: {
'theme': 'neutral'
}
}%%
graph LR
classDef default,library fill:#fff,stroke:#333,stroke-width:4px;
classDef program fill:#9f9,stroke:#333,stroke-width:4px;
classDef testModule fill:#f99,stroke:#333,stroke-width:4px;
:api-client-tests:::testModule --> :api
:api-client-tests --> :app-android
subgraph Programs
:api:::program
:app-android:::program
:app-desktop:::program
:app-ios:::program
end
:api --> :api-dtos
:app-android --> :app-shared
:app-desktop --> :app-shared
subgraph app-library
:app-shared
end
:app-shared --> :feature-drive
:app-shared --> :feature-ride
:app-shared --> :feature-manage
:app-shared --> :feature-login
subgraph features
:feature-drive
:feature-ride
:feature-manage
:feature-login
end
:feature-drive --> :client-all
:feature-ride --> :client-all
:feature-manage --> :client-all
:feature-login --> :client-all
:feature-manage --> :feature-drive
:feature-login --> :feature-drive
:feature-login --> :feature-ride
subgraph shared
:shared-entities
end
subgraph server
:api-dtos
end
subgraph client
:client-all --> :shared-entities
:client-all --> :client-common
:client-all --> :client-interactors
:client-all --> :client-data
:client-all --> :client-remote
:client-all --> :client-local
:client-all --> :client-view-models
:client-all --> :client-ui
:client-all --> :client-navigation
:client-data --> :shared-entities
:client-data --> :client-common
:client-data --> :client-local
:client-data --> :client-remote
:client-ui --> :shared-entities
:client-ui --> :client-common
:client-interactors --> :client-common
:client-interactors --> :client-data
:client-local --> :client-common
:client-local --> :shared-entities
:client-navigation --> :client-common
:client-navigation --> :shared-entities
:client-remote --> :client-common
:client-remote --> :shared-entities
:client-remote --> :api-dtos
:client-ui --> :client-common
:client-ui --> :shared-entities
:client-ui --> :client-view-models
:client-view-models --> :client-common
:client-view-models --> :shared-entities
:client-view-models --> :client-interactors
end