diff --git a/akka-docs/src/main/paradox/_template/projectSpecificFooter.st b/akka-docs/src/main/paradox/_template/projectSpecificFooter.st
new file mode 100644
index 0000000000..a10db6f4e7
--- /dev/null
+++ b/akka-docs/src/main/paradox/_template/projectSpecificFooter.st
@@ -0,0 +1 @@
+
diff --git a/akka-docs/src/main/paradox/assets/js/warnOldDocs.js b/akka-docs/src/main/paradox/assets/js/warnOldDocs.js
new file mode 100644
index 0000000000..afa64c4e19
--- /dev/null
+++ b/akka-docs/src/main/paradox/assets/js/warnOldDocs.js
@@ -0,0 +1,186 @@
+jQuery(document).ready(function ($) {
+
+ function initOldVersionWarnings($) {
+ $.get("//akka.io/versions.json", function (akkaVersionsData) {
+ var site = extractCurrentPageInfo();
+ if (site.v === 'snapshot') {
+ showSnapshotWarning(site)
+ } else {
+ var matchingMinor =
+ Object.keys(akkaVersionsData[site.p])
+ .find(function(s) { return site.v.startsWith(s) })
+ if (matchingMinor) {
+ showVersionWarning(site, akkaVersionsData, matchingMinor)
+ }
+ }
+ })
+ }
+
+ function getInstead(akkaVersionsData, project, instead) {
+ if (Array.isArray(instead)) {
+ var found = akkaVersionsData[instead[0]][instead[1]]
+ var proj = instead[0]
+ } else {
+ var found = akkaVersionsData[project][instead]
+ var proj = project
+ }
+ return {"latest": found.latest, "project": proj}
+ }
+
+ function targetUrl(samePage, site, instead) {
+ var page = site.r
+ if (samePage !== true) {
+ // FIXME not valid anymore
+ if (page.substring(0, 5) == 'scala') {
+ page = 'scala.html'
+ } else if (page.substring(0, 4) == 'java') {
+ page = 'java.html'
+ } else {
+ page = 'index.html'
+ }
+ }
+ var project = instead.project
+ if (!project) {
+ project = site.p
+ }
+ return site.b + project + '/' + instead.latest + '/' + page
+ }
+
+ function showWarning(site, visitedVersion, text) {
+ // sneaking the style in here to make life simple
+ $('head').append('