Currently plans.spa
is a SPA hosted via my.apigateway.lambda
which is served via the my.babbel
subdomain and does not add to our localized subdomain authority.
To improve this, we want to serve them via the localized subdomains
e.g. de.babbel
or uk.babbel
.
Future plans are discussed to also move other SPAs to the localized subdomains
e.g. ppf.spa
, authentication.spa
- we do not want to maintain a forked version of my.apigateway.lambda
- migrating SPAs from
my.apigateway.lambda
tolocalized.my.apigateway.lambda
should be simple (e.g. no path manipulation)
plans.spa
relies on thelocale
in the path (which is not equal to the subdomain)- a fallback URL per
locale
needs to be in place
locales
andsubdomains
are not exact matches, a mapping needs to happen- we want to be able to run the SPAs for a short amount of time in both subdomains in parallel to enable indexing via
canonical
link tags. After that they should only be available in the localized realm
When building this based on the current architecture, we have dependencies with the following repositories / teams:
-
my.apigateway.babbel
- build as a backwards compatible clone of my.babbel (multi-purpose) app with features we do not need e.g.
- support of routes without
locale
in the path - rendering with frame.spa
- support of routes without
- owned by
DarthVader
for the purpose of logged-in users in focus - we might introduce the same issues we had with the US team on PPF, since we might have not matching / diverging requirements
- build as a backwards compatible clone of my.babbel (multi-purpose) app with features we do not need e.g.
-
static.apigateway
- entry point for the routing of the localized subdomains (inevitable)
- owned by
DeliveryHeroes
and used by theUS team
too
Moving plans.spa
into a microverse will enable us, to be independent of my.apigateway.lambda
, by introducing a slimmed version of the lambda, that only contains the features, we need.
We can also reduce complexity in the build and deployment process, by avoiding to fetch commitSHAs as reference to the version of plans.spa
from a DynamoDB and instead bake the reference as a local reference when building the artifacts for the server to provide the html for our app.
- deal with AWS session management
- setting cookies
babbeltrackinguuid
- checking for user session
_accounts_babbel_session
andremember_account_token
cookie
- requesting
client info
andgeoip
info from APIs - rendering a page and inject our js package
- meta tags
- hreflang
- viewport
- cache control
- meta tags
- rendering error pages or redirecting to other error pages (!!)
- providing data-config via ENV variables specified in terraform (e.g. apigateway_base_url)
- creating a proof of concept that simplifies the entry point for the SPA drastically
- avoiding unneeded API calls (e.g. user-settings)
- removing conditional statements
- using values instead of configuration (e.g. for the SPA artefact, meta tag headers)
- no use for a framework (express might be overhead for this)
- build a working version on staging
- create infrastructure for the project
- terraform
- github repo,
- CDN origin with the correct subdomain => locale mapping
- lambda function
- S3 bucket
- travis project
- webpack setup for generating and uploading the artefacts
- terraform
- create infrastructure for the project
- do we want to send tracking events for e.g.
request:performed
? What about logs?