Skip to content

Commit

Permalink
Merge pull request #27 from michelin/search_analytics_tookit
Browse files Browse the repository at this point in the history
case study ddd and team topologies
  • Loading branch information
ojauze authored Oct 7, 2024
2 parents cec6896 + 8f48547 commit f49ec2c
Show file tree
Hide file tree
Showing 34 changed files with 275 additions and 63 deletions.
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,12 @@
Gemfile.lock
.envrc
dist
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata
# Ignore folders generated by Bundler
.bundle/
vendor/
landing/node_modules
.vscode/
.vscode/
5 changes: 3 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
source "https://rubygems.org"

gem "jekyll", "~> 4.2.0"
gem "jekyll", "~> 4.2.2"

gem "webrick", "~> 1.7"

group :jekyll_plugins do
gem 'jekyll-asciidoc'
gem 'jekyll-algolia'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
Expand Down
4 changes: 2 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ WORKDIR=$(pwd)
case $1 in
build)
echo "Render web site HTML content including adoc with Jekyll in 'dist' directory from 'landing' directory"
docker run --rm --volume="$WORKDIR:/srv/jekyll" -it jekyll/jekyll:4.2.0 jekyll build --source landing --destination dist
docker run --rm --volume="$WORKDIR:/srv/jekyll" -it jekyll/jekyll:4.2.2 jekyll build --source landing --destination dist
;;
serve)
echo "Render web site (HTML content including adoc with Jekyll in 'dist' directory from 'landing' directory) & serve it at 0.0.0.0:4000"
docker run --rm --volume="$WORKDIR:/srv/jekyll" --publish 4000:4000 -it jekyll/jekyll:4.2.0 jekyll serve --source landing --destination dist
docker run --rm --volume="$WORKDIR:/srv/jekyll" --publish 4000:4000 -it jekyll/jekyll:4.2.2 jekyll serve --source landing --destination dist
;;
*)
echo "An option has to be provided to this script: either 'build' or 'serve'"
Expand Down
6 changes: 3 additions & 3 deletions landing/Gemfile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
source "https://rubygems.org"

gem "jekyll", "~> 4.3.3"
gem 'webrick'
gem "jekyll-algolia"
gem "jekyll", "~> 4.2.2"

gem "webrick", "~> 1.7"

group :jekyll_plugins do
gem 'jekyll-asciidoc'
Expand Down
5 changes: 2 additions & 3 deletions landing/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ asciidoctor:
- icons=font

algolia:
application_id: CA_WebSite
application_id: prod_site
index_name: jekyll
search_only_api_key: 96a98d738921aee297c35e182f52ce2f


keep_files:
- docs

Expand Down
3 changes: 3 additions & 0 deletions landing/_includes/google-search.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<script async src="https://cse.google.com/cse.js?cx=664726a16c61e4862">
</script>
<div class="gcse-search"></div>
1 change: 1 addition & 0 deletions landing/_includes/header-content.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<div class="links row alitems-center">

{% for link in site.data.header.links %}
<a class="bold mgl-s" href="{{link.url}}">{{link.text}}</a>
{% endfor %}
Expand Down
3 changes: 2 additions & 1 deletion landing/_includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
<img class="logo-light" src="{{site.baseurl}}/assets/imgs/continuous-architecture-logo-light.svg" alt="logo">
<img class="logo-dark" src="{{site.baseurl}}/assets/imgs/continuous-architecture-logo-dark.svg" alt="logo">
</a>
<div id="search-searchbar"></div>
{% include header-content.html %}
</div>
</header>

{% include mobile-menu.html %}
{% include mobile-menu.html %}
23 changes: 17 additions & 6 deletions landing/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,35 @@
</head>

<body>
<script type="text/javascript">
(function(window, document, dataLayerName, id) {
window[dataLayerName]=window[dataLayerName]||[],window[dataLayerName].push({start:(new Date).getTime(),event:"stg.start"});var scripts=document.getElementsByTagName('script')[0],tags=document.createElement('script');
function stgCreateCookie(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d="; expires="+e.toUTCString();f="; SameSite=Strict"}document.cookie=a+"="+b+d+f+"; path=/"}
var isStgDebug=(window.location.href.match("stg_debug")||document.cookie.match("stg_debug"))&&!window.location.href.match("stg_disable_debug");stgCreateCookie("stg_debug",isStgDebug?1:"",isStgDebug?14:-1);
var qP=[];dataLayerName!=="dataLayer"&&qP.push("data_layer_name="+dataLayerName),isStgDebug&&qP.push("stg_debug");var qPString=qP.length>0?("?"+qP.join("&")):"";
tags.async=!0,tags.src="https://continuousarchitecture.containers.piwik.pro/"+id+".js"+qPString,scripts.parentNode.insertBefore(tags,scripts);
!function(a,n,i){a[n]=a[n]||{};for(var c=0;c<i.length;c++)!function(i){a[n][i]=a[n][i]||{},a[n][i].api=a[n][i].api||function(){var a=[].slice.call(arguments,0);"string"==typeof a[0]&&window[dataLayerName].push({event:n+"."+i+":"+a[0],parameters:[].slice.call(arguments,1)})}}(i[c])}(window,"ppms",["tm","cm"]);
})(window, document, 'dataLayer', 'd99885c4-2e8a-4704-8a85-0a395376cfb5');
</script>

{% include doc-header.html %}

<main class="page-content" aria-label="Content">
<div class="doc-content">
<div class="row alitems-stretch">
{% if page.show-toc == true %}
<div class="toc">
<div class="toc-content">{{ page.document | tocify_asciidoc }}</div>
</div>
{% endif %}
<div class="toc">
{% include google-search.html %}

<div class="toc-content">{{ page.document | tocify_asciidoc }}</div>
</div>
<div class="flex-1 row justc-center">
<div class="main-content">
{% if page.title %}
<h1>{{page.title}}</h1>
{% endif %}

{% if page.author %}
<div class="mgb-s">{{page.author}}</div>
<div class="mgb-s">By {{page.author}}, {{page.email}}</div>
{% endif %}

{{ content }}
Expand Down
63 changes: 33 additions & 30 deletions landing/_layouts/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<img src="{{page.hero.image}}" alt="">
</div>
</div>

<div class="column justc-center aliself-stretch hero-text mgl-xl m-mgl-0 m-mgt-s m-alitems-center">
<h1 class="hero-title black">{{ page.catchphrase.baseline }}</h1>
<div class="light mgt-s mgb-s m-mgt-m">{{ page.hero.baseline | markdownify }}</div>
Expand Down Expand Up @@ -73,6 +74,9 @@ <h3 class="flex items-center mb-1 text-lg font-semibold" style="color: rgb(11,29

<div class="features row justc-center pdv-l">
<div class="content-wrapper column alitems-stretch">

{% include google-search.html %}

<div class="feature-card column mgb-s alitems-start">
<div class="row alitems-center mgb-xs">
<div class="feature-icon mgr-s">
Expand Down Expand Up @@ -100,6 +104,7 @@ <h2 class="large-font bold">{{ page.features.left.title }}</h2>
<div class="grey-text">{{ page.features.left.text | markdownify }}</div>
</div>
</div>

<div class="cards-wrapper">
{% for feature in page.features.right %}
<div class="feature-card {% if forloop.last == false %} mgb-s {% endif %} " id="{{ feature.title | slugify }}">
Expand All @@ -120,36 +125,6 @@ <h2 class="large-font bold">{{ feature.title }}</h2>
</div>
</div>


<div class="references row justc-center pdv-xl m-pdv-l">
<div class="content-wrapper column alitems-center">
<h3 class="xlarge-font black mgb-xl m-mgb-m" id="references">References</h3>
<div class="aliself-stretch column">
{% for ref in page.references %}
<div class="ref-item mgb-xl m-mgb-l">
{% if ref.image %}
<div class="ref-image no-shrink">
<img src="{{ref.image}}" alt="ref">
</div>
{% endif %}
<div class="ref-content" id="{{ ref.name | slugify }}">
<div class="ref-title large-font bold mgb-s m-mgt-s">
{{ref.name}}
</div>
<div class="ref-text pd-m">
{{ref.content | markdownify }}
</div>
</div>
<div class="ref-text-mobile">
{{ref.content | markdownify }}
</div>
</div>
{% endfor %}
</div>
</div>
</div>


<div class="case-studies row justc-center pdv-l m-pdv-m">
<div class="content-wrapper pdt-s pdb-l column justc-center">
<h3 class="cs-title xlarge-font black mgb-m" id="case-studies">Case Studies</h3>
Expand Down Expand Up @@ -190,4 +165,32 @@ <h6 class="large-font mgb-s bold">{{case_study.detailed_title}}</h6>
</div>
</div>

<div class="references row justc-center pdv-xl m-pdv-l">
<div class="content-wrapper column alitems-center">
<h3 class="xlarge-font black mgb-xl m-mgb-m" id="references">References</h3>
<div class="aliself-stretch column">
{% for ref in page.references %}
<div class="ref-item mgb-xl m-mgb-l">
{% if ref.image %}
<div class="ref-image no-shrink">
<img src="{{ref.image}}" alt="ref">
</div>
{% endif %}
<div class="ref-content" id="{{ ref.name | slugify }}">
<div class="ref-title large-font bold mgb-s m-mgt-s">
{{ref.name}}
</div>
<div class="ref-text pd-m">
{{ref.content | markdownify }}
</div>
</div>
<div class="ref-text-mobile">
{{ref.content | markdownify }}
</div>
</div>
{% endfor %}
</div>
</div>
</div>

</div>
11 changes: 11 additions & 0 deletions landing/_layouts/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@
{% include head.html %}

<body>
<script type="text/javascript">
(function(window, document, dataLayerName, id) {
window[dataLayerName]=window[dataLayerName]||[],window[dataLayerName].push({start:(new Date).getTime(),event:"stg.start"});var scripts=document.getElementsByTagName('script')[0],tags=document.createElement('script');
function stgCreateCookie(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d="; expires="+e.toUTCString();f="; SameSite=Strict"}document.cookie=a+"="+b+d+f+"; path=/"}
var isStgDebug=(window.location.href.match("stg_debug")||document.cookie.match("stg_debug"))&&!window.location.href.match("stg_disable_debug");stgCreateCookie("stg_debug",isStgDebug?1:"",isStgDebug?14:-1);
var qP=[];dataLayerName!=="dataLayer"&&qP.push("data_layer_name="+dataLayerName),isStgDebug&&qP.push("stg_debug");var qPString=qP.length>0?("?"+qP.join("&")):"";
tags.async=!0,tags.src="https://continuousarchitecture.containers.piwik.pro/"+id+".js"+qPString,scripts.parentNode.insertBefore(tags,scripts);
!function(a,n,i){a[n]=a[n]||{};for(var c=0;c<i.length;c++)!function(i){a[n][i]=a[n][i]||{},a[n][i].api=a[n][i].api||function(){var a=[].slice.call(arguments,0);"string"==typeof a[0]&&window[dataLayerName].push({event:n+"."+i+":"+a[0],parameters:[].slice.call(arguments,1)})}}(i[c])}(window,"ppms",["tm","cm"]);
})(window, document, 'dataLayer', 'd99885c4-2e8a-4704-8a85-0a395376cfb5');
</script>

{% include header.html %}

<main class="page-content" aria-label="Content">
Expand Down
2 changes: 1 addition & 1 deletion landing/content/pages/about-us.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ team:
role: |-
Senior Fellow @ Michelin
bio: |-
Olivier is an IT Distinguished Engineer at Michelin with almost 20 years of experience in software engineering and architecture. Passionated in finding solutions to users’ problems with technology, Olivier coaches teams in their journey to deliver incredible products and for a couple of years now platforms too. Involved in many initiatives around Michelin core business, he is also working in the service & solution and consumer experience areas. Recognized as a disrupter, he’s continuously pushing organizations to adopt new business models and new ways of working. Recently he worked on an open source project to help software architect dealing with the continuous nature of today’s software delivery.
Olivier is a Senior Fellow at Michelin with almost 20 years of experience in software engineering and architecture. Passionate in finding solutions to users’ problems with technology, Olivier coaches teams in their journey to deliver incredible products and for a couple of years now platforms too. Involved in many initiatives around Michelin core business, he is also working in the service & solution and consumer experience areas. Recognized as a disrupter, he’s continuously pushing organizations to adopt new business models and new ways of working. Recently he worked on an open source project to help software architect dealing with the continuous nature of today’s software delivery.
image: /assets/imgs/team/ojauze.jpg
- name: Nicolas Chevalier
role: Founder @ [glue N'DO](http://gluendo.com)
Expand Down
7 changes: 7 additions & 0 deletions landing/content/pages/home.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ case_studies:
content: |-
We used the Jobs-To-Be-Done approach to understand what treasurers seek to accomplish. A job is a goal or an objective independent of the products or services a bank offers. Bank clients, in this example treasurers, purchase your products or services as a mean to an end which is to help them better do their jobs. For example, treasurers forecast the cash flows that result from their operations to estimate working capital requirements. If a bank can predict small businesses’ minimum sales with high accuracy, it can invent a differentiated lending product. We illustrate this outside-in approach helped the bank innovate.
url: /docs/case-studies/banking-case-study/banking-case-study.html
- company: Michelin
logo: assets/imgs/logo-michelin.jpg
title: Architecture for flow
detailed_title: How Continuous Architecture leverages Domain Driven Design and team topologies to achieve the architecture for flow state
content: |-
A data platform team operating in the Connected Mobility field was facing delivery issues slowing them down up to a point it took ages to deliver a simple evolution or feature. This case study will show how this monolith data platform was broken up in smaller pieces and how we adapted the organization to the architecture (and not the other way around).
url: /docs/case-studies/architecture-for-flow/ultim.html
references:
- name: Continuous Architecture
image: assets/imgs/references/ca-book-cover.jpg
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit f49ec2c

Please sign in to comment.