diff --git a/config.toml b/config.toml
index 7e2b50cef..3684756b7 100644
--- a/config.toml
+++ b/config.toml
@@ -1,10 +1,18 @@
 baseURL = "/"
-languageCode = "en-us"
 title = "CodeYourFuture Curriculum"
-languageLang = "en"
 sectionPagesMenu = "main"
 enableEmoji = true
 
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = false
+
+[languages]
+  [languages.en]
+    baseURL = "/"
+    contentDir = 'content/en'
+    languageCode = 'en-GB'
+    languageName = 'English'
+
 [menus]
     [[menus.secondary]]
         name = "Guides πŸ‘ˆπŸΎ"
@@ -27,6 +35,9 @@ tree = "https://github.com/CodeYourFuture/curriculum/tree/main/"
 edit = "https://github.com/CodeYourFuture/curriculum/edit/main/"
 root = "curriculum"
 orgapi = "https://api.github.com/repos/CodeYourFuture/"
+# We use a proxy which concatenates paginated responses, otherwise we miss results.
+# Daniel is currently hosting this code https://github.com/illicitonion/github-issue-proxy but we should work out a long-term maintainable solution to this problem.
+issuesorgapi = "https://github-issue-proxy.illicitonion.com/repos/CodeYourFuture/"
 
 [markup]
 [markup.tableOfContents]
diff --git a/config/issues-are-cached-and-incomplete/config.toml b/config/issues-are-cached-and-incomplete/config.toml
new file mode 100644
index 000000000..c9344d4d3
--- /dev/null
+++ b/config/issues-are-cached-and-incomplete/config.toml
@@ -0,0 +1,12 @@
+# This config is optimised for speed of local interation of general Hugo set-up without worrying about issue freshness or completeness.
+# To build with this config, run `hugo server --environment issues-are-cached-and-incomplete`.
+
+[params]
+# Don't use the paginating proxy, because it's slow.
+# This means some issues will be missing when fetched.
+issuesorgapi = "https://api.github.com/repos/CodeYourFuture/"
+
+[caches.getjson]
+# Cache JSON responses because making fetches is slow when iterating.
+# This means updates to issues (or newly created ones) won't be picked up when rebuilding.
+maxAge = "4h"
diff --git a/content/_index.md b/content/en/_index.md
similarity index 100%
rename from content/_index.md
rename to content/en/_index.md
diff --git a/content/blocks/afternoon-break/index.md b/content/en/blocks/afternoon-break/index.md
similarity index 100%
rename from content/blocks/afternoon-break/index.md
rename to content/en/blocks/afternoon-break/index.md
diff --git a/content/blocks/backlog/index.md b/content/en/blocks/backlog/index.md
similarity index 100%
rename from content/blocks/backlog/index.md
rename to content/en/blocks/backlog/index.md
diff --git a/content/blocks/blockers/index.md b/content/en/blocks/blockers/index.md
similarity index 100%
rename from content/blocks/blockers/index.md
rename to content/en/blocks/blockers/index.md
diff --git a/content/blocks/coding-101/index.md b/content/en/blocks/coding-101/index.md
similarity index 100%
rename from content/blocks/coding-101/index.md
rename to content/en/blocks/coding-101/index.md
diff --git a/content/blocks/coursework/index.md b/content/en/blocks/coursework/index.md
similarity index 100%
rename from content/blocks/coursework/index.md
rename to content/en/blocks/coursework/index.md
diff --git a/content/blocks/energiser/index.md b/content/en/blocks/energiser/index.md
similarity index 100%
rename from content/blocks/energiser/index.md
rename to content/en/blocks/energiser/index.md
diff --git a/content/blocks/kata/index.md b/content/en/blocks/kata/index.md
similarity index 100%
rename from content/blocks/kata/index.md
rename to content/en/blocks/kata/index.md
diff --git a/content/blocks/lunch/index.md b/content/en/blocks/lunch/index.md
similarity index 100%
rename from content/blocks/lunch/index.md
rename to content/en/blocks/lunch/index.md
diff --git a/content/blocks/morning-break/index.md b/content/en/blocks/morning-break/index.md
similarity index 100%
rename from content/blocks/morning-break/index.md
rename to content/en/blocks/morning-break/index.md
diff --git a/content/blocks/pd-placeholder/index.md b/content/en/blocks/pd-placeholder/index.md
similarity index 100%
rename from content/blocks/pd-placeholder/index.md
rename to content/en/blocks/pd-placeholder/index.md
diff --git a/content/blocks/requirements/index.md b/content/en/blocks/requirements/index.md
similarity index 100%
rename from content/blocks/requirements/index.md
rename to content/en/blocks/requirements/index.md
diff --git a/content/blocks/retro/index.md b/content/en/blocks/retro/index.md
similarity index 100%
rename from content/blocks/retro/index.md
rename to content/en/blocks/retro/index.md
diff --git a/content/blocks/search-terms/index.md b/content/en/blocks/search-terms/index.md
similarity index 100%
rename from content/blocks/search-terms/index.md
rename to content/en/blocks/search-terms/index.md
diff --git a/content/blocks/spaced-repetition/index.md b/content/en/blocks/spaced-repetition/index.md
similarity index 100%
rename from content/blocks/spaced-repetition/index.md
rename to content/en/blocks/spaced-repetition/index.md
diff --git a/content/blocks/study-45/index.md b/content/en/blocks/study-45/index.md
similarity index 100%
rename from content/blocks/study-45/index.md
rename to content/en/blocks/study-45/index.md
diff --git a/content/blocks/study-60/index.md b/content/en/blocks/study-60/index.md
similarity index 100%
rename from content/blocks/study-60/index.md
rename to content/en/blocks/study-60/index.md
diff --git a/content/blocks/study-90/index.md b/content/en/blocks/study-90/index.md
similarity index 100%
rename from content/blocks/study-90/index.md
rename to content/en/blocks/study-90/index.md
diff --git a/content/blocks/study-group/index.md b/content/en/blocks/study-group/index.md
similarity index 100%
rename from content/blocks/study-group/index.md
rename to content/en/blocks/study-group/index.md
diff --git a/content/blocks/success-criteria/index.md b/content/en/blocks/success-criteria/index.md
similarity index 100%
rename from content/blocks/success-criteria/index.md
rename to content/en/blocks/success-criteria/index.md
diff --git a/content/blocks/telephone/index.md b/content/en/blocks/telephone/index.md
similarity index 100%
rename from content/blocks/telephone/index.md
rename to content/en/blocks/telephone/index.md
diff --git a/content/blocks/useful-links/index.md b/content/en/blocks/useful-links/index.md
similarity index 100%
rename from content/blocks/useful-links/index.md
rename to content/en/blocks/useful-links/index.md
diff --git a/content/blocks/user-stories/index.md b/content/en/blocks/user-stories/index.md
similarity index 100%
rename from content/blocks/user-stories/index.md
rename to content/en/blocks/user-stories/index.md
diff --git a/content/databases/_index.md b/content/en/databases/_index.md
similarity index 100%
rename from content/databases/_index.md
rename to content/en/databases/_index.md
diff --git a/content/databases/blocks/communicating-with-db/index.md b/content/en/databases/blocks/communicating-with-db/index.md
similarity index 100%
rename from content/databases/blocks/communicating-with-db/index.md
rename to content/en/databases/blocks/communicating-with-db/index.md
diff --git a/content/databases/blocks/creating-a-table/index.md b/content/en/databases/blocks/creating-a-table/index.md
similarity index 100%
rename from content/databases/blocks/creating-a-table/index.md
rename to content/en/databases/blocks/creating-a-table/index.md
diff --git a/content/databases/blocks/crud/crud.png b/content/en/databases/blocks/crud/crud.png
similarity index 100%
rename from content/databases/blocks/crud/crud.png
rename to content/en/databases/blocks/crud/crud.png
diff --git a/content/databases/blocks/crud/index.md b/content/en/databases/blocks/crud/index.md
similarity index 100%
rename from content/databases/blocks/crud/index.md
rename to content/en/databases/blocks/crud/index.md
diff --git a/content/databases/blocks/defining-keys/index.md b/content/en/databases/blocks/defining-keys/index.md
similarity index 100%
rename from content/databases/blocks/defining-keys/index.md
rename to content/en/databases/blocks/defining-keys/index.md
diff --git a/content/databases/blocks/integration-with-node/index.md b/content/en/databases/blocks/integration-with-node/index.md
similarity index 100%
rename from content/databases/blocks/integration-with-node/index.md
rename to content/en/databases/blocks/integration-with-node/index.md
diff --git a/content/databases/blocks/introduction-to-db/index.md b/content/en/databases/blocks/introduction-to-db/index.md
similarity index 100%
rename from content/databases/blocks/introduction-to-db/index.md
rename to content/en/databases/blocks/introduction-to-db/index.md
diff --git a/content/databases/blocks/introduction-to-postgresql/index.md b/content/en/databases/blocks/introduction-to-postgresql/index.md
similarity index 100%
rename from content/databases/blocks/introduction-to-postgresql/index.md
rename to content/en/databases/blocks/introduction-to-postgresql/index.md
diff --git a/content/databases/blocks/introduction-to-postgresql/table-diagram.png b/content/en/databases/blocks/introduction-to-postgresql/table-diagram.png
similarity index 100%
rename from content/databases/blocks/introduction-to-postgresql/table-diagram.png
rename to content/en/databases/blocks/introduction-to-postgresql/table-diagram.png
diff --git a/content/databases/blocks/joining-tables/index.md b/content/en/databases/blocks/joining-tables/index.md
similarity index 100%
rename from content/databases/blocks/joining-tables/index.md
rename to content/en/databases/blocks/joining-tables/index.md
diff --git a/content/databases/blocks/joining-tables/join-diagram.png b/content/en/databases/blocks/joining-tables/join-diagram.png
similarity index 100%
rename from content/databases/blocks/joining-tables/join-diagram.png
rename to content/en/databases/blocks/joining-tables/join-diagram.png
diff --git a/content/databases/blocks/more-selective/index.md b/content/en/databases/blocks/more-selective/index.md
similarity index 100%
rename from content/databases/blocks/more-selective/index.md
rename to content/en/databases/blocks/more-selective/index.md
diff --git a/content/databases/blocks/recap-node/index.md b/content/en/databases/blocks/recap-node/index.md
similarity index 100%
rename from content/databases/blocks/recap-node/index.md
rename to content/en/databases/blocks/recap-node/index.md
diff --git a/content/databases/blocks/recap-node/postman-get-cust-all-results.png b/content/en/databases/blocks/recap-node/postman-get-cust-all-results.png
similarity index 100%
rename from content/databases/blocks/recap-node/postman-get-cust-all-results.png
rename to content/en/databases/blocks/recap-node/postman-get-cust-all-results.png
diff --git a/content/databases/blocks/recap-node/postman-get-cust-all.odg b/content/en/databases/blocks/recap-node/postman-get-cust-all.odg
similarity index 100%
rename from content/databases/blocks/recap-node/postman-get-cust-all.odg
rename to content/en/databases/blocks/recap-node/postman-get-cust-all.odg
diff --git a/content/databases/blocks/recap-node/postman-get-cust-all.png b/content/en/databases/blocks/recap-node/postman-get-cust-all.png
similarity index 100%
rename from content/databases/blocks/recap-node/postman-get-cust-all.png
rename to content/en/databases/blocks/recap-node/postman-get-cust-all.png
diff --git a/content/databases/blocks/updating-rows/index.md b/content/en/databases/blocks/updating-rows/index.md
similarity index 100%
rename from content/databases/blocks/updating-rows/index.md
rename to content/en/databases/blocks/updating-rows/index.md
diff --git a/content/databases/blocks/using-aggregate-functions/index.md b/content/en/databases/blocks/using-aggregate-functions/index.md
similarity index 100%
rename from content/databases/blocks/using-aggregate-functions/index.md
rename to content/en/databases/blocks/using-aggregate-functions/index.md
diff --git a/content/databases/prep/Screenshot_Postgres_disk.png b/content/en/databases/prep/Screenshot_Postgres_disk.png
similarity index 100%
rename from content/databases/prep/Screenshot_Postgres_disk.png
rename to content/en/databases/prep/Screenshot_Postgres_disk.png
diff --git a/content/databases/prep/Screenshot_Postgres_initialise.png b/content/en/databases/prep/Screenshot_Postgres_initialise.png
similarity index 100%
rename from content/databases/prep/Screenshot_Postgres_initialise.png
rename to content/en/databases/prep/Screenshot_Postgres_initialise.png
diff --git a/content/databases/prep/Screenshot_Postgres_running.png b/content/en/databases/prep/Screenshot_Postgres_running.png
similarity index 100%
rename from content/databases/prep/Screenshot_Postgres_running.png
rename to content/en/databases/prep/Screenshot_Postgres_running.png
diff --git a/content/databases/prep/index.md b/content/en/databases/prep/index.md
similarity index 100%
rename from content/databases/prep/index.md
rename to content/en/databases/prep/index.md
diff --git a/content/databases/product/_index.md b/content/en/databases/product/_index.md
similarity index 100%
rename from content/databases/product/_index.md
rename to content/en/databases/product/_index.md
diff --git a/content/databases/product/build/index.md b/content/en/databases/product/build/index.md
similarity index 100%
rename from content/databases/product/build/index.md
rename to content/en/databases/product/build/index.md
diff --git a/content/databases/product/plan/index.md b/content/en/databases/product/plan/index.md
similarity index 100%
rename from content/databases/product/plan/index.md
rename to content/en/databases/product/plan/index.md
diff --git a/content/databases/product/ship/index.md b/content/en/databases/product/ship/index.md
similarity index 100%
rename from content/databases/product/ship/index.md
rename to content/en/databases/product/ship/index.md
diff --git a/content/databases/product/test/index.md b/content/en/databases/product/test/index.md
similarity index 100%
rename from content/databases/product/test/index.md
rename to content/en/databases/product/test/index.md
diff --git a/content/databases/sprints/1/_index.md b/content/en/databases/sprints/1/_index.md
similarity index 100%
rename from content/databases/sprints/1/_index.md
rename to content/en/databases/sprints/1/_index.md
diff --git a/content/databases/sprints/1/backlog/index.md b/content/en/databases/sprints/1/backlog/index.md
similarity index 100%
rename from content/databases/sprints/1/backlog/index.md
rename to content/en/databases/sprints/1/backlog/index.md
diff --git a/content/databases/sprints/1/day-plan/index.md b/content/en/databases/sprints/1/day-plan/index.md
similarity index 100%
rename from content/databases/sprints/1/day-plan/index.md
rename to content/en/databases/sprints/1/day-plan/index.md
diff --git a/content/databases/sprints/1/prep/index.md b/content/en/databases/sprints/1/prep/index.md
similarity index 100%
rename from content/databases/sprints/1/prep/index.md
rename to content/en/databases/sprints/1/prep/index.md
diff --git a/content/databases/sprints/1/success/index.md b/content/en/databases/sprints/1/success/index.md
similarity index 100%
rename from content/databases/sprints/1/success/index.md
rename to content/en/databases/sprints/1/success/index.md
diff --git a/content/databases/sprints/2/_index.md b/content/en/databases/sprints/2/_index.md
similarity index 100%
rename from content/databases/sprints/2/_index.md
rename to content/en/databases/sprints/2/_index.md
diff --git a/content/databases/sprints/2/backlog/index.md b/content/en/databases/sprints/2/backlog/index.md
similarity index 100%
rename from content/databases/sprints/2/backlog/index.md
rename to content/en/databases/sprints/2/backlog/index.md
diff --git a/content/databases/sprints/2/day-plan/index.md b/content/en/databases/sprints/2/day-plan/index.md
similarity index 100%
rename from content/databases/sprints/2/day-plan/index.md
rename to content/en/databases/sprints/2/day-plan/index.md
diff --git a/content/databases/sprints/2/prep/index.md b/content/en/databases/sprints/2/prep/index.md
similarity index 100%
rename from content/databases/sprints/2/prep/index.md
rename to content/en/databases/sprints/2/prep/index.md
diff --git a/content/databases/sprints/2/success/index.md b/content/en/databases/sprints/2/success/index.md
similarity index 100%
rename from content/databases/sprints/2/success/index.md
rename to content/en/databases/sprints/2/success/index.md
diff --git a/content/databases/sprints/3/_index.md b/content/en/databases/sprints/3/_index.md
similarity index 100%
rename from content/databases/sprints/3/_index.md
rename to content/en/databases/sprints/3/_index.md
diff --git a/content/databases/sprints/3/backlog/index.md b/content/en/databases/sprints/3/backlog/index.md
similarity index 100%
rename from content/databases/sprints/3/backlog/index.md
rename to content/en/databases/sprints/3/backlog/index.md
diff --git a/content/databases/sprints/3/day-plan/index.md b/content/en/databases/sprints/3/day-plan/index.md
similarity index 100%
rename from content/databases/sprints/3/day-plan/index.md
rename to content/en/databases/sprints/3/day-plan/index.md
diff --git a/content/databases/sprints/3/prep/index.md b/content/en/databases/sprints/3/prep/index.md
similarity index 100%
rename from content/databases/sprints/3/prep/index.md
rename to content/en/databases/sprints/3/prep/index.md
diff --git a/content/databases/sprints/3/success/index.md b/content/en/databases/sprints/3/success/index.md
similarity index 100%
rename from content/databases/sprints/3/success/index.md
rename to content/en/databases/sprints/3/success/index.md
diff --git a/content/databases/sprints/4/_index.md b/content/en/databases/sprints/4/_index.md
similarity index 100%
rename from content/databases/sprints/4/_index.md
rename to content/en/databases/sprints/4/_index.md
diff --git a/content/databases/sprints/4/backlog/index.md b/content/en/databases/sprints/4/backlog/index.md
similarity index 100%
rename from content/databases/sprints/4/backlog/index.md
rename to content/en/databases/sprints/4/backlog/index.md
diff --git a/content/databases/sprints/4/day-plan/index.md b/content/en/databases/sprints/4/day-plan/index.md
similarity index 100%
rename from content/databases/sprints/4/day-plan/index.md
rename to content/en/databases/sprints/4/day-plan/index.md
diff --git a/content/databases/sprints/4/prep/index.md b/content/en/databases/sprints/4/prep/index.md
similarity index 100%
rename from content/databases/sprints/4/prep/index.md
rename to content/en/databases/sprints/4/prep/index.md
diff --git a/content/databases/sprints/4/success/index.md b/content/en/databases/sprints/4/success/index.md
similarity index 100%
rename from content/databases/sprints/4/success/index.md
rename to content/en/databases/sprints/4/success/index.md
diff --git a/content/databases/success/index.md b/content/en/databases/success/index.md
similarity index 100%
rename from content/databases/success/index.md
rename to content/en/databases/success/index.md
diff --git a/content/fundamentals/_index.md b/content/en/fundamentals/_index.md
similarity index 100%
rename from content/fundamentals/_index.md
rename to content/en/fundamentals/_index.md
diff --git a/content/fundamentals/blocks/blockers/index.md b/content/en/fundamentals/blocks/blockers/index.md
similarity index 100%
rename from content/fundamentals/blocks/blockers/index.md
rename to content/en/fundamentals/blocks/blockers/index.md
diff --git a/content/fundamentals/blocks/code-dot-org/index.md b/content/en/fundamentals/blocks/code-dot-org/index.md
similarity index 100%
rename from content/fundamentals/blocks/code-dot-org/index.md
rename to content/en/fundamentals/blocks/code-dot-org/index.md
diff --git a/content/fundamentals/blocks/cyf-blocks-iteration/index.md b/content/en/fundamentals/blocks/cyf-blocks-iteration/index.md
similarity index 100%
rename from content/fundamentals/blocks/cyf-blocks-iteration/index.md
rename to content/en/fundamentals/blocks/cyf-blocks-iteration/index.md
diff --git a/content/fundamentals/blocks/cyf-blocks-requirements/index.md b/content/en/fundamentals/blocks/cyf-blocks-requirements/index.md
similarity index 100%
rename from content/fundamentals/blocks/cyf-blocks-requirements/index.md
rename to content/en/fundamentals/blocks/cyf-blocks-requirements/index.md
diff --git a/content/fundamentals/blocks/goals/index.md b/content/en/fundamentals/blocks/goals/index.md
similarity index 100%
rename from content/fundamentals/blocks/goals/index.md
rename to content/en/fundamentals/blocks/goals/index.md
diff --git a/content/fundamentals/blocks/mvp/index.md b/content/en/fundamentals/blocks/mvp/index.md
similarity index 100%
rename from content/fundamentals/blocks/mvp/index.md
rename to content/en/fundamentals/blocks/mvp/index.md
diff --git a/content/fundamentals/blocks/next-steps/index.md b/content/en/fundamentals/blocks/next-steps/index.md
similarity index 100%
rename from content/fundamentals/blocks/next-steps/index.md
rename to content/en/fundamentals/blocks/next-steps/index.md
diff --git a/content/fundamentals/blocks/overcoming-blockers/index.md b/content/en/fundamentals/blocks/overcoming-blockers/index.md
similarity index 100%
rename from content/fundamentals/blocks/overcoming-blockers/index.md
rename to content/en/fundamentals/blocks/overcoming-blockers/index.md
diff --git a/content/fundamentals/blocks/pairing/index.md b/content/en/fundamentals/blocks/pairing/index.md
similarity index 100%
rename from content/fundamentals/blocks/pairing/index.md
rename to content/en/fundamentals/blocks/pairing/index.md
diff --git a/content/fundamentals/blocks/ship-it-delivery/index.md b/content/en/fundamentals/blocks/ship-it-delivery/index.md
similarity index 100%
rename from content/fundamentals/blocks/ship-it-delivery/index.md
rename to content/en/fundamentals/blocks/ship-it-delivery/index.md
diff --git a/content/fundamentals/blocks/ship-it-iteration/index.md b/content/en/fundamentals/blocks/ship-it-iteration/index.md
similarity index 100%
rename from content/fundamentals/blocks/ship-it-iteration/index.md
rename to content/en/fundamentals/blocks/ship-it-iteration/index.md
diff --git a/content/fundamentals/blocks/ship-it-requirements/index.md b/content/en/fundamentals/blocks/ship-it-requirements/index.md
similarity index 100%
rename from content/fundamentals/blocks/ship-it-requirements/index.md
rename to content/en/fundamentals/blocks/ship-it-requirements/index.md
diff --git a/content/fundamentals/blocks/using-the-curriculum/index.md b/content/en/fundamentals/blocks/using-the-curriculum/index.md
similarity index 100%
rename from content/fundamentals/blocks/using-the-curriculum/index.md
rename to content/en/fundamentals/blocks/using-the-curriculum/index.md
diff --git a/content/fundamentals/blocks/wrap-up/index.md b/content/en/fundamentals/blocks/wrap-up/index.md
similarity index 100%
rename from content/fundamentals/blocks/wrap-up/index.md
rename to content/en/fundamentals/blocks/wrap-up/index.md
diff --git a/content/fundamentals/prep/index.md b/content/en/fundamentals/prep/index.md
similarity index 100%
rename from content/fundamentals/prep/index.md
rename to content/en/fundamentals/prep/index.md
diff --git a/content/fundamentals/product/_index.md b/content/en/fundamentals/product/_index.md
similarity index 100%
rename from content/fundamentals/product/_index.md
rename to content/en/fundamentals/product/_index.md
diff --git a/content/fundamentals/product/build/index.md b/content/en/fundamentals/product/build/index.md
similarity index 100%
rename from content/fundamentals/product/build/index.md
rename to content/en/fundamentals/product/build/index.md
diff --git a/content/fundamentals/product/plan/index.md b/content/en/fundamentals/product/plan/index.md
similarity index 100%
rename from content/fundamentals/product/plan/index.md
rename to content/en/fundamentals/product/plan/index.md
diff --git a/content/fundamentals/product/ship/index.md b/content/en/fundamentals/product/ship/index.md
similarity index 100%
rename from content/fundamentals/product/ship/index.md
rename to content/en/fundamentals/product/ship/index.md
diff --git a/content/fundamentals/product/test/index.md b/content/en/fundamentals/product/test/index.md
similarity index 100%
rename from content/fundamentals/product/test/index.md
rename to content/en/fundamentals/product/test/index.md
diff --git a/content/fundamentals/sprints/1/_index.md b/content/en/fundamentals/sprints/1/_index.md
similarity index 100%
rename from content/fundamentals/sprints/1/_index.md
rename to content/en/fundamentals/sprints/1/_index.md
diff --git a/content/fundamentals/sprints/1/backlog/index.md b/content/en/fundamentals/sprints/1/backlog/index.md
similarity index 100%
rename from content/fundamentals/sprints/1/backlog/index.md
rename to content/en/fundamentals/sprints/1/backlog/index.md
diff --git a/content/fundamentals/sprints/1/day-plan/index.md b/content/en/fundamentals/sprints/1/day-plan/index.md
similarity index 100%
rename from content/fundamentals/sprints/1/day-plan/index.md
rename to content/en/fundamentals/sprints/1/day-plan/index.md
diff --git a/content/fundamentals/sprints/1/prep/index.md b/content/en/fundamentals/sprints/1/prep/index.md
similarity index 100%
rename from content/fundamentals/sprints/1/prep/index.md
rename to content/en/fundamentals/sprints/1/prep/index.md
diff --git a/content/fundamentals/sprints/1/success/index.md b/content/en/fundamentals/sprints/1/success/index.md
similarity index 100%
rename from content/fundamentals/sprints/1/success/index.md
rename to content/en/fundamentals/sprints/1/success/index.md
diff --git a/content/fundamentals/sprints/2/_index.md b/content/en/fundamentals/sprints/2/_index.md
similarity index 100%
rename from content/fundamentals/sprints/2/_index.md
rename to content/en/fundamentals/sprints/2/_index.md
diff --git a/content/fundamentals/sprints/2/backlog/index.md b/content/en/fundamentals/sprints/2/backlog/index.md
similarity index 100%
rename from content/fundamentals/sprints/2/backlog/index.md
rename to content/en/fundamentals/sprints/2/backlog/index.md
diff --git a/content/fundamentals/sprints/2/day-plan/index.md b/content/en/fundamentals/sprints/2/day-plan/index.md
similarity index 100%
rename from content/fundamentals/sprints/2/day-plan/index.md
rename to content/en/fundamentals/sprints/2/day-plan/index.md
diff --git a/content/fundamentals/sprints/2/prep/index.md b/content/en/fundamentals/sprints/2/prep/index.md
similarity index 100%
rename from content/fundamentals/sprints/2/prep/index.md
rename to content/en/fundamentals/sprints/2/prep/index.md
diff --git a/content/fundamentals/sprints/2/success/index.md b/content/en/fundamentals/sprints/2/success/index.md
similarity index 100%
rename from content/fundamentals/sprints/2/success/index.md
rename to content/en/fundamentals/sprints/2/success/index.md
diff --git a/content/fundamentals/sprints/3/_index.md b/content/en/fundamentals/sprints/3/_index.md
similarity index 100%
rename from content/fundamentals/sprints/3/_index.md
rename to content/en/fundamentals/sprints/3/_index.md
diff --git a/content/fundamentals/sprints/3/backlog/index.md b/content/en/fundamentals/sprints/3/backlog/index.md
similarity index 100%
rename from content/fundamentals/sprints/3/backlog/index.md
rename to content/en/fundamentals/sprints/3/backlog/index.md
diff --git a/content/fundamentals/sprints/3/day-plan/index.md b/content/en/fundamentals/sprints/3/day-plan/index.md
similarity index 100%
rename from content/fundamentals/sprints/3/day-plan/index.md
rename to content/en/fundamentals/sprints/3/day-plan/index.md
diff --git a/content/fundamentals/sprints/3/prep/index.md b/content/en/fundamentals/sprints/3/prep/index.md
similarity index 100%
rename from content/fundamentals/sprints/3/prep/index.md
rename to content/en/fundamentals/sprints/3/prep/index.md
diff --git a/content/fundamentals/sprints/3/success/index.md b/content/en/fundamentals/sprints/3/success/index.md
similarity index 100%
rename from content/fundamentals/sprints/3/success/index.md
rename to content/en/fundamentals/sprints/3/success/index.md
diff --git a/content/fundamentals/success/index.md b/content/en/fundamentals/success/index.md
similarity index 100%
rename from content/fundamentals/success/index.md
rename to content/en/fundamentals/success/index.md
diff --git a/content/guides/_index.md b/content/en/guides/_index.md
similarity index 100%
rename from content/guides/_index.md
rename to content/en/guides/_index.md
diff --git a/content/guides/asking-questions/index.md b/content/en/guides/asking-questions/index.md
similarity index 100%
rename from content/guides/asking-questions/index.md
rename to content/en/guides/asking-questions/index.md
diff --git a/content/guides/code-review/index.md b/content/en/guides/code-review/index.md
similarity index 100%
rename from content/guides/code-review/index.md
rename to content/en/guides/code-review/index.md
diff --git a/content/guides/code-style-guide/index.md b/content/en/guides/code-style-guide/index.md
similarity index 100%
rename from content/guides/code-style-guide/index.md
rename to content/en/guides/code-style-guide/index.md
diff --git a/content/guides/code-style-guide/prettier-error.png b/content/en/guides/code-style-guide/prettier-error.png
similarity index 100%
rename from content/guides/code-style-guide/prettier-error.png
rename to content/en/guides/code-style-guide/prettier-error.png
diff --git a/content/guides/contributing/_index.md b/content/en/guides/contributing/_index.md
similarity index 100%
rename from content/guides/contributing/_index.md
rename to content/en/guides/contributing/_index.md
diff --git a/content/guides/contributing/contributors/index.md b/content/en/guides/contributing/contributors/index.md
similarity index 100%
rename from content/guides/contributing/contributors/index.md
rename to content/en/guides/contributing/contributors/index.md
diff --git a/content/guides/contributing/minutes/index.md b/content/en/guides/contributing/minutes/index.md
similarity index 95%
rename from content/guides/contributing/minutes/index.md
rename to content/en/guides/contributing/minutes/index.md
index fb86103cc..db11dc55c 100644
--- a/content/guides/contributing/minutes/index.md
+++ b/content/en/guides/contributing/minutes/index.md
@@ -17,6 +17,168 @@ Attendees:
 
 ---
 
+## 2023-12-05
+
+Attendees: Ali Smith, Daniel Wagner-Hall, Isar Fridriksson, Sally McGrath
+
+### ❗Actions from last time
+
+- [x] Put together a "giving demos" workshop
+  - Which maybe involves giving different presentations about the same project with different audiences in mind.
+- [x] Ellie to capture lessons learnt from the London 10 Portfolio module.
+- [x] Daniel to put together a discussion thread about moving/splitting SQL module.
+- [ ] Ali to put together a proposed ordering of training videos to watch, and arrange a time for discussion.
+- [x] Ali to file a ticket about not setting innerHTML
+- [ ] Ali (Carry-over): Review JS1 & 2 content
+
+### πŸ“ Agenda points
+
+#### Barcelona debrief
+
+* We met with Isar, Hugo, Simon
+* We attended class for a few hours
+  * Felt very CYF-before-flipped-classroom
+    * A range of understandings and confidences
+  * Ordinarily class has 1-2 teachers and few TAs, but this session we had a load of volunteers so did some interview practice style pairing
+  * Did a lot of pairing with people
+    * Similarly a range of understandings and confidences
+  * They have a regular (well-equipped) space
+  * Currently have two classes - one in English, one in Spanish
+    * Considering the next cohort only offering English - there are other similar bootcamps offering Spanish but none offer English
+* General agreements to:
+  * Identify all the work we need to do for MigraCode's class in April 2024 to run with the new CYF curriculum
+    * Being collected in [a GitHub Milestone](https://github.com/CodeYourFuture/curriculum/milestone/12)
+    * Need to make a parent theme in Hugo, then two child themes which are siblings
+      * Split content into modules, also move around files with Hugo's internationalisation support (which we will not actually be using in the foreseeable future)
+    * We may end up changing some timings things - MigraCode is currently a shorter course, MigraCode currently do two shorter sessions in a week rather than one longer one - not sure how all of these things are going to change, but they're differences we identified.
+    * Audit some content:
+      * Mentions of CYF - remove any that aren't necessary, split any that need re-implementing
+      * Remove mentions of "last week", "next" week, etc - weeks may change
+  * Points of uncertainty for MigraCode to resolve internally:
+    * Goal alignment - right now CYF's goals are around employment and MigraCode's are around graduation - we need to explore how we can align these with MigraCode's parent organisation and funders.
+    * Timings - MigraCode run a shorter course, and more shorter sessions in a week. Need to work out how things will be arranged.
+  * Netlify: It would be useful for MigraCode to get their own Netlify, but they're welcome to share ours until then.
+* Description of CYF Products
+* Need to decide what to do about Fundamentals
+  * What would we lose if we removed it?
+    * Some amount of cohort building
+    * It's a filter in the application process
+    * Trying to instill a culture of shipping things early
+* Blockly doesn't seem to be directly transferring to JS1/2 - something to muse on
+
+### ❗Actions
+
+- [ ] Ali (Carry-over): to put together a proposed ordering of training videos to watch, and arrange a time for discussion.
+- [ ] Ali (Carry-over): Review JS1 & 2 content
+- [ ] Ali: Update meeting reminder bot to happen on Tuesdays not Thursdays
+- [ ] Ali: Find/Make ticket about reworking React
+- [ ] Daniel: Read up on Zsolt's discussion about backend hosting platforms and engage (and also see if he's interested in reworking the full-stack assessment to be more feature-based)
+- [ ] Sally: Share application process details with MigraCode folks
+- [ ] Isar: Triage JS1+JS2 Iteration and Snagging issues - add any needed to the MigraCode milestone
+- [ ] Isar: Get all the relevant MigraCode people to fill in [this form](https://docs.google.com/forms/d/1sp2MTsU0eEAr4HCKXfDPxUXXZROWN8UyHIrDk7dRSJk/edit) to join CYF GitHub teams.
+- [ ] Sally: Provide a repro case for https://github.com/CodeYourFuture/curriculum/issues/222
+- [ ] Ali: Write up a ticket for Sally to document the architecture of the curriculum website
+
+---
+
+## 2023-11-23
+
+Attendees: Ali, Daniel, Ellie Tahmasebi, Isar, Sally
+
+### ❗Actions from last time
+
+- [ ] Ali: Review Sally's JS3 PRs on components and JS1 & 2 content
+- [x] Daniel (Carry-over): Try to write up some general ideas for the portfolio track into the curriculum.
+- [x] Mitch & Daniel (Carry-over): to coordinate on visiting WM in person to support
+- [x] Daniel: (Carry-over) Look through the MigraCode curriculum and understand strengths and gaps
+
+### πŸ“ Agenda points
+
+#### Meeting timings
+
+* HYF Belgium would like to join us - let's make our meeting earlier so it's easier for them to.
+* Proposal: Tuesday: 18:30 or 19:00, start with planning then move into discussion.
+* Decision: Tuesdays at 18:30.
+
+#### Planning
+
+#### Portfolio module
+
+* We'd like a curriculum module for the portfolio module.
+  * Right now in London 9 things are very ad-hoc.
+  * More formal plans would help both graduates and volunteers know what to do.
+* https://curriculum.codeyourfuture.io/portfolio/ already exists - need to flesh out the content.
+* Created https://github.com/CodeYourFuture/curriculum/discussions/386 to capture insights from currently running modules.
+* London 9 Portfolios feels a bit like a final project because of the build-up to a particular demo.
+  * Ali would rather frame this as "We want you to portfolio-build" not "We want you to complete this project".
+  * Motivation for this was that many attendees weren't taking the project very seriously, weren't committing very much, so this was a way to try to drive motivation.
+    * Maybe this isn't as much of a problem outside of London? But we have post-graduation engagement problems everywhere.
+  * Sally would like shorter, pithier demos - right now demos are really long and drawn out.
+    * We probably need to give workshops about how to give a good demo.
+      * Need to be aware of the goals of different kinds of demos (e.g. "Show off a thing I've done" vs "Show something I've learnt" vs "Show what's useful to a user")
+      * Sally shared a [pitch camp template](https://docs.google.com/document/d/1gfkKPAHNKCdrS3A7nai51iK4gkJcna4B1tOk98ZKCUw/edit).
+  * [Folder of project ideas](https://drive.google.com/drive/folders/1UocnK_dRUkMCuwI6aytZ0Z9a12322EOx)
+
+* What do MigraCode Barcelona do "after" the course?
+  * Historically: Not much, and not enough
+  * Now have a two-month module
+    * Assign each graduate a buddy to have weekly meetings with - work on their linkedin, do practice interviews, etc
+    * Also have events for hackathons, job speed dating, etc.
+
+#### Barcelona trip
+
+* Do we have an agenda? Do we have goals?
+* Dinner on Friday - Isar will share link
+* Class in English on Saturday 10:30 - 14:30 - JS1W3
+  * We're very welcome to TA!
+  * We have a very large office we can use until 17:30
+    * Want to draft a plan for how to merge
+      * Have energy from volunteers to actually merge
+      * Study feasibility of moving to the new curriculum system
+      * Work out how to overcome the language barrier - half of MigraCode trainees don't speak English
+      * Enumerate dependencies on outside tools, e.g. integration with student database, homework setting, etc.
+* Sunday - we'll make a plan.
+* Making sure everyone is in the WhatsApp group - expecting Isar, Carlos, Hugo.
+* Next cohort starts April 2024 - good timing for starting a major change.
+  * Biggest change to plan for is how to make sure class time is well facilitated to make flipped classroom really work well.
+  * Really want the curriculum to be a shared community curriculum - everyone needs to help evolve it forwards together!
+
+#### JS3: Should groups be pairs?
+
+* Yes from the tech-ed side we want pairs
+* Need to check with PD to make sure they don't have plans that rely on larger groups
+
+#### Database module timings
+
+* Daniel proposes moving it to very close to the start of the class
+  * Partially it's a really good framing for problem-solving (e.g. "I need to join before I can select")
+  * Partially because it's a useful skill for people who leave the course early (much more useful than intro to programming)
+  * Partially because SQL has no dependencies on having learnt other things.
+* Sally: Want to have HTML+CSS first because there's a lot of non-technical faffing that goes on (getting people into planners, getting used to a new operating system, etc).
+* We'd still need a "Node + SQL" integration module (but may be a shorter module).
+* Would need to break into:
+  * A SQL module without programming
+  * How to do the Node+SQL integration
+* Does it need to be SQL? Could we do this with spreadsheets?
+  * We could mix different formats, but should definitely culminate in actual SQL.
+
+#### Nonprofit ready training courses
+
+* Ali would like to actually organise this.
+* So he will.
+
+### ❗Actions
+
+- [ ] Put together a "giving demos" workshop
+  - Which maybe involves giving different presentations about the same project with different audiences in mind.
+- [ ] Ellie to capture lessons learnt from the London 10 Portfolio module.
+- [ ] Daniel to put together a discussion thread about moving/splitting SQL module.
+- [ ] Ali to put together a proposed ordering of training videos to watch, and arrange a time for discussion.
+- [ ] Ali to file a ticket about not setting innerHTML
+- [ ] Ali (Carry-over): Review JS1 & 2 content
+
+---
+
 ## 2023-11-09
 
 Attendees: Ali, Sally
diff --git a/content/guides/contributing/supporters/index.md b/content/en/guides/contributing/supporters/index.md
similarity index 100%
rename from content/guides/contributing/supporters/index.md
rename to content/en/guides/contributing/supporters/index.md
diff --git a/content/guides/create-a-pull-request/github-branches-view.png b/content/en/guides/create-a-pull-request/github-branches-view.png
similarity index 100%
rename from content/guides/create-a-pull-request/github-branches-view.png
rename to content/en/guides/create-a-pull-request/github-branches-view.png
diff --git a/content/guides/create-a-pull-request/github-fork-highlight-branches.png b/content/en/guides/create-a-pull-request/github-fork-highlight-branches.png
similarity index 100%
rename from content/guides/create-a-pull-request/github-fork-highlight-branches.png
rename to content/en/guides/create-a-pull-request/github-fork-highlight-branches.png
diff --git a/content/guides/create-a-pull-request/github-fork-main-page.png b/content/en/guides/create-a-pull-request/github-fork-main-page.png
similarity index 100%
rename from content/guides/create-a-pull-request/github-fork-main-page.png
rename to content/en/guides/create-a-pull-request/github-fork-main-page.png
diff --git a/content/guides/create-a-pull-request/highlight-new-pull-request.png b/content/en/guides/create-a-pull-request/highlight-new-pull-request.png
similarity index 100%
rename from content/guides/create-a-pull-request/highlight-new-pull-request.png
rename to content/en/guides/create-a-pull-request/highlight-new-pull-request.png
diff --git a/content/guides/create-a-pull-request/index.md b/content/en/guides/create-a-pull-request/index.md
similarity index 100%
rename from content/guides/create-a-pull-request/index.md
rename to content/en/guides/create-a-pull-request/index.md
diff --git a/content/guides/create-a-pull-request/new-pr-landing-page.png b/content/en/guides/create-a-pull-request/new-pr-landing-page.png
similarity index 100%
rename from content/guides/create-a-pull-request/new-pr-landing-page.png
rename to content/en/guides/create-a-pull-request/new-pr-landing-page.png
diff --git a/content/guides/create-a-pull-request/open-pull-request-page.png b/content/en/guides/create-a-pull-request/open-pull-request-page.png
similarity index 100%
rename from content/guides/create-a-pull-request/open-pull-request-page.png
rename to content/en/guides/create-a-pull-request/open-pull-request-page.png
diff --git a/content/guides/create-a-pull-request/update-pr-title-description.png b/content/en/guides/create-a-pull-request/update-pr-title-description.png
similarity index 100%
rename from content/guides/create-a-pull-request/update-pr-title-description.png
rename to content/en/guides/create-a-pull-request/update-pr-title-description.png
diff --git a/content/guides/create-a-pull-request/update-pr-title.png b/content/en/guides/create-a-pull-request/update-pr-title.png
similarity index 100%
rename from content/guides/create-a-pull-request/update-pr-title.png
rename to content/en/guides/create-a-pull-request/update-pr-title.png
diff --git a/content/guides/create-a-pull-request/update-pr-using-template.png b/content/en/guides/create-a-pull-request/update-pr-using-template.png
similarity index 100%
rename from content/guides/create-a-pull-request/update-pr-using-template.png
rename to content/en/guides/create-a-pull-request/update-pr-using-template.png
diff --git a/content/guides/create-a-react-app/create-react-app-started-browser.png b/content/en/guides/create-a-react-app/create-react-app-started-browser.png
similarity index 100%
rename from content/guides/create-a-react-app/create-react-app-started-browser.png
rename to content/en/guides/create-a-react-app/create-react-app-started-browser.png
diff --git a/content/guides/create-a-react-app/create-react-app-started-terminal.png b/content/en/guides/create-a-react-app/create-react-app-started-terminal.png
similarity index 100%
rename from content/guides/create-a-react-app/create-react-app-started-terminal.png
rename to content/en/guides/create-a-react-app/create-react-app-started-terminal.png
diff --git a/content/guides/create-a-react-app/index.md b/content/en/guides/create-a-react-app/index.md
similarity index 100%
rename from content/guides/create-a-react-app/index.md
rename to content/en/guides/create-a-react-app/index.md
diff --git a/content/guides/deployment-netlify/_index.md b/content/en/guides/deployment-netlify/_index.md
similarity index 100%
rename from content/guides/deployment-netlify/_index.md
rename to content/en/guides/deployment-netlify/_index.md
diff --git a/content/guides/deployment-netlify/another-site/01-netlify-dashboard.png b/content/en/guides/deployment-netlify/another-site/01-netlify-dashboard.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/01-netlify-dashboard.png
rename to content/en/guides/deployment-netlify/another-site/01-netlify-dashboard.png
diff --git a/content/guides/deployment-netlify/another-site/02-sites-page.png b/content/en/guides/deployment-netlify/another-site/02-sites-page.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/02-sites-page.png
rename to content/en/guides/deployment-netlify/another-site/02-sites-page.png
diff --git a/content/guides/deployment-netlify/another-site/03-git-provider.png b/content/en/guides/deployment-netlify/another-site/03-git-provider.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/03-git-provider.png
rename to content/en/guides/deployment-netlify/another-site/03-git-provider.png
diff --git a/content/guides/deployment-netlify/another-site/04-choose-repo.png b/content/en/guides/deployment-netlify/another-site/04-choose-repo.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/04-choose-repo.png
rename to content/en/guides/deployment-netlify/another-site/04-choose-repo.png
diff --git a/content/guides/deployment-netlify/another-site/05-choose-branch.png b/content/en/guides/deployment-netlify/another-site/05-choose-branch.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/05-choose-branch.png
rename to content/en/guides/deployment-netlify/another-site/05-choose-branch.png
diff --git a/content/guides/deployment-netlify/another-site/06-site-is-live.png b/content/en/guides/deployment-netlify/another-site/06-site-is-live.png
similarity index 100%
rename from content/guides/deployment-netlify/another-site/06-site-is-live.png
rename to content/en/guides/deployment-netlify/another-site/06-site-is-live.png
diff --git a/content/guides/deployment-netlify/another-site/index.md b/content/en/guides/deployment-netlify/another-site/index.md
similarity index 100%
rename from content/guides/deployment-netlify/another-site/index.md
rename to content/en/guides/deployment-netlify/another-site/index.md
diff --git a/content/guides/deployment-netlify/common-problems.md b/content/en/guides/deployment-netlify/common-problems.md
similarity index 100%
rename from content/guides/deployment-netlify/common-problems.md
rename to content/en/guides/deployment-netlify/common-problems.md
diff --git a/content/guides/deployment-netlify/first-site/01-netlify-homepage.png b/content/en/guides/deployment-netlify/first-site/01-netlify-homepage.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/01-netlify-homepage.png
rename to content/en/guides/deployment-netlify/first-site/01-netlify-homepage.png
diff --git a/content/guides/deployment-netlify/first-site/02-netlify-signup.png b/content/en/guides/deployment-netlify/first-site/02-netlify-signup.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/02-netlify-signup.png
rename to content/en/guides/deployment-netlify/first-site/02-netlify-signup.png
diff --git a/content/guides/deployment-netlify/first-site/03-github-account-permissions.png b/content/en/guides/deployment-netlify/first-site/03-github-account-permissions.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/03-github-account-permissions.png
rename to content/en/guides/deployment-netlify/first-site/03-github-account-permissions.png
diff --git a/content/guides/deployment-netlify/first-site/04-deploy-first-project.png b/content/en/guides/deployment-netlify/first-site/04-deploy-first-project.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/04-deploy-first-project.png
rename to content/en/guides/deployment-netlify/first-site/04-deploy-first-project.png
diff --git a/content/guides/deployment-netlify/first-site/05-git-provider.png b/content/en/guides/deployment-netlify/first-site/05-git-provider.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/05-git-provider.png
rename to content/en/guides/deployment-netlify/first-site/05-git-provider.png
diff --git a/content/guides/deployment-netlify/first-site/06-github-further-permissions.png b/content/en/guides/deployment-netlify/first-site/06-github-further-permissions.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/06-github-further-permissions.png
rename to content/en/guides/deployment-netlify/first-site/06-github-further-permissions.png
diff --git a/content/guides/deployment-netlify/first-site/07-install-netlify.png b/content/en/guides/deployment-netlify/first-site/07-install-netlify.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/07-install-netlify.png
rename to content/en/guides/deployment-netlify/first-site/07-install-netlify.png
diff --git a/content/guides/deployment-netlify/first-site/08-choose-repo.png b/content/en/guides/deployment-netlify/first-site/08-choose-repo.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/08-choose-repo.png
rename to content/en/guides/deployment-netlify/first-site/08-choose-repo.png
diff --git a/content/guides/deployment-netlify/first-site/09-choose-branch.png b/content/en/guides/deployment-netlify/first-site/09-choose-branch.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/09-choose-branch.png
rename to content/en/guides/deployment-netlify/first-site/09-choose-branch.png
diff --git a/content/guides/deployment-netlify/first-site/10-site-is-live.png b/content/en/guides/deployment-netlify/first-site/10-site-is-live.png
similarity index 100%
rename from content/guides/deployment-netlify/first-site/10-site-is-live.png
rename to content/en/guides/deployment-netlify/first-site/10-site-is-live.png
diff --git a/content/guides/deployment-netlify/first-site/index.md b/content/en/guides/deployment-netlify/first-site/index.md
similarity index 100%
rename from content/guides/deployment-netlify/first-site/index.md
rename to content/en/guides/deployment-netlify/first-site/index.md
diff --git a/content/guides/deployment-netlify/renaming-site/01-netlify-dashboard.png b/content/en/guides/deployment-netlify/renaming-site/01-netlify-dashboard.png
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/01-netlify-dashboard.png
rename to content/en/guides/deployment-netlify/renaming-site/01-netlify-dashboard.png
diff --git a/content/guides/deployment-netlify/renaming-site/02-list-of-sites.png b/content/en/guides/deployment-netlify/renaming-site/02-list-of-sites.png
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/02-list-of-sites.png
rename to content/en/guides/deployment-netlify/renaming-site/02-list-of-sites.png
diff --git a/content/guides/deployment-netlify/renaming-site/03-site-overview.png b/content/en/guides/deployment-netlify/renaming-site/03-site-overview.png
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/03-site-overview.png
rename to content/en/guides/deployment-netlify/renaming-site/03-site-overview.png
diff --git a/content/guides/deployment-netlify/renaming-site/04-site-settings.png b/content/en/guides/deployment-netlify/renaming-site/04-site-settings.png
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/04-site-settings.png
rename to content/en/guides/deployment-netlify/renaming-site/04-site-settings.png
diff --git a/content/guides/deployment-netlify/renaming-site/05-site-name-input.png b/content/en/guides/deployment-netlify/renaming-site/05-site-name-input.png
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/05-site-name-input.png
rename to content/en/guides/deployment-netlify/renaming-site/05-site-name-input.png
diff --git a/content/guides/deployment-netlify/renaming-site/index.md b/content/en/guides/deployment-netlify/renaming-site/index.md
similarity index 100%
rename from content/guides/deployment-netlify/renaming-site/index.md
rename to content/en/guides/deployment-netlify/renaming-site/index.md
diff --git a/content/guides/deployment-netlify/site-naming-conventions.md b/content/en/guides/deployment-netlify/site-naming-conventions.md
similarity index 100%
rename from content/guides/deployment-netlify/site-naming-conventions.md
rename to content/en/guides/deployment-netlify/site-naming-conventions.md
diff --git a/content/guides/deployment-render/_index.md b/content/en/guides/deployment-render/_index.md
similarity index 100%
rename from content/guides/deployment-render/_index.md
rename to content/en/guides/deployment-render/_index.md
diff --git a/content/guides/deployment-render/connecting-a-dbms/connection-error.png b/content/en/guides/deployment-render/connecting-a-dbms/connection-error.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/connection-error.png
rename to content/en/guides/deployment-render/connecting-a-dbms/connection-error.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/connection-successful.png b/content/en/guides/deployment-render/connecting-a-dbms/connection-successful.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/connection-successful.png
rename to content/en/guides/deployment-render/connecting-a-dbms/connection-successful.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/connection-test.png b/content/en/guides/deployment-render/connecting-a-dbms/connection-test.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/connection-test.png
rename to content/en/guides/deployment-render/connecting-a-dbms/connection-test.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/db-credentials.png b/content/en/guides/deployment-render/connecting-a-dbms/db-credentials.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/db-credentials.png
rename to content/en/guides/deployment-render/connecting-a-dbms/db-credentials.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/db-drivers.png b/content/en/guides/deployment-render/connecting-a-dbms/db-drivers.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/db-drivers.png
rename to content/en/guides/deployment-render/connecting-a-dbms/db-drivers.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/index.md b/content/en/guides/deployment-render/connecting-a-dbms/index.md
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/index.md
rename to content/en/guides/deployment-render/connecting-a-dbms/index.md
diff --git a/content/guides/deployment-render/connecting-a-dbms/new-connection.png b/content/en/guides/deployment-render/connecting-a-dbms/new-connection.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/new-connection.png
rename to content/en/guides/deployment-render/connecting-a-dbms/new-connection.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/render-dashboard.png b/content/en/guides/deployment-render/connecting-a-dbms/render-dashboard.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/render-dashboard.png
rename to content/en/guides/deployment-render/connecting-a-dbms/render-dashboard.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/selecting-postgres.png b/content/en/guides/deployment-render/connecting-a-dbms/selecting-postgres.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/selecting-postgres.png
rename to content/en/guides/deployment-render/connecting-a-dbms/selecting-postgres.png
diff --git a/content/guides/deployment-render/connecting-a-dbms/show-all-databases.png b/content/en/guides/deployment-render/connecting-a-dbms/show-all-databases.png
similarity index 100%
rename from content/guides/deployment-render/connecting-a-dbms/show-all-databases.png
rename to content/en/guides/deployment-render/connecting-a-dbms/show-all-databases.png
diff --git a/content/guides/deployment-render/connecting-github/index.md b/content/en/guides/deployment-render/connecting-github/index.md
similarity index 100%
rename from content/guides/deployment-render/connecting-github/index.md
rename to content/en/guides/deployment-render/connecting-github/index.md
diff --git a/content/guides/deployment-render/connecting-github/sign-in-with-github.png b/content/en/guides/deployment-render/connecting-github/sign-in-with-github.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/sign-in-with-github.png
rename to content/en/guides/deployment-render/connecting-github/sign-in-with-github.png
diff --git a/content/guides/deployment-render/connecting-github/sign-in.png b/content/en/guides/deployment-render/connecting-github/sign-in.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/sign-in.png
rename to content/en/guides/deployment-render/connecting-github/sign-in.png
diff --git a/content/guides/deployment-render/connecting-github/sign-up-complete.png b/content/en/guides/deployment-render/connecting-github/sign-up-complete.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/sign-up-complete.png
rename to content/en/guides/deployment-render/connecting-github/sign-up-complete.png
diff --git a/content/guides/deployment-render/connecting-github/verification-email-link.png b/content/en/guides/deployment-render/connecting-github/verification-email-link.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/verification-email-link.png
rename to content/en/guides/deployment-render/connecting-github/verification-email-link.png
diff --git a/content/guides/deployment-render/connecting-github/verification-email-received.png b/content/en/guides/deployment-render/connecting-github/verification-email-received.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/verification-email-received.png
rename to content/en/guides/deployment-render/connecting-github/verification-email-received.png
diff --git a/content/guides/deployment-render/connecting-github/verification-email-sent.png b/content/en/guides/deployment-render/connecting-github/verification-email-sent.png
similarity index 100%
rename from content/guides/deployment-render/connecting-github/verification-email-sent.png
rename to content/en/guides/deployment-render/connecting-github/verification-email-sent.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/connect-button.png b/content/en/guides/deployment-render/creating-a-postgres-db/connect-button.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/connect-button.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/connect-button.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/database-active.png b/content/en/guides/deployment-render/creating-a-postgres-db/database-active.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/database-active.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/database-active.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/database-creating.png b/content/en/guides/deployment-render/creating-a-postgres-db/database-creating.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/database-creating.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/database-creating.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/database-name.png b/content/en/guides/deployment-render/creating-a-postgres-db/database-name.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/database-name.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/database-name.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/environment-variables.png b/content/en/guides/deployment-render/creating-a-postgres-db/environment-variables.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/environment-variables.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/environment-variables.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/free-plan-and-create-database.png b/content/en/guides/deployment-render/creating-a-postgres-db/free-plan-and-create-database.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/free-plan-and-create-database.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/free-plan-and-create-database.png
diff --git a/content/guides/deployment-render/creating-a-postgres-db/index.md b/content/en/guides/deployment-render/creating-a-postgres-db/index.md
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/index.md
rename to content/en/guides/deployment-render/creating-a-postgres-db/index.md
diff --git a/content/guides/deployment-render/creating-a-postgres-db/new-postgres.png b/content/en/guides/deployment-render/creating-a-postgres-db/new-postgres.png
similarity index 100%
rename from content/guides/deployment-render/creating-a-postgres-db/new-postgres.png
rename to content/en/guides/deployment-render/creating-a-postgres-db/new-postgres.png
diff --git a/content/guides/deployment-render/deploying-server/authorise-render.png b/content/en/guides/deployment-render/deploying-server/authorise-render.png
similarity index 100%
rename from content/guides/deployment-render/deploying-server/authorise-render.png
rename to content/en/guides/deployment-render/deploying-server/authorise-render.png
diff --git a/content/guides/deployment-render/deploying-server/build-successful.jpg b/content/en/guides/deployment-render/deploying-server/build-successful.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/build-successful.jpg
rename to content/en/guides/deployment-render/deploying-server/build-successful.jpg
diff --git a/content/guides/deployment-render/deploying-server/complete-sign-up.png b/content/en/guides/deployment-render/deploying-server/complete-sign-up.png
similarity index 100%
rename from content/guides/deployment-render/deploying-server/complete-sign-up.png
rename to content/en/guides/deployment-render/deploying-server/complete-sign-up.png
diff --git a/content/guides/deployment-render/deploying-server/connect-repo.jpg b/content/en/guides/deployment-render/deploying-server/connect-repo.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/connect-repo.jpg
rename to content/en/guides/deployment-render/deploying-server/connect-repo.jpg
diff --git a/content/guides/deployment-render/deploying-server/create-web-service.jpg b/content/en/guides/deployment-render/deploying-server/create-web-service.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/create-web-service.jpg
rename to content/en/guides/deployment-render/deploying-server/create-web-service.jpg
diff --git a/content/guides/deployment-render/deploying-server/dashboard-new-button.png b/content/en/guides/deployment-render/deploying-server/dashboard-new-button.png
similarity index 100%
rename from content/guides/deployment-render/deploying-server/dashboard-new-button.png
rename to content/en/guides/deployment-render/deploying-server/dashboard-new-button.png
diff --git a/content/guides/deployment-render/deploying-server/index.md b/content/en/guides/deployment-render/deploying-server/index.md
similarity index 100%
rename from content/guides/deployment-render/deploying-server/index.md
rename to content/en/guides/deployment-render/deploying-server/index.md
diff --git a/content/guides/deployment-render/deploying-server/name-web-service.jpg b/content/en/guides/deployment-render/deploying-server/name-web-service.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/name-web-service.jpg
rename to content/en/guides/deployment-render/deploying-server/name-web-service.jpg
diff --git a/content/guides/deployment-render/deploying-server/new-web-service.jpg b/content/en/guides/deployment-render/deploying-server/new-web-service.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/new-web-service.jpg
rename to content/en/guides/deployment-render/deploying-server/new-web-service.jpg
diff --git a/content/guides/deployment-render/deploying-server/render-dashboard.png b/content/en/guides/deployment-render/deploying-server/render-dashboard.png
similarity index 100%
rename from content/guides/deployment-render/deploying-server/render-dashboard.png
rename to content/en/guides/deployment-render/deploying-server/render-dashboard.png
diff --git a/content/guides/deployment-render/deploying-server/start-command.jpg b/content/en/guides/deployment-render/deploying-server/start-command.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/start-command.jpg
rename to content/en/guides/deployment-render/deploying-server/start-command.jpg
diff --git a/content/guides/deployment-render/deploying-server/url-to-deployed-web-service.jpg b/content/en/guides/deployment-render/deploying-server/url-to-deployed-web-service.jpg
similarity index 100%
rename from content/guides/deployment-render/deploying-server/url-to-deployed-web-service.jpg
rename to content/en/guides/deployment-render/deploying-server/url-to-deployed-web-service.jpg
diff --git a/content/guides/intro-to-tests/index.md b/content/en/guides/intro-to-tests/index.md
similarity index 100%
rename from content/guides/intro-to-tests/index.md
rename to content/en/guides/intro-to-tests/index.md
diff --git a/content/guides/intro-to-tests/test-case.png b/content/en/guides/intro-to-tests/test-case.png
similarity index 100%
rename from content/guides/intro-to-tests/test-case.png
rename to content/en/guides/intro-to-tests/test-case.png
diff --git a/content/guides/intro-to-tests/test-fail-case.png b/content/en/guides/intro-to-tests/test-fail-case.png
similarity index 100%
rename from content/guides/intro-to-tests/test-fail-case.png
rename to content/en/guides/intro-to-tests/test-fail-case.png
diff --git a/content/guides/intro-to-tests/test-pass-case.png b/content/en/guides/intro-to-tests/test-pass-case.png
similarity index 100%
rename from content/guides/intro-to-tests/test-pass-case.png
rename to content/en/guides/intro-to-tests/test-pass-case.png
diff --git a/content/guides/paradigm/index.md b/content/en/guides/paradigm/index.md
similarity index 100%
rename from content/guides/paradigm/index.md
rename to content/en/guides/paradigm/index.md
diff --git a/content/html-css/_index.md b/content/en/html-css/_index.md
similarity index 100%
rename from content/html-css/_index.md
rename to content/en/html-css/_index.md
diff --git a/content/html-css/blocks/what-are-components/index.md b/content/en/html-css/blocks/what-are-components/index.md
similarity index 100%
rename from content/html-css/blocks/what-are-components/index.md
rename to content/en/html-css/blocks/what-are-components/index.md
diff --git a/content/html-css/blocks/what-are-forms/index.md b/content/en/html-css/blocks/what-are-forms/index.md
similarity index 100%
rename from content/html-css/blocks/what-are-forms/index.md
rename to content/en/html-css/blocks/what-are-forms/index.md
diff --git a/content/html-css/blocks/what-is-css/index.md b/content/en/html-css/blocks/what-is-css/index.md
similarity index 100%
rename from content/html-css/blocks/what-is-css/index.md
rename to content/en/html-css/blocks/what-is-css/index.md
diff --git a/content/html-css/blocks/what-is-html/index.md b/content/en/html-css/blocks/what-is-html/index.md
similarity index 100%
rename from content/html-css/blocks/what-is-html/index.md
rename to content/en/html-css/blocks/what-is-html/index.md
diff --git a/content/html-css/prep/index.md b/content/en/html-css/prep/index.md
similarity index 100%
rename from content/html-css/prep/index.md
rename to content/en/html-css/prep/index.md
diff --git a/content/html-css/product/_index.md b/content/en/html-css/product/_index.md
similarity index 100%
rename from content/html-css/product/_index.md
rename to content/en/html-css/product/_index.md
diff --git a/content/html-css/product/build/index.md b/content/en/html-css/product/build/index.md
similarity index 100%
rename from content/html-css/product/build/index.md
rename to content/en/html-css/product/build/index.md
diff --git a/content/html-css/product/plan/index.md b/content/en/html-css/product/plan/index.md
similarity index 100%
rename from content/html-css/product/plan/index.md
rename to content/en/html-css/product/plan/index.md
diff --git a/content/html-css/product/ship/index.md b/content/en/html-css/product/ship/index.md
similarity index 100%
rename from content/html-css/product/ship/index.md
rename to content/en/html-css/product/ship/index.md
diff --git a/content/html-css/product/test/index.md b/content/en/html-css/product/test/index.md
similarity index 100%
rename from content/html-css/product/test/index.md
rename to content/en/html-css/product/test/index.md
diff --git a/content/html-css/sprints/1/_index.md b/content/en/html-css/sprints/1/_index.md
similarity index 100%
rename from content/html-css/sprints/1/_index.md
rename to content/en/html-css/sprints/1/_index.md
diff --git a/content/html-css/sprints/1/backlog/index.md b/content/en/html-css/sprints/1/backlog/index.md
similarity index 100%
rename from content/html-css/sprints/1/backlog/index.md
rename to content/en/html-css/sprints/1/backlog/index.md
diff --git a/content/html-css/sprints/1/day-plan/index.md b/content/en/html-css/sprints/1/day-plan/index.md
similarity index 98%
rename from content/html-css/sprints/1/day-plan/index.md
rename to content/en/html-css/sprints/1/day-plan/index.md
index 84878bc76..9400a51f5 100644
--- a/content/html-css/sprints/1/day-plan/index.md
+++ b/content/en/html-css/sprints/1/day-plan/index.md
@@ -12,6 +12,7 @@ src="blocks/energiser"
 [[blocks]]
 name="Devtools Workshop"
 src="https://github.com/CodeYourFuture/CYF-Workshops/tree/main/devtools"
+time="120"
 [[blocks]]
 name="lunch"
 src="blocks/lunch"
diff --git a/content/html-css/sprints/1/prep/index.md b/content/en/html-css/sprints/1/prep/index.md
similarity index 100%
rename from content/html-css/sprints/1/prep/index.md
rename to content/en/html-css/sprints/1/prep/index.md
diff --git a/content/html-css/sprints/1/success/index.md b/content/en/html-css/sprints/1/success/index.md
similarity index 100%
rename from content/html-css/sprints/1/success/index.md
rename to content/en/html-css/sprints/1/success/index.md
diff --git a/content/html-css/sprints/2/_index.md b/content/en/html-css/sprints/2/_index.md
similarity index 100%
rename from content/html-css/sprints/2/_index.md
rename to content/en/html-css/sprints/2/_index.md
diff --git a/content/html-css/sprints/2/backlog/index.md b/content/en/html-css/sprints/2/backlog/index.md
similarity index 100%
rename from content/html-css/sprints/2/backlog/index.md
rename to content/en/html-css/sprints/2/backlog/index.md
diff --git a/content/html-css/sprints/2/day-plan/index.md b/content/en/html-css/sprints/2/day-plan/index.md
similarity index 100%
rename from content/html-css/sprints/2/day-plan/index.md
rename to content/en/html-css/sprints/2/day-plan/index.md
diff --git a/content/html-css/sprints/2/prep/index.md b/content/en/html-css/sprints/2/prep/index.md
similarity index 100%
rename from content/html-css/sprints/2/prep/index.md
rename to content/en/html-css/sprints/2/prep/index.md
diff --git a/content/html-css/sprints/2/success/index.md b/content/en/html-css/sprints/2/success/index.md
similarity index 100%
rename from content/html-css/sprints/2/success/index.md
rename to content/en/html-css/sprints/2/success/index.md
diff --git a/content/html-css/sprints/3/_index.md b/content/en/html-css/sprints/3/_index.md
similarity index 100%
rename from content/html-css/sprints/3/_index.md
rename to content/en/html-css/sprints/3/_index.md
diff --git a/content/html-css/sprints/3/backlog/index.md b/content/en/html-css/sprints/3/backlog/index.md
similarity index 100%
rename from content/html-css/sprints/3/backlog/index.md
rename to content/en/html-css/sprints/3/backlog/index.md
diff --git a/content/html-css/sprints/3/day-plan/index.md b/content/en/html-css/sprints/3/day-plan/index.md
similarity index 100%
rename from content/html-css/sprints/3/day-plan/index.md
rename to content/en/html-css/sprints/3/day-plan/index.md
diff --git a/content/html-css/sprints/3/prep/index.md b/content/en/html-css/sprints/3/prep/index.md
similarity index 100%
rename from content/html-css/sprints/3/prep/index.md
rename to content/en/html-css/sprints/3/prep/index.md
diff --git a/content/html-css/sprints/3/success/index.md b/content/en/html-css/sprints/3/success/index.md
similarity index 100%
rename from content/html-css/sprints/3/success/index.md
rename to content/en/html-css/sprints/3/success/index.md
diff --git a/content/html-css/sprints/4/_index.md b/content/en/html-css/sprints/4/_index.md
similarity index 100%
rename from content/html-css/sprints/4/_index.md
rename to content/en/html-css/sprints/4/_index.md
diff --git a/content/html-css/sprints/4/backlog/index.md b/content/en/html-css/sprints/4/backlog/index.md
similarity index 100%
rename from content/html-css/sprints/4/backlog/index.md
rename to content/en/html-css/sprints/4/backlog/index.md
diff --git a/content/html-css/sprints/4/day-plan/index.md b/content/en/html-css/sprints/4/day-plan/index.md
similarity index 100%
rename from content/html-css/sprints/4/day-plan/index.md
rename to content/en/html-css/sprints/4/day-plan/index.md
diff --git a/content/html-css/sprints/4/prep/index.md b/content/en/html-css/sprints/4/prep/index.md
similarity index 100%
rename from content/html-css/sprints/4/prep/index.md
rename to content/en/html-css/sprints/4/prep/index.md
diff --git a/content/html-css/sprints/4/success/index.md b/content/en/html-css/sprints/4/success/index.md
similarity index 100%
rename from content/html-css/sprints/4/success/index.md
rename to content/en/html-css/sprints/4/success/index.md
diff --git a/content/html-css/success/index.md b/content/en/html-css/success/index.md
similarity index 100%
rename from content/html-css/success/index.md
rename to content/en/html-css/success/index.md
diff --git a/content/induction/_index.md b/content/en/induction/_index.md
similarity index 100%
rename from content/induction/_index.md
rename to content/en/induction/_index.md
diff --git a/content/induction/blocks/check-git-installation/index.md b/content/en/induction/blocks/check-git-installation/index.md
similarity index 100%
rename from content/induction/blocks/check-git-installation/index.md
rename to content/en/induction/blocks/check-git-installation/index.md
diff --git a/content/induction/blocks/check-github/index.md b/content/en/induction/blocks/check-github/index.md
similarity index 100%
rename from content/induction/blocks/check-github/index.md
rename to content/en/induction/blocks/check-github/index.md
diff --git a/content/induction/blocks/cyf-folder/index.md b/content/en/induction/blocks/cyf-folder/index.md
similarity index 100%
rename from content/induction/blocks/cyf-folder/index.md
rename to content/en/induction/blocks/cyf-folder/index.md
diff --git a/content/induction/blocks/github-poets/index.md b/content/en/induction/blocks/github-poets/index.md
similarity index 100%
rename from content/induction/blocks/github-poets/index.md
rename to content/en/induction/blocks/github-poets/index.md
diff --git a/content/induction/blocks/github/index.md b/content/en/induction/blocks/github/index.md
similarity index 100%
rename from content/induction/blocks/github/index.md
rename to content/en/induction/blocks/github/index.md
diff --git a/content/induction/blocks/handshake/index.md b/content/en/induction/blocks/handshake/index.md
similarity index 100%
rename from content/induction/blocks/handshake/index.md
rename to content/en/induction/blocks/handshake/index.md
diff --git a/content/induction/blocks/install-vscode/index.md b/content/en/induction/blocks/install-vscode/index.md
similarity index 100%
rename from content/induction/blocks/install-vscode/index.md
rename to content/en/induction/blocks/install-vscode/index.md
diff --git a/content/induction/blocks/learning-as-community/index.md b/content/en/induction/blocks/learning-as-community/index.md
similarity index 100%
rename from content/induction/blocks/learning-as-community/index.md
rename to content/en/induction/blocks/learning-as-community/index.md
diff --git a/content/induction/blocks/next-steps/index.md b/content/en/induction/blocks/next-steps/index.md
similarity index 100%
rename from content/induction/blocks/next-steps/index.md
rename to content/en/induction/blocks/next-steps/index.md
diff --git a/content/induction/prep/index.md b/content/en/induction/prep/index.md
similarity index 100%
rename from content/induction/prep/index.md
rename to content/en/induction/prep/index.md
diff --git a/content/induction/sprints/1/_index.md b/content/en/induction/sprints/1/_index.md
similarity index 100%
rename from content/induction/sprints/1/_index.md
rename to content/en/induction/sprints/1/_index.md
diff --git a/content/induction/sprints/1/backlog/index.md b/content/en/induction/sprints/1/backlog/index.md
similarity index 100%
rename from content/induction/sprints/1/backlog/index.md
rename to content/en/induction/sprints/1/backlog/index.md
diff --git a/content/induction/sprints/1/day-plan/index.md b/content/en/induction/sprints/1/day-plan/index.md
similarity index 100%
rename from content/induction/sprints/1/day-plan/index.md
rename to content/en/induction/sprints/1/day-plan/index.md
diff --git a/content/induction/sprints/1/prep/commit-history-relative-dates.png b/content/en/induction/sprints/1/prep/commit-history-relative-dates.png
similarity index 100%
rename from content/induction/sprints/1/prep/commit-history-relative-dates.png
rename to content/en/induction/sprints/1/prep/commit-history-relative-dates.png
diff --git a/content/induction/sprints/1/prep/commit-history.png b/content/en/induction/sprints/1/prep/commit-history.png
similarity index 100%
rename from content/induction/sprints/1/prep/commit-history.png
rename to content/en/induction/sprints/1/prep/commit-history.png
diff --git a/content/induction/sprints/1/prep/different-blog-versions.png b/content/en/induction/sprints/1/prep/different-blog-versions.png
similarity index 100%
rename from content/induction/sprints/1/prep/different-blog-versions.png
rename to content/en/induction/sprints/1/prep/different-blog-versions.png
diff --git a/content/induction/sprints/1/prep/fork-and-clone-diagram.png b/content/en/induction/sprints/1/prep/fork-and-clone-diagram.png
similarity index 100%
rename from content/induction/sprints/1/prep/fork-and-clone-diagram.png
rename to content/en/induction/sprints/1/prep/fork-and-clone-diagram.png
diff --git a/content/induction/sprints/1/prep/highlight-2nd-commit.png b/content/en/induction/sprints/1/prep/highlight-2nd-commit.png
similarity index 100%
rename from content/induction/sprints/1/prep/highlight-2nd-commit.png
rename to content/en/induction/sprints/1/prep/highlight-2nd-commit.png
diff --git a/content/induction/sprints/1/prep/index.md b/content/en/induction/sprints/1/prep/index.md
similarity index 100%
rename from content/induction/sprints/1/prep/index.md
rename to content/en/induction/sprints/1/prep/index.md
diff --git a/content/induction/sprints/1/prep/lesson1-forked-url-anatomy.png b/content/en/induction/sprints/1/prep/lesson1-forked-url-anatomy.png
similarity index 100%
rename from content/induction/sprints/1/prep/lesson1-forked-url-anatomy.png
rename to content/en/induction/sprints/1/prep/lesson1-forked-url-anatomy.png
diff --git a/content/induction/sprints/1/prep/lesson1-four-repo-diagram.png b/content/en/induction/sprints/1/prep/lesson1-four-repo-diagram.png
similarity index 100%
rename from content/induction/sprints/1/prep/lesson1-four-repo-diagram.png
rename to content/en/induction/sprints/1/prep/lesson1-four-repo-diagram.png
diff --git a/content/induction/sprints/1/prep/lesson1-github-url-anatomy.png b/content/en/induction/sprints/1/prep/lesson1-github-url-anatomy.png
similarity index 100%
rename from content/induction/sprints/1/prep/lesson1-github-url-anatomy.png
rename to content/en/induction/sprints/1/prep/lesson1-github-url-anatomy.png
diff --git a/content/induction/sprints/1/prep/main-branch-highlighted.png b/content/en/induction/sprints/1/prep/main-branch-highlighted.png
similarity index 100%
rename from content/induction/sprints/1/prep/main-branch-highlighted.png
rename to content/en/induction/sprints/1/prep/main-branch-highlighted.png
diff --git a/content/induction/sprints/1/success/index.md b/content/en/induction/sprints/1/success/index.md
similarity index 100%
rename from content/induction/sprints/1/success/index.md
rename to content/en/induction/sprints/1/success/index.md
diff --git a/content/induction/success/index.md b/content/en/induction/success/index.md
similarity index 100%
rename from content/induction/success/index.md
rename to content/en/induction/success/index.md
diff --git a/content/js1/_index.md b/content/en/js1/_index.md
similarity index 100%
rename from content/js1/_index.md
rename to content/en/js1/_index.md
diff --git a/content/js1/blocks/api/index.md b/content/en/js1/blocks/api/index.md
similarity index 100%
rename from content/js1/blocks/api/index.md
rename to content/en/js1/blocks/api/index.md
diff --git a/content/js1/blocks/assembly/index.md b/content/en/js1/blocks/assembly/index.md
similarity index 100%
rename from content/js1/blocks/assembly/index.md
rename to content/en/js1/blocks/assembly/index.md
diff --git a/content/js1/blocks/assertions/index.md b/content/en/js1/blocks/assertions/index.md
similarity index 100%
rename from content/js1/blocks/assertions/index.md
rename to content/en/js1/blocks/assertions/index.md
diff --git a/content/js1/blocks/cases/index.md b/content/en/js1/blocks/cases/index.md
similarity index 100%
rename from content/js1/blocks/cases/index.md
rename to content/en/js1/blocks/cases/index.md
diff --git a/content/js1/blocks/check-unix-os/index.md b/content/en/js1/blocks/check-unix-os/index.md
similarity index 100%
rename from content/js1/blocks/check-unix-os/index.md
rename to content/en/js1/blocks/check-unix-os/index.md
diff --git a/content/js1/blocks/clocks/index.md b/content/en/js1/blocks/clocks/index.md
similarity index 100%
rename from content/js1/blocks/clocks/index.md
rename to content/en/js1/blocks/clocks/index.md
diff --git a/content/js1/blocks/comparison/index.md b/content/en/js1/blocks/comparison/index.md
similarity index 100%
rename from content/js1/blocks/comparison/index.md
rename to content/en/js1/blocks/comparison/index.md
diff --git a/content/js1/blocks/conditionality/index.md b/content/en/js1/blocks/conditionality/index.md
similarity index 100%
rename from content/js1/blocks/conditionality/index.md
rename to content/en/js1/blocks/conditionality/index.md
diff --git a/content/js1/blocks/data/index.md b/content/en/js1/blocks/data/index.md
similarity index 100%
rename from content/js1/blocks/data/index.md
rename to content/en/js1/blocks/data/index.md
diff --git a/content/js1/blocks/declarations-statements/index.md b/content/en/js1/blocks/declarations-statements/index.md
similarity index 100%
rename from content/js1/blocks/declarations-statements/index.md
rename to content/en/js1/blocks/declarations-statements/index.md
diff --git a/content/js1/blocks/declaring-functions/index.md b/content/en/js1/blocks/declaring-functions/index.md
similarity index 100%
rename from content/js1/blocks/declaring-functions/index.md
rename to content/en/js1/blocks/declaring-functions/index.md
diff --git a/content/js1/blocks/declaring-functions/round.gif b/content/en/js1/blocks/declaring-functions/round.gif
similarity index 100%
rename from content/js1/blocks/declaring-functions/round.gif
rename to content/en/js1/blocks/declaring-functions/round.gif
diff --git a/content/js1/blocks/errors/index.md b/content/en/js1/blocks/errors/index.md
similarity index 100%
rename from content/js1/blocks/errors/index.md
rename to content/en/js1/blocks/errors/index.md
diff --git a/content/js1/blocks/feedback/index.md b/content/en/js1/blocks/feedback/index.md
similarity index 100%
rename from content/js1/blocks/feedback/index.md
rename to content/en/js1/blocks/feedback/index.md
diff --git a/content/js1/blocks/feedback/test-feedback-fail.png b/content/en/js1/blocks/feedback/test-feedback-fail.png
similarity index 100%
rename from content/js1/blocks/feedback/test-feedback-fail.png
rename to content/en/js1/blocks/feedback/test-feedback-fail.png
diff --git a/content/js1/blocks/feedback/test-reference-error.png b/content/en/js1/blocks/feedback/test-reference-error.png
similarity index 100%
rename from content/js1/blocks/feedback/test-reference-error.png
rename to content/en/js1/blocks/feedback/test-reference-error.png
diff --git a/content/js1/blocks/framework/index.md b/content/en/js1/blocks/framework/index.md
similarity index 100%
rename from content/js1/blocks/framework/index.md
rename to content/en/js1/blocks/framework/index.md
diff --git a/content/js1/blocks/functions/index.md b/content/en/js1/blocks/functions/index.md
similarity index 100%
rename from content/js1/blocks/functions/index.md
rename to content/en/js1/blocks/functions/index.md
diff --git a/content/js1/blocks/functions/round.gif b/content/en/js1/blocks/functions/round.gif
similarity index 100%
rename from content/js1/blocks/functions/round.gif
rename to content/en/js1/blocks/functions/round.gif
diff --git a/content/js1/blocks/generalise/index.md b/content/en/js1/blocks/generalise/index.md
similarity index 100%
rename from content/js1/blocks/generalise/index.md
rename to content/en/js1/blocks/generalise/index.md
diff --git a/content/js1/blocks/generalise/second-case-fail.png b/content/en/js1/blocks/generalise/second-case-fail.png
similarity index 100%
rename from content/js1/blocks/generalise/second-case-fail.png
rename to content/en/js1/blocks/generalise/second-case-fail.png
diff --git a/content/js1/blocks/improving/index.md b/content/en/js1/blocks/improving/index.md
similarity index 100%
rename from content/js1/blocks/improving/index.md
rename to content/en/js1/blocks/improving/index.md
diff --git a/content/js1/blocks/install-node/index.md b/content/en/js1/blocks/install-node/index.md
similarity index 100%
rename from content/js1/blocks/install-node/index.md
rename to content/en/js1/blocks/install-node/index.md
diff --git a/content/js1/blocks/installing/index.md b/content/en/js1/blocks/installing/index.md
similarity index 100%
rename from content/js1/blocks/installing/index.md
rename to content/en/js1/blocks/installing/index.md
diff --git a/content/js1/blocks/installing/jest-install.png b/content/en/js1/blocks/installing/jest-install.png
similarity index 100%
rename from content/js1/blocks/installing/jest-install.png
rename to content/en/js1/blocks/installing/jest-install.png
diff --git a/content/js1/blocks/interface/index.md b/content/en/js1/blocks/interface/index.md
similarity index 100%
rename from content/js1/blocks/interface/index.md
rename to content/en/js1/blocks/interface/index.md
diff --git a/content/js1/blocks/logging/index.md b/content/en/js1/blocks/logging/index.md
similarity index 100%
rename from content/js1/blocks/logging/index.md
rename to content/en/js1/blocks/logging/index.md
diff --git a/content/js1/blocks/ordinal/index.md b/content/en/js1/blocks/ordinal/index.md
similarity index 100%
rename from content/js1/blocks/ordinal/index.md
rename to content/en/js1/blocks/ordinal/index.md
diff --git a/content/js1/blocks/outliers/index.md b/content/en/js1/blocks/outliers/index.md
similarity index 100%
rename from content/js1/blocks/outliers/index.md
rename to content/en/js1/blocks/outliers/index.md
diff --git a/content/js1/blocks/outliers/second-case-fail.png b/content/en/js1/blocks/outliers/second-case-fail.png
similarity index 100%
rename from content/js1/blocks/outliers/second-case-fail.png
rename to content/en/js1/blocks/outliers/second-case-fail.png
diff --git a/content/js1/blocks/packages/index.md b/content/en/js1/blocks/packages/index.md
similarity index 100%
rename from content/js1/blocks/packages/index.md
rename to content/en/js1/blocks/packages/index.md
diff --git a/content/js1/blocks/parameters/index.md b/content/en/js1/blocks/parameters/index.md
similarity index 100%
rename from content/js1/blocks/parameters/index.md
rename to content/en/js1/blocks/parameters/index.md
diff --git a/content/js1/blocks/percentages/index.md b/content/en/js1/blocks/percentages/index.md
similarity index 100%
rename from content/js1/blocks/percentages/index.md
rename to content/en/js1/blocks/percentages/index.md
diff --git a/content/js1/blocks/playing-computer/global-frame.png b/content/en/js1/blocks/playing-computer/global-frame.png
similarity index 100%
rename from content/js1/blocks/playing-computer/global-frame.png
rename to content/en/js1/blocks/playing-computer/global-frame.png
diff --git a/content/js1/blocks/playing-computer/index.md b/content/en/js1/blocks/playing-computer/index.md
similarity index 100%
rename from content/js1/blocks/playing-computer/index.md
rename to content/en/js1/blocks/playing-computer/index.md
diff --git a/content/js1/blocks/playing-computer/make-greeting-frame.png b/content/en/js1/blocks/playing-computer/make-greeting-frame.png
similarity index 100%
rename from content/js1/blocks/playing-computer/make-greeting-frame.png
rename to content/en/js1/blocks/playing-computer/make-greeting-frame.png
diff --git a/content/js1/blocks/playing-computer/runtime-diagram-1.png b/content/en/js1/blocks/playing-computer/runtime-diagram-1.png
similarity index 100%
rename from content/js1/blocks/playing-computer/runtime-diagram-1.png
rename to content/en/js1/blocks/playing-computer/runtime-diagram-1.png
diff --git a/content/js1/blocks/repl/index.md b/content/en/js1/blocks/repl/index.md
similarity index 100%
rename from content/js1/blocks/repl/index.md
rename to content/en/js1/blocks/repl/index.md
diff --git a/content/js1/blocks/return/index.md b/content/en/js1/blocks/return/index.md
similarity index 100%
rename from content/js1/blocks/return/index.md
rename to content/en/js1/blocks/return/index.md
diff --git a/content/js1/blocks/reuse/index.md b/content/en/js1/blocks/reuse/index.md
similarity index 100%
rename from content/js1/blocks/reuse/index.md
rename to content/en/js1/blocks/reuse/index.md
diff --git a/content/js1/blocks/reuse/round.gif b/content/en/js1/blocks/reuse/round.gif
similarity index 100%
rename from content/js1/blocks/reuse/round.gif
rename to content/en/js1/blocks/reuse/round.gif
diff --git a/content/js1/blocks/scope/index.md b/content/en/js1/blocks/scope/index.md
similarity index 100%
rename from content/js1/blocks/scope/index.md
rename to content/en/js1/blocks/scope/index.md
diff --git a/content/js1/blocks/scripts/index.md b/content/en/js1/blocks/scripts/index.md
similarity index 100%
rename from content/js1/blocks/scripts/index.md
rename to content/en/js1/blocks/scripts/index.md
diff --git a/content/js1/blocks/setup/index.md b/content/en/js1/blocks/setup/index.md
similarity index 100%
rename from content/js1/blocks/setup/index.md
rename to content/en/js1/blocks/setup/index.md
diff --git a/content/js1/blocks/setup/jest-install.png b/content/en/js1/blocks/setup/jest-install.png
similarity index 100%
rename from content/js1/blocks/setup/jest-install.png
rename to content/en/js1/blocks/setup/jest-install.png
diff --git a/content/js1/blocks/strategy/index.md b/content/en/js1/blocks/strategy/index.md
similarity index 100%
rename from content/js1/blocks/strategy/index.md
rename to content/en/js1/blocks/strategy/index.md
diff --git a/content/js1/blocks/strings/index.md b/content/en/js1/blocks/strings/index.md
similarity index 100%
rename from content/js1/blocks/strings/index.md
rename to content/en/js1/blocks/strings/index.md
diff --git a/content/js1/blocks/sub-goal/index.md b/content/en/js1/blocks/sub-goal/index.md
similarity index 100%
rename from content/js1/blocks/sub-goal/index.md
rename to content/en/js1/blocks/sub-goal/index.md
diff --git a/content/js1/blocks/terminal/index.md b/content/en/js1/blocks/terminal/index.md
similarity index 100%
rename from content/js1/blocks/terminal/index.md
rename to content/en/js1/blocks/terminal/index.md
diff --git a/content/js1/blocks/terminal/terminal.gif b/content/en/js1/blocks/terminal/terminal.gif
similarity index 100%
rename from content/js1/blocks/terminal/terminal.gif
rename to content/en/js1/blocks/terminal/terminal.gif
diff --git a/content/js1/blocks/variables/greeting.gif b/content/en/js1/blocks/variables/greeting.gif
similarity index 100%
rename from content/js1/blocks/variables/greeting.gif
rename to content/en/js1/blocks/variables/greeting.gif
diff --git a/content/js1/blocks/variables/index.md b/content/en/js1/blocks/variables/index.md
similarity index 100%
rename from content/js1/blocks/variables/index.md
rename to content/en/js1/blocks/variables/index.md
diff --git a/content/js1/prep/index.md b/content/en/js1/prep/index.md
similarity index 100%
rename from content/js1/prep/index.md
rename to content/en/js1/prep/index.md
diff --git a/content/js1/sprints/1/_index.md b/content/en/js1/sprints/1/_index.md
similarity index 100%
rename from content/js1/sprints/1/_index.md
rename to content/en/js1/sprints/1/_index.md
diff --git a/content/js1/sprints/1/backlog/index.md b/content/en/js1/sprints/1/backlog/index.md
similarity index 100%
rename from content/js1/sprints/1/backlog/index.md
rename to content/en/js1/sprints/1/backlog/index.md
diff --git a/content/js1/sprints/1/day-plan/index.md b/content/en/js1/sprints/1/day-plan/index.md
similarity index 100%
rename from content/js1/sprints/1/day-plan/index.md
rename to content/en/js1/sprints/1/day-plan/index.md
diff --git a/content/js1/sprints/1/prep/index.md b/content/en/js1/sprints/1/prep/index.md
similarity index 100%
rename from content/js1/sprints/1/prep/index.md
rename to content/en/js1/sprints/1/prep/index.md
diff --git a/content/js1/sprints/1/success/index.md b/content/en/js1/sprints/1/success/index.md
similarity index 100%
rename from content/js1/sprints/1/success/index.md
rename to content/en/js1/sprints/1/success/index.md
diff --git a/content/js1/sprints/2/_index.md b/content/en/js1/sprints/2/_index.md
similarity index 100%
rename from content/js1/sprints/2/_index.md
rename to content/en/js1/sprints/2/_index.md
diff --git a/content/js1/sprints/2/backlog/index.md b/content/en/js1/sprints/2/backlog/index.md
similarity index 100%
rename from content/js1/sprints/2/backlog/index.md
rename to content/en/js1/sprints/2/backlog/index.md
diff --git a/content/js1/sprints/2/day-plan/index.md b/content/en/js1/sprints/2/day-plan/index.md
similarity index 100%
rename from content/js1/sprints/2/day-plan/index.md
rename to content/en/js1/sprints/2/day-plan/index.md
diff --git a/content/js1/sprints/2/prep/index.md b/content/en/js1/sprints/2/prep/index.md
similarity index 100%
rename from content/js1/sprints/2/prep/index.md
rename to content/en/js1/sprints/2/prep/index.md
diff --git a/content/js1/sprints/2/success/index.md b/content/en/js1/sprints/2/success/index.md
similarity index 100%
rename from content/js1/sprints/2/success/index.md
rename to content/en/js1/sprints/2/success/index.md
diff --git a/content/js1/sprints/3/_index.md b/content/en/js1/sprints/3/_index.md
similarity index 100%
rename from content/js1/sprints/3/_index.md
rename to content/en/js1/sprints/3/_index.md
diff --git a/content/js1/sprints/3/backlog/index.md b/content/en/js1/sprints/3/backlog/index.md
similarity index 100%
rename from content/js1/sprints/3/backlog/index.md
rename to content/en/js1/sprints/3/backlog/index.md
diff --git a/content/js1/sprints/3/day-plan/index.md b/content/en/js1/sprints/3/day-plan/index.md
similarity index 100%
rename from content/js1/sprints/3/day-plan/index.md
rename to content/en/js1/sprints/3/day-plan/index.md
diff --git a/content/js1/sprints/3/prep/index.md b/content/en/js1/sprints/3/prep/index.md
similarity index 100%
rename from content/js1/sprints/3/prep/index.md
rename to content/en/js1/sprints/3/prep/index.md
diff --git a/content/js1/sprints/3/success/index.md b/content/en/js1/sprints/3/success/index.md
similarity index 100%
rename from content/js1/sprints/3/success/index.md
rename to content/en/js1/sprints/3/success/index.md
diff --git a/content/js1/sprints/4/_index.md b/content/en/js1/sprints/4/_index.md
similarity index 100%
rename from content/js1/sprints/4/_index.md
rename to content/en/js1/sprints/4/_index.md
diff --git a/content/js1/sprints/4/backlog/index.md b/content/en/js1/sprints/4/backlog/index.md
similarity index 100%
rename from content/js1/sprints/4/backlog/index.md
rename to content/en/js1/sprints/4/backlog/index.md
diff --git a/content/js1/sprints/4/day-plan/index.md b/content/en/js1/sprints/4/day-plan/index.md
similarity index 100%
rename from content/js1/sprints/4/day-plan/index.md
rename to content/en/js1/sprints/4/day-plan/index.md
diff --git a/content/js1/sprints/4/prep/index.md b/content/en/js1/sprints/4/prep/index.md
similarity index 100%
rename from content/js1/sprints/4/prep/index.md
rename to content/en/js1/sprints/4/prep/index.md
diff --git a/content/js1/sprints/4/success/index.md b/content/en/js1/sprints/4/success/index.md
similarity index 100%
rename from content/js1/sprints/4/success/index.md
rename to content/en/js1/sprints/4/success/index.md
diff --git a/content/js1/success/index.md b/content/en/js1/success/index.md
similarity index 100%
rename from content/js1/success/index.md
rename to content/en/js1/success/index.md
diff --git a/content/js2/_index.md b/content/en/js2/_index.md
similarity index 100%
rename from content/js2/_index.md
rename to content/en/js2/_index.md
diff --git a/content/js2/blocks/access/index.md b/content/en/js2/blocks/access/index.md
similarity index 100%
rename from content/js2/blocks/access/index.md
rename to content/en/js2/blocks/access/index.md
diff --git a/content/js2/blocks/arrays/index.md b/content/en/js2/blocks/arrays/index.md
similarity index 100%
rename from content/js2/blocks/arrays/index.md
rename to content/en/js2/blocks/arrays/index.md
diff --git a/content/js2/blocks/assembly/index.md b/content/en/js2/blocks/assembly/index.md
similarity index 100%
rename from content/js2/blocks/assembly/index.md
rename to content/en/js2/blocks/assembly/index.md
diff --git a/content/js2/blocks/browser/index.md b/content/en/js2/blocks/browser/index.md
similarity index 100%
rename from content/js2/blocks/browser/index.md
rename to content/en/js2/blocks/browser/index.md
diff --git a/content/js2/blocks/character-limit/index.md b/content/en/js2/blocks/character-limit/index.md
similarity index 100%
rename from content/js2/blocks/character-limit/index.md
rename to content/en/js2/blocks/character-limit/index.md
diff --git a/content/js2/blocks/check-in/index.md b/content/en/js2/blocks/check-in/index.md
similarity index 100%
rename from content/js2/blocks/check-in/index.md
rename to content/en/js2/blocks/check-in/index.md
diff --git a/content/js2/blocks/check-progress/index.md b/content/en/js2/blocks/check-progress/index.md
similarity index 100%
rename from content/js2/blocks/check-progress/index.md
rename to content/en/js2/blocks/check-progress/index.md
diff --git a/content/js2/blocks/demo/index.md b/content/en/js2/blocks/demo/index.md
similarity index 100%
rename from content/js2/blocks/demo/index.md
rename to content/en/js2/blocks/demo/index.md
diff --git a/content/js2/blocks/dom/html-tree.png b/content/en/js2/blocks/dom/html-tree.png
similarity index 100%
rename from content/js2/blocks/dom/html-tree.png
rename to content/en/js2/blocks/dom/html-tree.png
diff --git a/content/js2/blocks/dom/index.md b/content/en/js2/blocks/dom/index.md
similarity index 100%
rename from content/js2/blocks/dom/index.md
rename to content/en/js2/blocks/dom/index.md
diff --git a/content/js2/blocks/events/index.md b/content/en/js2/blocks/events/index.md
similarity index 100%
rename from content/js2/blocks/events/index.md
rename to content/en/js2/blocks/events/index.md
diff --git a/content/js2/blocks/grouping-data/index.md b/content/en/js2/blocks/grouping-data/index.md
similarity index 100%
rename from content/js2/blocks/grouping-data/index.md
rename to content/en/js2/blocks/grouping-data/index.md
diff --git a/content/js2/blocks/iteration/index.md b/content/en/js2/blocks/iteration/index.md
similarity index 100%
rename from content/js2/blocks/iteration/index.md
rename to content/en/js2/blocks/iteration/index.md
diff --git a/content/js2/blocks/key-values/index.md b/content/en/js2/blocks/key-values/index.md
similarity index 100%
rename from content/js2/blocks/key-values/index.md
rename to content/en/js2/blocks/key-values/index.md
diff --git a/content/js2/blocks/mean/index.md b/content/en/js2/blocks/mean/index.md
similarity index 100%
rename from content/js2/blocks/mean/index.md
rename to content/en/js2/blocks/mean/index.md
diff --git a/content/js2/blocks/median/index.md b/content/en/js2/blocks/median/index.md
similarity index 100%
rename from content/js2/blocks/median/index.md
rename to content/en/js2/blocks/median/index.md
diff --git a/content/js2/blocks/multiple-params/index.md b/content/en/js2/blocks/multiple-params/index.md
similarity index 100%
rename from content/js2/blocks/multiple-params/index.md
rename to content/en/js2/blocks/multiple-params/index.md
diff --git a/content/js2/blocks/mutating/index.md b/content/en/js2/blocks/mutating/index.md
similarity index 100%
rename from content/js2/blocks/mutating/index.md
rename to content/en/js2/blocks/mutating/index.md
diff --git a/content/js2/blocks/mutation/index.md b/content/en/js2/blocks/mutation/index.md
similarity index 100%
rename from content/js2/blocks/mutation/index.md
rename to content/en/js2/blocks/mutation/index.md
diff --git a/content/js2/blocks/no-params/index.md b/content/en/js2/blocks/no-params/index.md
similarity index 100%
rename from content/js2/blocks/no-params/index.md
rename to content/en/js2/blocks/no-params/index.md
diff --git a/content/js2/blocks/no-params/to-be-check-error.png b/content/en/js2/blocks/no-params/to-be-check-error.png
similarity index 100%
rename from content/js2/blocks/no-params/to-be-check-error.png
rename to content/en/js2/blocks/no-params/to-be-check-error.png
diff --git a/content/js2/blocks/one-pair/index.md b/content/en/js2/blocks/one-pair/index.md
similarity index 100%
rename from content/js2/blocks/one-pair/index.md
rename to content/en/js2/blocks/one-pair/index.md
diff --git a/content/js2/blocks/one-pair/literal-key.png b/content/en/js2/blocks/one-pair/literal-key.png
similarity index 100%
rename from content/js2/blocks/one-pair/literal-key.png
rename to content/en/js2/blocks/one-pair/literal-key.png
diff --git a/content/js2/blocks/ordered-data/index.md b/content/en/js2/blocks/ordered-data/index.md
similarity index 100%
rename from content/js2/blocks/ordered-data/index.md
rename to content/en/js2/blocks/ordered-data/index.md
diff --git a/content/js2/blocks/pair-up/index.md b/content/en/js2/blocks/pair-up/index.md
similarity index 100%
rename from content/js2/blocks/pair-up/index.md
rename to content/en/js2/blocks/pair-up/index.md
diff --git a/content/js2/blocks/pick-an-app/index.md b/content/en/js2/blocks/pick-an-app/index.md
similarity index 100%
rename from content/js2/blocks/pick-an-app/index.md
rename to content/en/js2/blocks/pick-an-app/index.md
diff --git a/content/js2/blocks/plan/index.md b/content/en/js2/blocks/plan/index.md
similarity index 100%
rename from content/js2/blocks/plan/index.md
rename to content/en/js2/blocks/plan/index.md
diff --git a/content/js2/blocks/query-string/index.md b/content/en/js2/blocks/query-string/index.md
similarity index 100%
rename from content/js2/blocks/query-string/index.md
rename to content/en/js2/blocks/query-string/index.md
diff --git a/content/js2/blocks/querying/index.md b/content/en/js2/blocks/querying/index.md
similarity index 100%
rename from content/js2/blocks/querying/index.md
rename to content/en/js2/blocks/querying/index.md
diff --git a/content/js2/blocks/reference/index.md b/content/en/js2/blocks/reference/index.md
similarity index 100%
rename from content/js2/blocks/reference/index.md
rename to content/en/js2/blocks/reference/index.md
diff --git a/content/js2/blocks/reference/point-to-array.png b/content/en/js2/blocks/reference/point-to-array.png
similarity index 100%
rename from content/js2/blocks/reference/point-to-array.png
rename to content/en/js2/blocks/reference/point-to-array.png
diff --git a/content/js2/blocks/response/index.md b/content/en/js2/blocks/response/index.md
similarity index 100%
rename from content/js2/blocks/response/index.md
rename to content/en/js2/blocks/response/index.md
diff --git a/content/js2/blocks/side-effects/index.md b/content/en/js2/blocks/side-effects/index.md
similarity index 100%
rename from content/js2/blocks/side-effects/index.md
rename to content/en/js2/blocks/side-effects/index.md
diff --git a/content/js2/blocks/summing/index.md b/content/en/js2/blocks/summing/index.md
similarity index 100%
rename from content/js2/blocks/summing/index.md
rename to content/en/js2/blocks/summing/index.md
diff --git a/content/js2/blocks/update/index.md b/content/en/js2/blocks/update/index.md
similarity index 100%
rename from content/js2/blocks/update/index.md
rename to content/en/js2/blocks/update/index.md
diff --git a/content/js2/blocks/variable-keys/index.md b/content/en/js2/blocks/variable-keys/index.md
similarity index 100%
rename from content/js2/blocks/variable-keys/index.md
rename to content/en/js2/blocks/variable-keys/index.md
diff --git a/content/js2/blocks/variable-keys/parse-query-test-feedback.png b/content/en/js2/blocks/variable-keys/parse-query-test-feedback.png
similarity index 100%
rename from content/js2/blocks/variable-keys/parse-query-test-feedback.png
rename to content/en/js2/blocks/variable-keys/parse-query-test-feedback.png
diff --git a/content/js2/prep/index.md b/content/en/js2/prep/index.md
similarity index 100%
rename from content/js2/prep/index.md
rename to content/en/js2/prep/index.md
diff --git a/content/js2/product/_index.md b/content/en/js2/product/_index.md
similarity index 100%
rename from content/js2/product/_index.md
rename to content/en/js2/product/_index.md
diff --git a/content/js2/product/build/index.md b/content/en/js2/product/build/index.md
similarity index 100%
rename from content/js2/product/build/index.md
rename to content/en/js2/product/build/index.md
diff --git a/content/js2/product/plan/index.md b/content/en/js2/product/plan/index.md
similarity index 100%
rename from content/js2/product/plan/index.md
rename to content/en/js2/product/plan/index.md
diff --git a/content/js2/product/ship/index.md b/content/en/js2/product/ship/index.md
similarity index 100%
rename from content/js2/product/ship/index.md
rename to content/en/js2/product/ship/index.md
diff --git a/content/js2/product/test/index.md b/content/en/js2/product/test/index.md
similarity index 100%
rename from content/js2/product/test/index.md
rename to content/en/js2/product/test/index.md
diff --git a/content/js2/sprints/1/_index.md b/content/en/js2/sprints/1/_index.md
similarity index 100%
rename from content/js2/sprints/1/_index.md
rename to content/en/js2/sprints/1/_index.md
diff --git a/content/js2/sprints/1/backlog/index.md b/content/en/js2/sprints/1/backlog/index.md
similarity index 100%
rename from content/js2/sprints/1/backlog/index.md
rename to content/en/js2/sprints/1/backlog/index.md
diff --git a/content/js2/sprints/1/day-plan/index.md b/content/en/js2/sprints/1/day-plan/index.md
similarity index 100%
rename from content/js2/sprints/1/day-plan/index.md
rename to content/en/js2/sprints/1/day-plan/index.md
diff --git a/content/js2/sprints/1/prep/index.md b/content/en/js2/sprints/1/prep/index.md
similarity index 100%
rename from content/js2/sprints/1/prep/index.md
rename to content/en/js2/sprints/1/prep/index.md
diff --git a/content/js2/sprints/1/success/index.md b/content/en/js2/sprints/1/success/index.md
similarity index 100%
rename from content/js2/sprints/1/success/index.md
rename to content/en/js2/sprints/1/success/index.md
diff --git a/content/js2/sprints/2/_index.md b/content/en/js2/sprints/2/_index.md
similarity index 100%
rename from content/js2/sprints/2/_index.md
rename to content/en/js2/sprints/2/_index.md
diff --git a/content/js2/sprints/2/backlog/index.md b/content/en/js2/sprints/2/backlog/index.md
similarity index 100%
rename from content/js2/sprints/2/backlog/index.md
rename to content/en/js2/sprints/2/backlog/index.md
diff --git a/content/js2/sprints/2/day-plan/index.md b/content/en/js2/sprints/2/day-plan/index.md
similarity index 100%
rename from content/js2/sprints/2/day-plan/index.md
rename to content/en/js2/sprints/2/day-plan/index.md
diff --git a/content/js2/sprints/2/prep/index.md b/content/en/js2/sprints/2/prep/index.md
similarity index 100%
rename from content/js2/sprints/2/prep/index.md
rename to content/en/js2/sprints/2/prep/index.md
diff --git a/content/js2/sprints/2/success/index.md b/content/en/js2/sprints/2/success/index.md
similarity index 100%
rename from content/js2/sprints/2/success/index.md
rename to content/en/js2/sprints/2/success/index.md
diff --git a/content/js2/sprints/3/_index.md b/content/en/js2/sprints/3/_index.md
similarity index 100%
rename from content/js2/sprints/3/_index.md
rename to content/en/js2/sprints/3/_index.md
diff --git a/content/js2/sprints/3/backlog/index.md b/content/en/js2/sprints/3/backlog/index.md
similarity index 100%
rename from content/js2/sprints/3/backlog/index.md
rename to content/en/js2/sprints/3/backlog/index.md
diff --git a/content/js2/sprints/3/day-plan/index.md b/content/en/js2/sprints/3/day-plan/index.md
similarity index 100%
rename from content/js2/sprints/3/day-plan/index.md
rename to content/en/js2/sprints/3/day-plan/index.md
diff --git a/content/js2/sprints/3/prep/index.md b/content/en/js2/sprints/3/prep/index.md
similarity index 100%
rename from content/js2/sprints/3/prep/index.md
rename to content/en/js2/sprints/3/prep/index.md
diff --git a/content/js2/sprints/3/success/index.md b/content/en/js2/sprints/3/success/index.md
similarity index 100%
rename from content/js2/sprints/3/success/index.md
rename to content/en/js2/sprints/3/success/index.md
diff --git a/content/js2/sprints/4/_index.md b/content/en/js2/sprints/4/_index.md
similarity index 100%
rename from content/js2/sprints/4/_index.md
rename to content/en/js2/sprints/4/_index.md
diff --git a/content/js2/sprints/4/backlog/index.md b/content/en/js2/sprints/4/backlog/index.md
similarity index 100%
rename from content/js2/sprints/4/backlog/index.md
rename to content/en/js2/sprints/4/backlog/index.md
diff --git a/content/js2/sprints/4/day-plan/index.md b/content/en/js2/sprints/4/day-plan/index.md
similarity index 100%
rename from content/js2/sprints/4/day-plan/index.md
rename to content/en/js2/sprints/4/day-plan/index.md
diff --git a/content/js2/sprints/4/prep/index.md b/content/en/js2/sprints/4/prep/index.md
similarity index 100%
rename from content/js2/sprints/4/prep/index.md
rename to content/en/js2/sprints/4/prep/index.md
diff --git a/content/js2/sprints/4/success/index.md b/content/en/js2/sprints/4/success/index.md
similarity index 100%
rename from content/js2/sprints/4/success/index.md
rename to content/en/js2/sprints/4/success/index.md
diff --git a/content/en/js2/success/index.md b/content/en/js2/success/index.md
new file mode 100644
index 000000000..54648a4d6
--- /dev/null
+++ b/content/en/js2/success/index.md
@@ -0,0 +1,17 @@
++++
+title = 'success'
+description = 'How do we know if we have completed this module?'
+layout = 'success'
+emoji= 'πŸ“'
+menu_level = ['module']
+weight = 11
+backlog= 'Module-JS2'
+[[objectives]]
+1="Every trainee has received and responded to at least one code review"
+2="Every trainee has opened at least 3 PRs to the module repo"
+3="70% of cohort is at or beyond milestones"
++++
+
+Every module, you must review your progress to understand if your cohort can progress to the next stage. The conditions for success are listed below. If your cohort has met all of these conditions, you can progress to the next module. If you have not met them yet, what actions will you take to meet them?
+
+Discuss your plan in your class channel.
diff --git a/content/en/js3/_index.md b/content/en/js3/_index.md
new file mode 100644
index 000000000..1029eb48b
--- /dev/null
+++ b/content/en/js3/_index.md
@@ -0,0 +1,8 @@
++++
+title = 'JS3'
+description = 'Collaborate with code; Update state with user interaction; React to state changes; Architect a web application; Recognise patterns'
+layout = 'module'
+emoji= 'πŸ₯'
+menu = ['syllabus']
+weight='5'
++++
diff --git a/content/en/js3/blocks/break-down/index.md b/content/en/js3/blocks/break-down/index.md
new file mode 100644
index 000000000..be937dd56
--- /dev/null
+++ b/content/en/js3/blocks/break-down/index.md
@@ -0,0 +1,55 @@
++++
+title = '🧩 Break down the problem'
+headless = true
+time = "15"
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Identify and sequence sub tasks'
++++
+
+Let's think through building this film search interface step-by-step. Write down your sequence of steps to build this interface.
+
+> _Given_ a view of film cards and search box
+> _When_ a user types in the search box
+> _Then_ the view should update to show only matching films
+
+{{<tabs name="Decomposition">}}
+{{<tab name="Draw your plan">}}
+
+```mermaid
+graph LR
+A[Render UI] --> B[User types]
+B --> C[Capture event]
+C --> D[Filter data]
+D --> E[Update state]
+E --> A
+```
+
+{{</tab>}}
+{{<tab name="Write your plan">}}
+
+1. πŸ” Display search box and initial list of films
+1. 🦻🏽 Listen for user typing in search box
+1. 🎞️ Capture latest string when user types
+1. 🎬 Filter films list based on search text
+1. πŸ“Ί Update UI with filtered list
+
+{{</tab>}}
+{{</tabs>}}
+
+The key aspects we need to handle are capturing input and updating UI.
+
+### πŸ‘‚πŸΏ Capturing Input
+
+We need to listen for the `input` event on the search box to react as the user types. When the event fires, we can read the updated string value from the search box input element.
+
+### 🎬 Filtering Data
+
+Once we have the latest search text, we can filter the list of films to only those whose titles contain the current search string. We can use JavaScript array methods like .filter() to return the matching films.
+
+## Updating UI
+
+With the latest filtered list of films in hand, we re-render these films to display the updated search results. We can clear the current film list and map over the filtered films to add updated DOM elements.
+
+Thinking through these aspects separately helps frame the overall task. Next we can focus on each piece - listening for input, filtering data, and re-rendering UI with the films example.
diff --git a/content/en/js3/blocks/capturing-events/index.md b/content/en/js3/blocks/capturing-events/index.md
new file mode 100644
index 000000000..32f181687
--- /dev/null
+++ b/content/en/js3/blocks/capturing-events/index.md
@@ -0,0 +1,31 @@
++++
+title = '🦻🏻 Capturing the user event'
+headless = true
+time = 15
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Add an event listener to a user input'
++++
+
+To listen for the search input event, we can add an {{<tooltip title="event listener">}} An event listener waits for a specific **event** to occur. It runs in response to things like clicks, and key presses. We register listeners with <code>addEventListener</code> by passing the event name and a handling function. {{</tooltip>}}
+
+```js
+const searchBox = document.getElementById("search");
+
+searchBox.addEventListener("input", handleInput);
+
+function handleInput(event) {
+  // React to input event
+}
+```
+
+When the "input" event fires, our handler function will run. Inside the handler we can access the updated input value: `const searchTerm = event.target.value;`
+
+So our key steps are:
+
+1. Add input event listener to search box
+2. In handler, get `value` of input element
+3. Pass search term to filter and update UI
+
+This allows us to capture search text on every keystroke. But what happens inside the handler function? Let's explore creating a new state of the application.
diff --git a/content/en/js3/blocks/components/index.md b/content/en/js3/blocks/components/index.md
new file mode 100644
index 000000000..534a32762
--- /dev/null
+++ b/content/en/js3/blocks/components/index.md
@@ -0,0 +1,90 @@
++++
+title = 'πŸƒ Building a component'
+headless = true
+time = 30
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Implement components for a user interface'
++++
+
+Recall our sub-goal:
+
+> 🎯 Sub-goal: Build a film card component
+
+We can compose DOM elements to form a card, by creating a `section` element and adding an `h3` element inside it for the title and adding a `p` element for the director. It would take a long time, but we could create each element individually and add them to the DOM.
+
+But we can render _any_ film object in the user interface with a general component. To do this, we wrap up our code inside a JavaScript function. JavaScript functions **reuse code**: so we can implement **reusable UI components** using functions.
+
+But we can go further. We can define a `<template>` card and pair it with a card `function()`. Look at our code so far:
+
+```js
+const film = {
+  title: "Killing of Flower Moon",
+  director: "Martin Scorsese",
+  times: ["15:35"],
+  certificate: "15",
+  duration: 112,
+};
+
+const filmTitle = document.createElement("h3");
+filmTitle.textContent = film.title;
+
+document.body.append(filmTitle);
+```
+
+We can wrap up some of this code to create our reusable film card component. We can move some of this code into a template and store it in our html. Let's make our template first.
+
+```html
+<template id="film-card">
+  <section>
+    <h3></h3>
+  </section>
+</template>
+```
+
+This is our template card. Place it in the body of your html. It doesn't show up! [Template HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template) is like a wireframe; it's just a _plan_. We can use this template to create a card for any film object. We will clone (copy) this template and populate it with data.
+
+Any HTML we add to this template will be available to all cards we create with JavaScript.
+
+```js
+const film = {
+  title: "Killing of Flower Moon",
+  director: "Martin Scorsese",
+  times: ["15:35"],
+  certificate: "15",
+  duration: 112,
+};
+
+const createFilmCard = (template, film) => {
+  const card = template.content.cloneNode(true);
+  // now we are querying our cloned fragment, not the entire page
+  const title = card.querySelector("h3");
+  // populate the card with data
+  title.textContent = film.title;
+  return card;
+};
+const template = document.getElementById("filmCard");
+const filmCard = createFilmCard(template, film);
+
+// remember we need to append the card to the DOM for it to appear
+document.body.append(filmCard);
+```
+
+{{<tabs>}}
+
+{{<tab name="πŸ”§ Implement">}}
+
+Update the implementation of `createFilmCard` so it renders other film properties. Other film properties on this object are `director`, `times`, `certificate` and `duration`.
+
+You will need to add more elements to the template to display these properties.
+
+{{</tab>}}
+
+{{<tab name="🧹 Refactor">}}
+
+Refactor the `createFilmCard` function to use object destructuring in the parameters.
+
+{{</tab>}}
+
+{{</tabs>}}
diff --git a/content/en/js3/blocks/composing-elements/index.md b/content/en/js3/blocks/composing-elements/index.md
new file mode 100644
index 000000000..95ab84347
--- /dev/null
+++ b/content/en/js3/blocks/composing-elements/index.md
@@ -0,0 +1,82 @@
++++
+title = '🧱 Composing elements'
+headless = true
+time = 20
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Compose UI elements to some specification'
+    2='Append DOM elements to other nodes in the DOM tree'
++++
+
+We can start by calling `createElement` to create and {{<tooltip title="compose DOM elements">}}To **compose DOM elements** means to **combine DOM elements** to form some part of the user interface.{{</tooltip>}}.
+
+{{<tabs name="Rendering from data">}}
+{{<tab name="JavaScript">}}
+For now, we'll only consider rendering the `title` property from the `film` object. Create this script in your index.html:
+
+```js
+const film = {
+  title: "Killing of Flower Moon",
+  director: "Martin Scorsese",
+  times: ["15:35"],
+  certificate: "15",
+  duration: 112,
+};
+
+const filmTitle = document.createElement("h3");
+filmTitle.textContent = film.title;
+console.log(filmTitle);
+```
+
+If we open up the console tab, we should be able to see this element logged in the console. However, it won't yet appear in the browser.
+
+{{<note type="tip" title="Uncaught ReferenceError: document is not defined">}} If you see this error, make sure you are running your code in the browser and not VSCode. Node doesn't have the DOM API. You need to use your browser console. See [how to set up your html](#rendering-from-data-1) if you are stuck.{{</note>}}
+
+{{</tab>}}
+{{<tab name="HTML">}}
+
+```html
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <title>Film View</title>
+  </head>
+  <body>
+    <script>
+      const film = {
+        title: "Killing of Flower Moon",
+        director: "Martin Scorsese",
+        times: ["15:35"],
+        certificate: "15",
+        duration: 112,
+      };
+      const filmTitle = document.createElement("h3");
+      filmTitle.textContent = film.title;
+      console.log(filmTitle);
+    </script>
+  </body>
+</html>
+```
+
+{{</tab>}}
+{{</tabs>}}
+
+### Appending elements
+
+To display the film card, we need to append it to another element that is already in the DOM tree. For now let's append it to the body, because that always exists.
+
+```js {linenos=table,hl_lines=["12"],linenostart=1}
+const film = {
+  title: "Killing of Flower Moon",
+  director: "Martin Scorsese",
+  times: ["15:35"],
+  certificate: "15",
+  duration: 112,
+};
+
+const filmTitle = document.createElement("h3");
+filmTitle.textContent = film.title;
+
+document.body.append(filmTitle);
+```
diff --git a/content/js3/blocks/data-ui/index.md b/content/en/js3/blocks/data-ui/index.md
similarity index 100%
rename from content/js3/blocks/data-ui/index.md
rename to content/en/js3/blocks/data-ui/index.md
diff --git a/content/js3/blocks/now-showing/film-cards.png b/content/en/js3/blocks/now-showing/film-cards.png
similarity index 100%
rename from content/js3/blocks/now-showing/film-cards.png
rename to content/en/js3/blocks/now-showing/film-cards.png
diff --git a/content/js3/blocks/now-showing/index.md b/content/en/js3/blocks/now-showing/index.md
similarity index 50%
rename from content/js3/blocks/now-showing/index.md
rename to content/en/js3/blocks/now-showing/index.md
index 9d6c2ed40..af3fcb918 100644
--- a/content/js3/blocks/now-showing/index.md
+++ b/content/en/js3/blocks/now-showing/index.md
@@ -15,13 +15,13 @@ Suppose you're building a user interface to display the films that are now showi
 > _When_ the page first loads
 > _Then_ it should display the list of films now showing, including the film title, times and film certificate
 
-We can use a {{<tooltip title="wireframe">}}A wireframe is a basic outline of a web page used for design purposes{{</tooltip>}}to visualise how the user interface should look:
+{{<tabs name="wireframe and data structure">}}
+{{<tab name="Wireframe">}}
+![film-cards](film-cards.png "A grid of cards displaying film information")
+{{</tab>}}
 
-### Cinema listings wireframe πŸ–ΌοΈ
-
-![film-cards](film-cards.png)
-
-The wireframe is built by reusing the same{{<tooltip title="UI component">}}A **UI component** is a reusable, self-contained piece of the UI. UI components are like lego blocks you can use to build websites. Most websites are made by "composing" components in this way.{{</tooltip>}}. In particular, each film object is rendered as a card component. To build this user interface, we will start with data in the form of an array of objects, each with similar properties. Here are some example film data:
+{{<tab name="Data">}}
+Here are some example film data:
 
 ```js
 const films = [
@@ -30,19 +30,21 @@ const films = [
     director: "Martin Scorsese",
     times: ["15:35"],
     certificate: "15",
-    duration: 112
+    duration: 112,
   },
   {
     title: "Typist Artist Pirate King",
     directory: "Carol Morley",
     times: ["15:00", "20:00"],
     certificate: "12A",
-    duration: 108
+    duration: 108,
   },
-  .
-  .
-  .
 ];
 ```
 
-Our task will be to build the film listings view from this list of data.
+{{</tab>}}
+{{</tabs>}}
+
+To visualise the user interface, we can use a {{<tooltip title="wireframe">}}A wireframe is a basic outline of a web page used for design purposes{{</tooltip>}}. The wireframe is built by reusing the same{{<tooltip title="UI component">}}A **UI component** is a reusable, self-contained piece of the UI. UI components are like lego blocks you can use to build websites. Most websites are made by "composing" components in this way.{{</tooltip>}}. Each film object is rendered as a card component. To build this user interface, we will start with data in the form of an array of objects, each with similar properties.
+
+Our task will be to build the film listings view from this list of data. Create an index.html file and follow along.
diff --git a/content/js3/blocks/one-to-one/index.md b/content/en/js3/blocks/one-to-one/index.md
similarity index 77%
rename from content/js3/blocks/one-to-one/index.md
rename to content/en/js3/blocks/one-to-one/index.md
index 74dce2c94..b8d59f926 100644
--- a/content/js3/blocks/one-to-one/index.md
+++ b/content/en/js3/blocks/one-to-one/index.md
@@ -22,29 +22,12 @@ flowchart LR
 To create an array of card components, we can iterate through the film data using a `for...of` loop:
 
 ```js
-const films = [
-  {
-    title: "Killing of Flower Moon",
-    director: "Martin Scorsese",
-    times: ["15:35"],
-    certificate: "15",
-    duration: 112,
-  },
-  {
-    title: "Typist Artist Pirate King",
-    directory: "Carol Morley",
-    times: ["15:00", "20:00"],
-    certificate: "12A",
-    duration: 108,
-  },
-];
-
 const filmCards = [];
 for (const item of films) {
   filmCards.push(createFilmCard(item));
 }
 
-document.querySelector("ul").append(...elements);
+document.body.append(...filmCards);
 // invoke append using the spread operator
 ```
 
diff --git a/content/en/js3/blocks/re-rendering-ui/index.md b/content/en/js3/blocks/re-rendering-ui/index.md
new file mode 100644
index 000000000..20d7c7726
--- /dev/null
+++ b/content/en/js3/blocks/re-rendering-ui/index.md
@@ -0,0 +1,114 @@
++++
+title = 'πŸͺž Re-rendering the UI'
+headless = true
+time = 45
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Trace the flow of data from user input to updated UI'
++++
+
+With state updated from user input, we can re-render:
+
+```js
+const render = (films) => {
+  // Clear existing DOM elements
+  // Map films to DOM elements
+};
+
+function handleInput(event) {
+  // capture search term
+  const { searchTerm } = event.target;
+  // Filter films on search term
+  filteredFilms = films.filter((film) => film.title.includes(searchTerm));
+  // Set new state
+  state.films = filteredFilms;
+  // Re-render UI with updated films
+  render(state.films);
+}
+```
+
+{{<note type="tip" title="Things to consider">}}
+Users don't always type perfectly. How will you match their typing to the film titles? What if they type in all caps? What is the simplest thing that could possibly work?
+{{</note>}}
+
+To re-render the UI, we need to update the DOM elements to match the latest state. We can do this by:
+
+1. Clearing existing DOM elements
+2. Mapping updated films data to new DOM elements
+3. Appending new elements to DOM
+
+This is how we update the user interface in response to updated application state! We declare that our UI is a function of the state.
+
+> 🧠 Our UI is a function of the state
+
+Recalling our card function, let's see how we can update the UI with the latest films data.
+
+{{<tabs name="Updating the DOM">}}
+
+{{<tab name="Render">}}
+
+```js
+const render = (container, list) => {
+  container.textContent = ""; // clear the view
+  const cards = list.map((film) => createCard(template, film));
+  container.append(...cards);
+};
+```
+
+{{</tab>}}
+
+{{<tab name="Card">}}
+
+```js
+const createCard = (template, { title, director }) => {
+  const card = template.content.cloneNode(true);
+
+  card.querySelector("h3").textContent = title;
+  card.querySelector("dd").textContent = director;
+
+  return card;
+};
+```
+
+{{</tab>}}
+{{<tab name="Template">}}
+
+```html
+<template id="filmCardTemplate">
+  <section class="film-card">
+    <h3></h3>
+    <dl>
+      <dt>Director</dt>
+      <dd></dd>
+    </dl>
+  </section>
+</template>
+```
+
+{{</tab>}}
+
+{{<tab name="Data">}}
+
+```js
+const films = [
+  {
+    title: "The Matrix",
+    director: "Lana Wachowski",
+    certificate: "15",
+  },
+  {
+    title: "Inception",
+    director: "Christopher Nolan",
+    certificate: "12A",
+  },
+];
+```
+
+{{</tab>}}
+{{<tab name="Compiled">}}
+
+<iframe src="../../../../filterFilms.html" width="100%" height="480px"></iframe>
+{{</tab>}}
+
+{{</tabs>}}
diff --git a/content/en/js3/blocks/reacting/index.md b/content/en/js3/blocks/reacting/index.md
new file mode 100644
index 000000000..155abff18
--- /dev/null
+++ b/content/en/js3/blocks/reacting/index.md
@@ -0,0 +1,19 @@
++++
+title = 'πŸͺ„ Reacting to user input'
+headless = true
+time = 5
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1='Explain how Javascript can react to user input from a search input'
++++
+
+As users interact with web applications, they trigger events like clicking buttons, submitting forms, or typing text that we need to respond to. Let's explore a common example: searching.
+
+```html
+<label>
+  <input type="search" id="q" name="q" placeholder="Search term" /> πŸ”
+</label>
+```
+
+When a user types text into a search box, we want to capture their input and use it to filter and redisplay search results. This means the **state** of the application changes as the user types. We need to **react** to this change by updating the UI.
diff --git a/content/js3/blocks/single-datum/index.md b/content/en/js3/blocks/single-datum/index.md
similarity index 78%
rename from content/js3/blocks/single-datum/index.md
rename to content/en/js3/blocks/single-datum/index.md
index 6babecf9c..c03b5e8cb 100644
--- a/content/js3/blocks/single-datum/index.md
+++ b/content/en/js3/blocks/single-datum/index.md
@@ -24,4 +24,9 @@ const film = {
 
 Starting with this object, we'll focus _only_ on building this section of the user interface:
 
-![single-film-display](single-film-display.png)
+<details>
+<summary> πŸ–ΌοΈ Open this wireframe of single film card</summary>
+
+![single-film-display](single-film-display.png "A single film card")
+
+</details>
diff --git a/content/js3/blocks/single-datum/single-film-display.png b/content/en/js3/blocks/single-datum/single-film-display.png
similarity index 100%
rename from content/js3/blocks/single-datum/single-film-display.png
rename to content/en/js3/blocks/single-datum/single-film-display.png
diff --git a/content/en/js3/blocks/updating-state/index.md b/content/en/js3/blocks/updating-state/index.md
new file mode 100644
index 000000000..bc18b5b7b
--- /dev/null
+++ b/content/en/js3/blocks/updating-state/index.md
@@ -0,0 +1,66 @@
++++
+title = '🚦 Updating the state'
+headless = true
+time = 30
+facilitation = false
+emoji= '🧩'
+[objectives]
+    1=''
++++
+
+How can we filter our film data and update the state? First we need a {{<tooltip title="state">}} State means the state of the data that drives an application's logic and UI. State changes over time in response to interactions with our data. Our UI reacts to changes in state. {{</tooltip>}} . We need to keep track of the current state of our application, so we can tell our UI just to show "whatever is in the state". In this way, we simplify our UI code by making it a function of the state.
+
+> πŸͺž When the state changes, the UI changes.
+
+So let's create a state object to hold our film data:
+
+```js
+let state = {
+  films: [],
+};
+```
+
+Now we need a way to change the state of our data.
+
+### πŸ“₯ Input action output πŸ“€
+
+```mermaid
+graph LR
+A[Initial array] --> B[filter] --> C[Filtered array]
+```
+
+We will also need a list of all our films and a filtered list of films based on search term:
+
+```js
+let films = []; // Initial empty film list
+let filteredFilms = []; // Updated based on search
+```
+
+### Filter function
+
+To filter we can use the higher order function .filter() to return a new array of films that include the search term:
+
+```js
+filteredFilms = films.filter((film) => film.title.includes(searchTerm));
+```
+
+Those are all the pieces we need to keep track of our film data. Now we can update the state when the user types in the search box.
+
+```js
+function handleInput(event) {
+  // capture search term
+  const { searchTerm } = event.target;
+  // Filter films on search term
+  filteredFilms = films.filter((film) => film.title.includes(searchTerm));
+
+  // Set state
+  state.films = filteredFilms;
+}
+```
+
+Here when search term changes:
+
+1. We filter original list of films
+2. Save filtered films to state
+
+State contains our app data. Keeping it updated lets us re-render UI from latest data. So that's the next step - re-rendering the UI.
diff --git a/content/js3/blocks/using-map/index.md b/content/en/js3/blocks/using-map/index.md
similarity index 74%
rename from content/js3/blocks/using-map/index.md
rename to content/en/js3/blocks/using-map/index.md
index a216b6a7c..2e2d6573e 100644
--- a/content/js3/blocks/using-map/index.md
+++ b/content/en/js3/blocks/using-map/index.md
@@ -8,7 +8,7 @@ emoji= '🧩'
     1='Describe how map works'
 +++
 
-For every item in a starting array, we want to apply a function to each element in the starting array to create a new array. Earlier, we used a `for...of` statement to apply the function `createFilmCard` to each element in the array. However, we can also build an array like this using [the `map` array method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map). `map` is a {{<tooltip title="higher order function">}} A **higher-order function** is a function that takes another function as an argument or returns a new function{{</tooltip>}}. In this case, it means we pass a function as an argument to `map`. Then `map` will use this function to create a new array.
+We want to create a new array by applying a function to each element in the starting array. Earlier, we used a `for...of` statement to apply the function `createFilmCard` to each element in the array. However, we can also build an array using [the `map` array method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map). `map` is a {{<tooltip title="higher order function">}} A **higher-order function** is a function that takes another function as an argument or returns a new function{{</tooltip>}}. In this case, it means we pass a function as an argument to `map`. Then `map` will use this function to create a new array.
 
 Let's work through an example:
 
@@ -32,27 +32,30 @@ flowchart LR
    E[30] == double(30) ==> F[60]
 ```
 
-We are building a new array by applying each item to `double`. Each time we call `double` we store its return value in a new array:
+We are building a new array by applying `double` to each item. Each time we call `double` we store its return value in a new array:
 
 ```js
 function double(num) {
   return num * 2;
 }
 
-const arr = [5, 20, 30];
-const doubledNums = [double(5), double(20), double(30)];
+const numbers = [5, 20, 30];
+const doubledNums = [
+  double(numbers[0]),
+  double(numbers[1]),
+  double(numbers[2]),
+];
 ```
 
-But we want to generalise this. Whenever we are writing out the same thing repeatedly in code, we probably want to make a general rule instead.
-We can do this by calling `map`:
+But we want to generalise this. Whenever we are writing out the same thing repeatedly in code, we probably want to make a general rule instead. We can do this by calling `map`:
 
 ```js {linenos=table,hl_lines=["6"], linenostart=1}
 function double(num) {
   return num * 2;
 }
 
-const arr = [5, 20, 30];
-const doubledNums = arr.map(double);
+const numbers = [5, 20, 30];
+const doubledNums = numbers.map(double);
 ```
 
 {{<tabs name="Explore map">}}
diff --git a/content/en/js3/prep/index.md b/content/en/js3/prep/index.md
new file mode 100644
index 000000000..000cf34c5
--- /dev/null
+++ b/content/en/js3/prep/index.md
@@ -0,0 +1,16 @@
++++
+title = 'prep'
+description = 'What to do before the module starts'
+layout = 'prep'
+emoji= 'πŸ“'
+menu_level = ['module']
+weight = 1
+backlog= 'Module-JS3'
+[[blocks]]
+name="Technical Writing 101"
+src="https://github.com/CodeYourFuture/Module-JS3/issues/243"
++++
+
+In JS3, you will spend a lot of time working on code written by other people. Other people will be working on your code. This means you will need to practice your technical communication skills.
+
+This coursework is set as stretch, so it's not mandatory; we just think it's a really good idea.
diff --git a/content/js3/product/_index.md b/content/en/js3/product/_index.md
similarity index 100%
rename from content/js3/product/_index.md
rename to content/en/js3/product/_index.md
diff --git a/content/js3/product/build/index.md b/content/en/js3/product/build/index.md
similarity index 100%
rename from content/js3/product/build/index.md
rename to content/en/js3/product/build/index.md
diff --git a/content/js3/product/plan/index.md b/content/en/js3/product/plan/index.md
similarity index 100%
rename from content/js3/product/plan/index.md
rename to content/en/js3/product/plan/index.md
diff --git a/content/js3/product/ship/index.md b/content/en/js3/product/ship/index.md
similarity index 100%
rename from content/js3/product/ship/index.md
rename to content/en/js3/product/ship/index.md
diff --git a/content/js3/product/test/index.md b/content/en/js3/product/test/index.md
similarity index 100%
rename from content/js3/product/test/index.md
rename to content/en/js3/product/test/index.md
diff --git a/content/js3/sprints/1/_index.md b/content/en/js3/sprints/1/_index.md
similarity index 100%
rename from content/js3/sprints/1/_index.md
rename to content/en/js3/sprints/1/_index.md
diff --git a/content/js3/sprints/1/backlog/index.md b/content/en/js3/sprints/1/backlog/index.md
similarity index 100%
rename from content/js3/sprints/1/backlog/index.md
rename to content/en/js3/sprints/1/backlog/index.md
diff --git a/content/js3/sprints/1/day-plan/index.md b/content/en/js3/sprints/1/day-plan/index.md
similarity index 100%
rename from content/js3/sprints/1/day-plan/index.md
rename to content/en/js3/sprints/1/day-plan/index.md
diff --git a/content/js3/sprints/1/prep/index.md b/content/en/js3/sprints/1/prep/index.md
similarity index 100%
rename from content/js3/sprints/1/prep/index.md
rename to content/en/js3/sprints/1/prep/index.md
diff --git a/content/js3/sprints/1/success/index.md b/content/en/js3/sprints/1/success/index.md
similarity index 100%
rename from content/js3/sprints/1/success/index.md
rename to content/en/js3/sprints/1/success/index.md
diff --git a/content/js3/sprints/2/_index.md b/content/en/js3/sprints/2/_index.md
similarity index 100%
rename from content/js3/sprints/2/_index.md
rename to content/en/js3/sprints/2/_index.md
diff --git a/content/js3/sprints/2/backlog/index.md b/content/en/js3/sprints/2/backlog/index.md
similarity index 100%
rename from content/js3/sprints/2/backlog/index.md
rename to content/en/js3/sprints/2/backlog/index.md
diff --git a/content/js3/sprints/2/day-plan/index.md b/content/en/js3/sprints/2/day-plan/index.md
similarity index 100%
rename from content/js3/sprints/2/day-plan/index.md
rename to content/en/js3/sprints/2/day-plan/index.md
diff --git a/content/en/js3/sprints/2/prep/index.md b/content/en/js3/sprints/2/prep/index.md
new file mode 100644
index 000000000..b0f5630a6
--- /dev/null
+++ b/content/en/js3/sprints/2/prep/index.md
@@ -0,0 +1,28 @@
++++
+title = 'Prep'
+layout = 'prep'
+description= 'Take a template and populate it with data; then update the data in response to user interaction'
+emoji= 'πŸ“'
+menu_level = ['sprint']
+weight = 1
+backlog= 'Module-JS3'
+backlog_filter= 'Week 2'
+[[blocks]]
+name="Reacting"
+src="js3/blocks/reacting"
+[[blocks]]
+name="Decomposition"
+src="js3/blocks/break-down"
+[[blocks]]
+name="Capturing events"
+src="js3/blocks/capturing-events"
+[[blocks]]
+name="Updating state"
+src="js3/blocks/updating-state"
+[[blocks]]
+name="Rendering"
+src="js3/blocks/re-rendering-ui"
+[[blocks]]
+name= "Gathering requirements"
+src="https://cyf-pd.netlify.app/blocks/gathering-requirements-prep/readme/"
++++
diff --git a/content/js3/sprints/2/success/index.md b/content/en/js3/sprints/2/success/index.md
similarity index 100%
rename from content/js3/sprints/2/success/index.md
rename to content/en/js3/sprints/2/success/index.md
diff --git a/content/js3/sprints/3/_index.md b/content/en/js3/sprints/3/_index.md
similarity index 100%
rename from content/js3/sprints/3/_index.md
rename to content/en/js3/sprints/3/_index.md
diff --git a/content/js3/sprints/3/backlog/index.md b/content/en/js3/sprints/3/backlog/index.md
similarity index 100%
rename from content/js3/sprints/3/backlog/index.md
rename to content/en/js3/sprints/3/backlog/index.md
diff --git a/content/en/js3/sprints/3/day-plan/index.md b/content/en/js3/sprints/3/day-plan/index.md
new file mode 100644
index 000000000..f7c54e0c1
--- /dev/null
+++ b/content/en/js3/sprints/3/day-plan/index.md
@@ -0,0 +1,52 @@
++++
+title = 'day-plan'
+layout = 'day-plan'
+emoji= 'πŸ“'
+menu_level = ['sprint']
+weight = 3
+backlog= 'Module-JS3'
+backlog_filter= 'Week 3'
+[[blocks]]
+name="Energiser"
+src="blocks/energiser"
+time=10
+[[blocks]]
+name= "Teamwork Project"
+src="https://cyf-pd.netlify.app/blocks/teamwork-project-s3"
+[[blocks]]
+src="blocks/morning-break"
+name="Morning break"
+[[blocks]]
+name="Study Group"
+src="blocks/study-group"
+time=60
+[[blocks]]
+name="Code Review"
+src="https://github.com/CodeYourFuture/Module-JS3/pulls"
+time="0"
+[[blocks]]
+name="Lunch"
+src="blocks/lunch"
+[[blocks]]
+name="Break down"
+src="https://github.com/CodeYourFuture/CYF-Workshops/tree/main/debugging"
+time=45
+[[blocks]]
+name="TV Show Project"
+src="blocks/study-group"
+time=60
+[[blocks]]
+name="Afternoon break"
+src="blocks/afternoon-break"
+[[blocks]]
+name="TV Show Project"
+src="blocks/study-group"
+time=60
+[[blocks]]
+name="Code Review"
+src="https://github.com/CodeYourFuture/Module-JS3/pulls"
+time="0"
+[[blocks]]
+name="Retrospective"
+src="blocks/retro"
++++
diff --git a/content/js3/sprints/3/prep/index.md b/content/en/js3/sprints/3/prep/index.md
similarity index 87%
rename from content/js3/sprints/3/prep/index.md
rename to content/en/js3/sprints/3/prep/index.md
index 1ff904e72..d3f1125af 100644
--- a/content/js3/sprints/3/prep/index.md
+++ b/content/en/js3/sprints/3/prep/index.md
@@ -6,9 +6,8 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-JS3'
 backlog_filter= 'Week 3'
+
 [[blocks]]
-name="Produt MVP and features"
+name="Product MVP and features"
 src="https://cyf-pd.netlify.app/blocks/define-your-products-mvp/readme/"
 +++
-
-
diff --git a/content/js3/sprints/3/success/index.md b/content/en/js3/sprints/3/success/index.md
similarity index 100%
rename from content/js3/sprints/3/success/index.md
rename to content/en/js3/sprints/3/success/index.md
diff --git a/content/js3/sprints/4/_index.md b/content/en/js3/sprints/4/_index.md
similarity index 100%
rename from content/js3/sprints/4/_index.md
rename to content/en/js3/sprints/4/_index.md
diff --git a/content/js3/sprints/4/backlog/index.md b/content/en/js3/sprints/4/backlog/index.md
similarity index 100%
rename from content/js3/sprints/4/backlog/index.md
rename to content/en/js3/sprints/4/backlog/index.md
diff --git a/content/js3/sprints/4/day-plan/index.md b/content/en/js3/sprints/4/day-plan/index.md
similarity index 100%
rename from content/js3/sprints/4/day-plan/index.md
rename to content/en/js3/sprints/4/day-plan/index.md
diff --git a/content/js3/sprints/4/prep/index.md b/content/en/js3/sprints/4/prep/index.md
similarity index 100%
rename from content/js3/sprints/4/prep/index.md
rename to content/en/js3/sprints/4/prep/index.md
diff --git a/content/js3/sprints/4/success/index.md b/content/en/js3/sprints/4/success/index.md
similarity index 100%
rename from content/js3/sprints/4/success/index.md
rename to content/en/js3/sprints/4/success/index.md
diff --git a/content/en/js3/success/index.md b/content/en/js3/success/index.md
new file mode 100644
index 000000000..c41192cda
--- /dev/null
+++ b/content/en/js3/success/index.md
@@ -0,0 +1,17 @@
++++
+title = "Success"
+description = "How do we know if we have completed this module?"
+layout = "success"
+emoji= "πŸ“"
+menu_level = [ "module" ]
+weight = 11
+backlog= "Module-JS3"
+[[objectives]]
+1= "Every trainee has received and responded to at least one code review"
+2= "Every trainee has opened at least 3 PRs to the module repo"
+3= "70% of cohort is at or beyond milestones"
++++
+
+Every module, you must review your progress to understand if your cohort can progress to the next stage. The conditions for success are listed below. If your cohort has met all of these conditions, you can progress to the next module. If you have not met them yet, what actions will you take to meet them?
+
+Discuss your plan in your class channel.
diff --git a/content/node/_index.md b/content/en/node/_index.md
similarity index 100%
rename from content/node/_index.md
rename to content/en/node/_index.md
diff --git a/content/node/blocks/block1/index.md b/content/en/node/blocks/block1/index.md
similarity index 100%
rename from content/node/blocks/block1/index.md
rename to content/en/node/blocks/block1/index.md
diff --git a/content/node/blocks/block2/index.md b/content/en/node/blocks/block2/index.md
similarity index 100%
rename from content/node/blocks/block2/index.md
rename to content/en/node/blocks/block2/index.md
diff --git a/content/node/blocks/block3/index.md b/content/en/node/blocks/block3/index.md
similarity index 100%
rename from content/node/blocks/block3/index.md
rename to content/en/node/blocks/block3/index.md
diff --git a/content/node/prep/index.md b/content/en/node/prep/index.md
similarity index 100%
rename from content/node/prep/index.md
rename to content/en/node/prep/index.md
diff --git a/content/node/product/_index.md b/content/en/node/product/_index.md
similarity index 100%
rename from content/node/product/_index.md
rename to content/en/node/product/_index.md
diff --git a/content/node/product/build/index.md b/content/en/node/product/build/index.md
similarity index 100%
rename from content/node/product/build/index.md
rename to content/en/node/product/build/index.md
diff --git a/content/node/product/plan/index.md b/content/en/node/product/plan/index.md
similarity index 100%
rename from content/node/product/plan/index.md
rename to content/en/node/product/plan/index.md
diff --git a/content/node/product/ship/index.md b/content/en/node/product/ship/index.md
similarity index 100%
rename from content/node/product/ship/index.md
rename to content/en/node/product/ship/index.md
diff --git a/content/node/product/test/index.md b/content/en/node/product/test/index.md
similarity index 100%
rename from content/node/product/test/index.md
rename to content/en/node/product/test/index.md
diff --git a/content/node/sprints/1/_index.md b/content/en/node/sprints/1/_index.md
similarity index 100%
rename from content/node/sprints/1/_index.md
rename to content/en/node/sprints/1/_index.md
diff --git a/content/node/sprints/1/backlog/index.md b/content/en/node/sprints/1/backlog/index.md
similarity index 100%
rename from content/node/sprints/1/backlog/index.md
rename to content/en/node/sprints/1/backlog/index.md
diff --git a/content/node/sprints/1/day-plan/index.md b/content/en/node/sprints/1/day-plan/index.md
similarity index 55%
rename from content/node/sprints/1/day-plan/index.md
rename to content/en/node/sprints/1/day-plan/index.md
index e48b95737..aae81f706 100644
--- a/content/node/sprints/1/day-plan/index.md
+++ b/content/en/node/sprints/1/day-plan/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 3
 backlog= 'Module-Node'
 backlog_filter= 'Week 1'
+[[blocks]]
+name="Non-Verbal Communication"
+src="https://cyf-pd.netlify.app/blocks/non-verbal-communication/readme/"
 +++
 
 
diff --git a/content/node/sprints/1/prep/index.md b/content/en/node/sprints/1/prep/index.md
similarity index 52%
rename from content/node/sprints/1/prep/index.md
rename to content/en/node/sprints/1/prep/index.md
index 6388f8e84..f2d994b47 100644
--- a/content/node/sprints/1/prep/index.md
+++ b/content/en/node/sprints/1/prep/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-Node'
 backlog_filter= 'Week 1'
+[[blocks]]
+name="Prep Non-Verbal Communication"
+src="https://cyf-pd.netlify.app/blocks/prep-non-verbal-communication/readme/"
 +++
 
 
diff --git a/content/node/sprints/1/success/index.md b/content/en/node/sprints/1/success/index.md
similarity index 100%
rename from content/node/sprints/1/success/index.md
rename to content/en/node/sprints/1/success/index.md
diff --git a/content/node/sprints/2/_index.md b/content/en/node/sprints/2/_index.md
similarity index 100%
rename from content/node/sprints/2/_index.md
rename to content/en/node/sprints/2/_index.md
diff --git a/content/node/sprints/2/backlog/index.md b/content/en/node/sprints/2/backlog/index.md
similarity index 100%
rename from content/node/sprints/2/backlog/index.md
rename to content/en/node/sprints/2/backlog/index.md
diff --git a/content/node/sprints/2/day-plan/index.md b/content/en/node/sprints/2/day-plan/index.md
similarity index 100%
rename from content/node/sprints/2/day-plan/index.md
rename to content/en/node/sprints/2/day-plan/index.md
diff --git a/content/node/sprints/2/prep/index.md b/content/en/node/sprints/2/prep/index.md
similarity index 100%
rename from content/node/sprints/2/prep/index.md
rename to content/en/node/sprints/2/prep/index.md
diff --git a/content/node/sprints/2/success/index.md b/content/en/node/sprints/2/success/index.md
similarity index 100%
rename from content/node/sprints/2/success/index.md
rename to content/en/node/sprints/2/success/index.md
diff --git a/content/node/sprints/3/_index.md b/content/en/node/sprints/3/_index.md
similarity index 100%
rename from content/node/sprints/3/_index.md
rename to content/en/node/sprints/3/_index.md
diff --git a/content/node/sprints/3/backlog/index.md b/content/en/node/sprints/3/backlog/index.md
similarity index 100%
rename from content/node/sprints/3/backlog/index.md
rename to content/en/node/sprints/3/backlog/index.md
diff --git a/content/node/sprints/3/day-plan/index.md b/content/en/node/sprints/3/day-plan/index.md
similarity index 100%
rename from content/node/sprints/3/day-plan/index.md
rename to content/en/node/sprints/3/day-plan/index.md
diff --git a/content/node/sprints/3/prep/index.md b/content/en/node/sprints/3/prep/index.md
similarity index 100%
rename from content/node/sprints/3/prep/index.md
rename to content/en/node/sprints/3/prep/index.md
diff --git a/content/node/sprints/3/success/index.md b/content/en/node/sprints/3/success/index.md
similarity index 100%
rename from content/node/sprints/3/success/index.md
rename to content/en/node/sprints/3/success/index.md
diff --git a/content/node/sprints/4/_index.md b/content/en/node/sprints/4/_index.md
similarity index 100%
rename from content/node/sprints/4/_index.md
rename to content/en/node/sprints/4/_index.md
diff --git a/content/node/sprints/4/backlog/index.md b/content/en/node/sprints/4/backlog/index.md
similarity index 100%
rename from content/node/sprints/4/backlog/index.md
rename to content/en/node/sprints/4/backlog/index.md
diff --git a/content/node/sprints/4/day-plan/index.md b/content/en/node/sprints/4/day-plan/index.md
similarity index 100%
rename from content/node/sprints/4/day-plan/index.md
rename to content/en/node/sprints/4/day-plan/index.md
diff --git a/content/node/sprints/4/prep/index.md b/content/en/node/sprints/4/prep/index.md
similarity index 57%
rename from content/node/sprints/4/prep/index.md
rename to content/en/node/sprints/4/prep/index.md
index a5b5cb557..5aa3b952d 100644
--- a/content/node/sprints/4/prep/index.md
+++ b/content/en/node/sprints/4/prep/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-Node'
 backlog_filter= 'Week 4'
+[[blocks]]
+name="Prep Sell Yourself"
+src="https://cyf-pd.netlify.app/blocks/prep-sell-yourself/readme/"
 +++
 
 
diff --git a/content/node/sprints/4/success/index.md b/content/en/node/sprints/4/success/index.md
similarity index 100%
rename from content/node/sprints/4/success/index.md
rename to content/en/node/sprints/4/success/index.md
diff --git a/content/en/node/success/index.md b/content/en/node/success/index.md
new file mode 100644
index 000000000..b5f52e8ae
--- /dev/null
+++ b/content/en/node/success/index.md
@@ -0,0 +1,17 @@
++++
+title = "Success"
+description = "How do we know if we have completed this module?"
+layout = "success"
+emoji= "πŸ“"
+menu_level = [ "module" ]
+weight = 11
+backlog= "Module-Node"
+[[objectives]]
+1= "Every trainee has received and responded to at least one code review"
+2= "Every trainee has opened at least 3 PRs to the module repo"
+3= "80% of cohort is at or beyond milestones"
++++
+
+Every module, you must review your progress to understand if your cohort can progress to the next stage. The conditions for success are listed below. If your cohort has met all of these conditions, you can progress to the next module. If you have not met them yet, what actions will you take to meet them?
+
+Discuss your plan in your class channel.
diff --git a/content/portfolio/_index.md b/content/en/portfolio/_index.md
similarity index 100%
rename from content/portfolio/_index.md
rename to content/en/portfolio/_index.md
diff --git a/content/portfolio/blocks/break-it-down/index.md b/content/en/portfolio/blocks/break-it-down/index.md
similarity index 100%
rename from content/portfolio/blocks/break-it-down/index.md
rename to content/en/portfolio/blocks/break-it-down/index.md
diff --git a/content/portfolio/blocks/data/index.md b/content/en/portfolio/blocks/data/index.md
similarity index 100%
rename from content/portfolio/blocks/data/index.md
rename to content/en/portfolio/blocks/data/index.md
diff --git a/content/portfolio/blocks/employability/index.md b/content/en/portfolio/blocks/employability/index.md
similarity index 100%
rename from content/portfolio/blocks/employability/index.md
rename to content/en/portfolio/blocks/employability/index.md
diff --git a/content/portfolio/blocks/ground-rules/index.md b/content/en/portfolio/blocks/ground-rules/index.md
similarity index 100%
rename from content/portfolio/blocks/ground-rules/index.md
rename to content/en/portfolio/blocks/ground-rules/index.md
diff --git a/content/portfolio/blocks/guest/index.md b/content/en/portfolio/blocks/guest/index.md
similarity index 100%
rename from content/portfolio/blocks/guest/index.md
rename to content/en/portfolio/blocks/guest/index.md
diff --git a/content/portfolio/blocks/interfaces/index.md b/content/en/portfolio/blocks/interfaces/index.md
similarity index 100%
rename from content/portfolio/blocks/interfaces/index.md
rename to content/en/portfolio/blocks/interfaces/index.md
diff --git a/content/portfolio/blocks/next-steps/index.md b/content/en/portfolio/blocks/next-steps/index.md
similarity index 100%
rename from content/portfolio/blocks/next-steps/index.md
rename to content/en/portfolio/blocks/next-steps/index.md
diff --git a/content/portfolio/blocks/project/index.md b/content/en/portfolio/blocks/project/index.md
similarity index 100%
rename from content/portfolio/blocks/project/index.md
rename to content/en/portfolio/blocks/project/index.md
diff --git a/content/portfolio/blocks/requirements/index.md b/content/en/portfolio/blocks/requirements/index.md
similarity index 100%
rename from content/portfolio/blocks/requirements/index.md
rename to content/en/portfolio/blocks/requirements/index.md
diff --git a/content/portfolio/blocks/stand-up/index.md b/content/en/portfolio/blocks/stand-up/index.md
similarity index 100%
rename from content/portfolio/blocks/stand-up/index.md
rename to content/en/portfolio/blocks/stand-up/index.md
diff --git a/content/portfolio/blocks/user-feedback/index.md b/content/en/portfolio/blocks/user-feedback/index.md
similarity index 100%
rename from content/portfolio/blocks/user-feedback/index.md
rename to content/en/portfolio/blocks/user-feedback/index.md
diff --git a/content/portfolio/prep/index.md b/content/en/portfolio/prep/index.md
similarity index 100%
rename from content/portfolio/prep/index.md
rename to content/en/portfolio/prep/index.md
diff --git a/content/portfolio/sprints/1/_index.md b/content/en/portfolio/sprints/1/_index.md
similarity index 100%
rename from content/portfolio/sprints/1/_index.md
rename to content/en/portfolio/sprints/1/_index.md
diff --git a/content/portfolio/sprints/1/backlog/index.md b/content/en/portfolio/sprints/1/backlog/index.md
similarity index 100%
rename from content/portfolio/sprints/1/backlog/index.md
rename to content/en/portfolio/sprints/1/backlog/index.md
diff --git a/content/portfolio/sprints/1/day-plan/index.md b/content/en/portfolio/sprints/1/day-plan/index.md
similarity index 100%
rename from content/portfolio/sprints/1/day-plan/index.md
rename to content/en/portfolio/sprints/1/day-plan/index.md
diff --git a/content/portfolio/sprints/1/prep/index.md b/content/en/portfolio/sprints/1/prep/index.md
similarity index 100%
rename from content/portfolio/sprints/1/prep/index.md
rename to content/en/portfolio/sprints/1/prep/index.md
diff --git a/content/portfolio/sprints/1/success/index.md b/content/en/portfolio/sprints/1/success/index.md
similarity index 100%
rename from content/portfolio/sprints/1/success/index.md
rename to content/en/portfolio/sprints/1/success/index.md
diff --git a/content/portfolio/sprints/2/_index.md b/content/en/portfolio/sprints/2/_index.md
similarity index 100%
rename from content/portfolio/sprints/2/_index.md
rename to content/en/portfolio/sprints/2/_index.md
diff --git a/content/portfolio/sprints/2/backlog/index.md b/content/en/portfolio/sprints/2/backlog/index.md
similarity index 100%
rename from content/portfolio/sprints/2/backlog/index.md
rename to content/en/portfolio/sprints/2/backlog/index.md
diff --git a/content/portfolio/sprints/2/day-plan/index.md b/content/en/portfolio/sprints/2/day-plan/index.md
similarity index 100%
rename from content/portfolio/sprints/2/day-plan/index.md
rename to content/en/portfolio/sprints/2/day-plan/index.md
diff --git a/content/portfolio/sprints/2/prep/index.md b/content/en/portfolio/sprints/2/prep/index.md
similarity index 100%
rename from content/portfolio/sprints/2/prep/index.md
rename to content/en/portfolio/sprints/2/prep/index.md
diff --git a/content/portfolio/sprints/2/success/index.md b/content/en/portfolio/sprints/2/success/index.md
similarity index 100%
rename from content/portfolio/sprints/2/success/index.md
rename to content/en/portfolio/sprints/2/success/index.md
diff --git a/content/portfolio/sprints/3/_index.md b/content/en/portfolio/sprints/3/_index.md
similarity index 100%
rename from content/portfolio/sprints/3/_index.md
rename to content/en/portfolio/sprints/3/_index.md
diff --git a/content/portfolio/sprints/3/backlog/index.md b/content/en/portfolio/sprints/3/backlog/index.md
similarity index 100%
rename from content/portfolio/sprints/3/backlog/index.md
rename to content/en/portfolio/sprints/3/backlog/index.md
diff --git a/content/portfolio/sprints/3/day-plan/index.md b/content/en/portfolio/sprints/3/day-plan/index.md
similarity index 100%
rename from content/portfolio/sprints/3/day-plan/index.md
rename to content/en/portfolio/sprints/3/day-plan/index.md
diff --git a/content/portfolio/sprints/3/prep/index.md b/content/en/portfolio/sprints/3/prep/index.md
similarity index 100%
rename from content/portfolio/sprints/3/prep/index.md
rename to content/en/portfolio/sprints/3/prep/index.md
diff --git a/content/portfolio/sprints/3/success/index.md b/content/en/portfolio/sprints/3/success/index.md
similarity index 100%
rename from content/portfolio/sprints/3/success/index.md
rename to content/en/portfolio/sprints/3/success/index.md
diff --git a/content/portfolio/sprints/4/_index.md b/content/en/portfolio/sprints/4/_index.md
similarity index 100%
rename from content/portfolio/sprints/4/_index.md
rename to content/en/portfolio/sprints/4/_index.md
diff --git a/content/portfolio/sprints/4/backlog/index.md b/content/en/portfolio/sprints/4/backlog/index.md
similarity index 100%
rename from content/portfolio/sprints/4/backlog/index.md
rename to content/en/portfolio/sprints/4/backlog/index.md
diff --git a/content/portfolio/sprints/4/day-plan/index.md b/content/en/portfolio/sprints/4/day-plan/index.md
similarity index 100%
rename from content/portfolio/sprints/4/day-plan/index.md
rename to content/en/portfolio/sprints/4/day-plan/index.md
diff --git a/content/portfolio/sprints/4/prep/index.md b/content/en/portfolio/sprints/4/prep/index.md
similarity index 100%
rename from content/portfolio/sprints/4/prep/index.md
rename to content/en/portfolio/sprints/4/prep/index.md
diff --git a/content/portfolio/sprints/4/success/index.md b/content/en/portfolio/sprints/4/success/index.md
similarity index 100%
rename from content/portfolio/sprints/4/success/index.md
rename to content/en/portfolio/sprints/4/success/index.md
diff --git a/content/portfolio/sprints/5/_index.md b/content/en/portfolio/sprints/5/_index.md
similarity index 100%
rename from content/portfolio/sprints/5/_index.md
rename to content/en/portfolio/sprints/5/_index.md
diff --git a/content/portfolio/sprints/5/backlog/index.md b/content/en/portfolio/sprints/5/backlog/index.md
similarity index 100%
rename from content/portfolio/sprints/5/backlog/index.md
rename to content/en/portfolio/sprints/5/backlog/index.md
diff --git a/content/portfolio/sprints/5/day-plan/index.md b/content/en/portfolio/sprints/5/day-plan/index.md
similarity index 100%
rename from content/portfolio/sprints/5/day-plan/index.md
rename to content/en/portfolio/sprints/5/day-plan/index.md
diff --git a/content/portfolio/sprints/5/prep/index.md b/content/en/portfolio/sprints/5/prep/index.md
similarity index 100%
rename from content/portfolio/sprints/5/prep/index.md
rename to content/en/portfolio/sprints/5/prep/index.md
diff --git a/content/portfolio/sprints/5/success/index.md b/content/en/portfolio/sprints/5/success/index.md
similarity index 100%
rename from content/portfolio/sprints/5/success/index.md
rename to content/en/portfolio/sprints/5/success/index.md
diff --git a/content/portfolio/success/index.md b/content/en/portfolio/success/index.md
similarity index 100%
rename from content/portfolio/success/index.md
rename to content/en/portfolio/success/index.md
diff --git a/content/react/_index.md b/content/en/react/_index.md
similarity index 100%
rename from content/react/_index.md
rename to content/en/react/_index.md
diff --git a/content/react/blocks/block1/index.md b/content/en/react/blocks/block1/index.md
similarity index 100%
rename from content/react/blocks/block1/index.md
rename to content/en/react/blocks/block1/index.md
diff --git a/content/react/blocks/block2/index.md b/content/en/react/blocks/block2/index.md
similarity index 100%
rename from content/react/blocks/block2/index.md
rename to content/en/react/blocks/block2/index.md
diff --git a/content/react/blocks/block3/index.md b/content/en/react/blocks/block3/index.md
similarity index 100%
rename from content/react/blocks/block3/index.md
rename to content/en/react/blocks/block3/index.md
diff --git a/content/react/prep/index.md b/content/en/react/prep/index.md
similarity index 100%
rename from content/react/prep/index.md
rename to content/en/react/prep/index.md
diff --git a/content/react/product/_index.md b/content/en/react/product/_index.md
similarity index 100%
rename from content/react/product/_index.md
rename to content/en/react/product/_index.md
diff --git a/content/react/product/build/index.md b/content/en/react/product/build/index.md
similarity index 100%
rename from content/react/product/build/index.md
rename to content/en/react/product/build/index.md
diff --git a/content/react/product/plan/index.md b/content/en/react/product/plan/index.md
similarity index 100%
rename from content/react/product/plan/index.md
rename to content/en/react/product/plan/index.md
diff --git a/content/react/product/ship/index.md b/content/en/react/product/ship/index.md
similarity index 100%
rename from content/react/product/ship/index.md
rename to content/en/react/product/ship/index.md
diff --git a/content/react/product/test/index.md b/content/en/react/product/test/index.md
similarity index 100%
rename from content/react/product/test/index.md
rename to content/en/react/product/test/index.md
diff --git a/content/react/sprints/1/_index.md b/content/en/react/sprints/1/_index.md
similarity index 100%
rename from content/react/sprints/1/_index.md
rename to content/en/react/sprints/1/_index.md
diff --git a/content/react/sprints/1/backlog/index.md b/content/en/react/sprints/1/backlog/index.md
similarity index 100%
rename from content/react/sprints/1/backlog/index.md
rename to content/en/react/sprints/1/backlog/index.md
diff --git a/content/react/sprints/1/day-plan/index.md b/content/en/react/sprints/1/day-plan/index.md
similarity index 62%
rename from content/react/sprints/1/day-plan/index.md
rename to content/en/react/sprints/1/day-plan/index.md
index 6508306ce..77082f1ad 100644
--- a/content/react/sprints/1/day-plan/index.md
+++ b/content/en/react/sprints/1/day-plan/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 3
 backlog= 'Module-React'
 backlog_filter= 'Week 1'
+[[blocks]]
+name="Resilience"
+src="https://cyf-pd.netlify.app/blocks/resilience/readme/"
 +++
 
 
diff --git a/content/react/sprints/1/prep/index.md b/content/en/react/sprints/1/prep/index.md
similarity index 58%
rename from content/react/sprints/1/prep/index.md
rename to content/en/react/sprints/1/prep/index.md
index 8ee288325..7aab8d2df 100644
--- a/content/react/sprints/1/prep/index.md
+++ b/content/en/react/sprints/1/prep/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-React'
 backlog_filter= 'Week 1'
+[[blocks]]
+name="Prep Resilience"
+src="https://cyf-pd.netlify.app/blocks/prep-resilience/readme/"
 +++
 
 
diff --git a/content/react/sprints/1/success/index.md b/content/en/react/sprints/1/success/index.md
similarity index 100%
rename from content/react/sprints/1/success/index.md
rename to content/en/react/sprints/1/success/index.md
diff --git a/content/react/sprints/2/_index.md b/content/en/react/sprints/2/_index.md
similarity index 100%
rename from content/react/sprints/2/_index.md
rename to content/en/react/sprints/2/_index.md
diff --git a/content/react/sprints/2/backlog/index.md b/content/en/react/sprints/2/backlog/index.md
similarity index 100%
rename from content/react/sprints/2/backlog/index.md
rename to content/en/react/sprints/2/backlog/index.md
diff --git a/content/react/sprints/2/day-plan/index.md b/content/en/react/sprints/2/day-plan/index.md
similarity index 100%
rename from content/react/sprints/2/day-plan/index.md
rename to content/en/react/sprints/2/day-plan/index.md
diff --git a/content/react/sprints/2/prep/index.md b/content/en/react/sprints/2/prep/index.md
similarity index 100%
rename from content/react/sprints/2/prep/index.md
rename to content/en/react/sprints/2/prep/index.md
diff --git a/content/react/sprints/2/success/index.md b/content/en/react/sprints/2/success/index.md
similarity index 100%
rename from content/react/sprints/2/success/index.md
rename to content/en/react/sprints/2/success/index.md
diff --git a/content/react/sprints/3/_index.md b/content/en/react/sprints/3/_index.md
similarity index 100%
rename from content/react/sprints/3/_index.md
rename to content/en/react/sprints/3/_index.md
diff --git a/content/react/sprints/3/backlog/index.md b/content/en/react/sprints/3/backlog/index.md
similarity index 100%
rename from content/react/sprints/3/backlog/index.md
rename to content/en/react/sprints/3/backlog/index.md
diff --git a/content/react/sprints/3/day-plan/index.md b/content/en/react/sprints/3/day-plan/index.md
similarity index 100%
rename from content/react/sprints/3/day-plan/index.md
rename to content/en/react/sprints/3/day-plan/index.md
diff --git a/content/react/sprints/3/prep/index.md b/content/en/react/sprints/3/prep/index.md
similarity index 55%
rename from content/react/sprints/3/prep/index.md
rename to content/en/react/sprints/3/prep/index.md
index 3cfe50e61..55dab500e 100644
--- a/content/react/sprints/3/prep/index.md
+++ b/content/en/react/sprints/3/prep/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-React'
 backlog_filter= 'Week 3'
+[[blocks]]
+name="Prep WIP and Feedback"
+src="https://cyf-pd.netlify.app/blocks/prep-wip-and-feedback/readme/"
 +++
 
 
diff --git a/content/react/sprints/3/success/index.md b/content/en/react/sprints/3/success/index.md
similarity index 100%
rename from content/react/sprints/3/success/index.md
rename to content/en/react/sprints/3/success/index.md
diff --git a/content/react/sprints/4/_index.md b/content/en/react/sprints/4/_index.md
similarity index 100%
rename from content/react/sprints/4/_index.md
rename to content/en/react/sprints/4/_index.md
diff --git a/content/react/sprints/4/backlog/index.md b/content/en/react/sprints/4/backlog/index.md
similarity index 100%
rename from content/react/sprints/4/backlog/index.md
rename to content/en/react/sprints/4/backlog/index.md
diff --git a/content/react/sprints/4/day-plan/index.md b/content/en/react/sprints/4/day-plan/index.md
similarity index 69%
rename from content/react/sprints/4/day-plan/index.md
rename to content/en/react/sprints/4/day-plan/index.md
index dc5822327..17025a691 100644
--- a/content/react/sprints/4/day-plan/index.md
+++ b/content/en/react/sprints/4/day-plan/index.md
@@ -10,4 +10,7 @@ backlog_filter= 'Week 4'
 name="Progress check-in"
 src="https://github.com/CodeYourFuture/Module-React/issues/23"
 time="15"
+[[blocks]]
+name="Diversity and Inclusion"
+src="https://cyf-pd.netlify.app/blocks/diversity-and-inclusion/readme/"
 +++
diff --git a/content/react/sprints/4/prep/index.md b/content/en/react/sprints/4/prep/index.md
similarity index 53%
rename from content/react/sprints/4/prep/index.md
rename to content/en/react/sprints/4/prep/index.md
index e4973ef24..406de5a32 100644
--- a/content/react/sprints/4/prep/index.md
+++ b/content/en/react/sprints/4/prep/index.md
@@ -6,6 +6,9 @@ menu_level = ['sprint']
 weight = 1
 backlog= 'Module-React'
 backlog_filter= 'Week 4'
+[[blocks]]
+name="Diversity and Inclusion"
+src="https://cyf-pd.netlify.app/blocks/prep-for-diversity-and-inclusion/readme/"
 +++
 
 
diff --git a/content/react/sprints/4/success/index.md b/content/en/react/sprints/4/success/index.md
similarity index 100%
rename from content/react/sprints/4/success/index.md
rename to content/en/react/sprints/4/success/index.md
diff --git a/content/en/react/success/index.md b/content/en/react/success/index.md
new file mode 100644
index 000000000..ca287672e
--- /dev/null
+++ b/content/en/react/success/index.md
@@ -0,0 +1,17 @@
++++
+title = "Success"
+description = "How do we know if we have completed this module?"
+layout = "success"
+emoji= "πŸ“"
+menu_level = [ "module" ]
+weight = 11
+backlog= "Module-React"
+[[objectives]]
+1= "Every trainee has received and responded to at least one code review"
+2= "Every trainee has opened at least 3 PRs to the module repo"
+3= "70% of cohort is at or beyond milestones"
++++
+
+Every module, you must review your progress to understand if your cohort can progress to the next stage. The conditions for success are listed below. If your cohort has met all of these conditions, you can progress to the next module. If you have not met them yet, what actions will you take to meet them?
+
+Discuss your plan in your class channel.
diff --git a/content/snippets/requirements.md b/content/en/snippets/requirements.md
similarity index 100%
rename from content/snippets/requirements.md
rename to content/en/snippets/requirements.md
diff --git a/content/the-launch/_index.md b/content/en/the-launch/_index.md
similarity index 100%
rename from content/the-launch/_index.md
rename to content/en/the-launch/_index.md
diff --git a/content/the-launch/blocks/block1/index.md b/content/en/the-launch/blocks/block1/index.md
similarity index 100%
rename from content/the-launch/blocks/block1/index.md
rename to content/en/the-launch/blocks/block1/index.md
diff --git a/content/the-launch/blocks/block2/index.md b/content/en/the-launch/blocks/block2/index.md
similarity index 100%
rename from content/the-launch/blocks/block2/index.md
rename to content/en/the-launch/blocks/block2/index.md
diff --git a/content/the-launch/blocks/block3/index.md b/content/en/the-launch/blocks/block3/index.md
similarity index 100%
rename from content/the-launch/blocks/block3/index.md
rename to content/en/the-launch/blocks/block3/index.md
diff --git a/content/the-launch/prep/index.md b/content/en/the-launch/prep/index.md
similarity index 100%
rename from content/the-launch/prep/index.md
rename to content/en/the-launch/prep/index.md
diff --git a/content/the-launch/product/_index.md b/content/en/the-launch/product/_index.md
similarity index 100%
rename from content/the-launch/product/_index.md
rename to content/en/the-launch/product/_index.md
diff --git a/content/the-launch/product/build/index.md b/content/en/the-launch/product/build/index.md
similarity index 100%
rename from content/the-launch/product/build/index.md
rename to content/en/the-launch/product/build/index.md
diff --git a/content/the-launch/product/plan/index.md b/content/en/the-launch/product/plan/index.md
similarity index 100%
rename from content/the-launch/product/plan/index.md
rename to content/en/the-launch/product/plan/index.md
diff --git a/content/the-launch/product/ship/index.md b/content/en/the-launch/product/ship/index.md
similarity index 100%
rename from content/the-launch/product/ship/index.md
rename to content/en/the-launch/product/ship/index.md
diff --git a/content/the-launch/product/test/index.md b/content/en/the-launch/product/test/index.md
similarity index 100%
rename from content/the-launch/product/test/index.md
rename to content/en/the-launch/product/test/index.md
diff --git a/content/the-launch/sprints/1/_index.md b/content/en/the-launch/sprints/1/_index.md
similarity index 100%
rename from content/the-launch/sprints/1/_index.md
rename to content/en/the-launch/sprints/1/_index.md
diff --git a/content/the-launch/sprints/1/backlog/index.md b/content/en/the-launch/sprints/1/backlog/index.md
similarity index 100%
rename from content/the-launch/sprints/1/backlog/index.md
rename to content/en/the-launch/sprints/1/backlog/index.md
diff --git a/content/the-launch/sprints/1/day-plan/index.md b/content/en/the-launch/sprints/1/day-plan/index.md
similarity index 100%
rename from content/the-launch/sprints/1/day-plan/index.md
rename to content/en/the-launch/sprints/1/day-plan/index.md
diff --git a/content/the-launch/sprints/1/prep/index.md b/content/en/the-launch/sprints/1/prep/index.md
similarity index 100%
rename from content/the-launch/sprints/1/prep/index.md
rename to content/en/the-launch/sprints/1/prep/index.md
diff --git a/content/the-launch/sprints/1/success/index.md b/content/en/the-launch/sprints/1/success/index.md
similarity index 100%
rename from content/the-launch/sprints/1/success/index.md
rename to content/en/the-launch/sprints/1/success/index.md
diff --git a/content/the-launch/sprints/2/_index.md b/content/en/the-launch/sprints/2/_index.md
similarity index 100%
rename from content/the-launch/sprints/2/_index.md
rename to content/en/the-launch/sprints/2/_index.md
diff --git a/content/the-launch/sprints/2/backlog/index.md b/content/en/the-launch/sprints/2/backlog/index.md
similarity index 100%
rename from content/the-launch/sprints/2/backlog/index.md
rename to content/en/the-launch/sprints/2/backlog/index.md
diff --git a/content/the-launch/sprints/2/day-plan/index.md b/content/en/the-launch/sprints/2/day-plan/index.md
similarity index 100%
rename from content/the-launch/sprints/2/day-plan/index.md
rename to content/en/the-launch/sprints/2/day-plan/index.md
diff --git a/content/the-launch/sprints/2/prep/index.md b/content/en/the-launch/sprints/2/prep/index.md
similarity index 100%
rename from content/the-launch/sprints/2/prep/index.md
rename to content/en/the-launch/sprints/2/prep/index.md
diff --git a/content/the-launch/sprints/2/success/index.md b/content/en/the-launch/sprints/2/success/index.md
similarity index 100%
rename from content/the-launch/sprints/2/success/index.md
rename to content/en/the-launch/sprints/2/success/index.md
diff --git a/content/the-launch/sprints/3/_index.md b/content/en/the-launch/sprints/3/_index.md
similarity index 100%
rename from content/the-launch/sprints/3/_index.md
rename to content/en/the-launch/sprints/3/_index.md
diff --git a/content/the-launch/sprints/3/backlog/index.md b/content/en/the-launch/sprints/3/backlog/index.md
similarity index 100%
rename from content/the-launch/sprints/3/backlog/index.md
rename to content/en/the-launch/sprints/3/backlog/index.md
diff --git a/content/the-launch/sprints/3/day-plan/index.md b/content/en/the-launch/sprints/3/day-plan/index.md
similarity index 100%
rename from content/the-launch/sprints/3/day-plan/index.md
rename to content/en/the-launch/sprints/3/day-plan/index.md
diff --git a/content/the-launch/sprints/3/prep/index.md b/content/en/the-launch/sprints/3/prep/index.md
similarity index 100%
rename from content/the-launch/sprints/3/prep/index.md
rename to content/en/the-launch/sprints/3/prep/index.md
diff --git a/content/the-launch/sprints/3/success/index.md b/content/en/the-launch/sprints/3/success/index.md
similarity index 100%
rename from content/the-launch/sprints/3/success/index.md
rename to content/en/the-launch/sprints/3/success/index.md
diff --git a/content/the-launch/sprints/4/_index.md b/content/en/the-launch/sprints/4/_index.md
similarity index 100%
rename from content/the-launch/sprints/4/_index.md
rename to content/en/the-launch/sprints/4/_index.md
diff --git a/content/the-launch/sprints/4/backlog/index.md b/content/en/the-launch/sprints/4/backlog/index.md
similarity index 100%
rename from content/the-launch/sprints/4/backlog/index.md
rename to content/en/the-launch/sprints/4/backlog/index.md
diff --git a/content/the-launch/sprints/4/day-plan/index.md b/content/en/the-launch/sprints/4/day-plan/index.md
similarity index 100%
rename from content/the-launch/sprints/4/day-plan/index.md
rename to content/en/the-launch/sprints/4/day-plan/index.md
diff --git a/content/the-launch/sprints/4/prep/index.md b/content/en/the-launch/sprints/4/prep/index.md
similarity index 100%
rename from content/the-launch/sprints/4/prep/index.md
rename to content/en/the-launch/sprints/4/prep/index.md
diff --git a/content/the-launch/sprints/4/success/index.md b/content/en/the-launch/sprints/4/success/index.md
similarity index 100%
rename from content/the-launch/sprints/4/success/index.md
rename to content/en/the-launch/sprints/4/success/index.md
diff --git a/content/the-launch/success/index.md b/content/en/the-launch/success/index.md
similarity index 100%
rename from content/the-launch/success/index.md
rename to content/en/the-launch/success/index.md
diff --git a/content/js2/success/index.md b/content/js2/success/index.md
deleted file mode 100644
index a75683f93..000000000
--- a/content/js2/success/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = 'success'
-description = 'success description'
-layout = 'success'
-emoji= 'πŸ“'
-menu_level = ['module']
-weight = 11
-backlog= 'Module-JS2'
-+++
-
-
diff --git a/content/js3/_index.md b/content/js3/_index.md
deleted file mode 100644
index 59c2c853f..000000000
--- a/content/js3/_index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-+++
-title = 'JS3'
-description = 'The plan for JS3 is coming soon'
-layout = 'module'
-emoji= 'πŸ“š'
-menu = ['syllabus']
-weight='5'
-+++
diff --git a/content/js3/blocks/components/index.md b/content/js3/blocks/components/index.md
deleted file mode 100644
index 1113a5ae5..000000000
--- a/content/js3/blocks/components/index.md
+++ /dev/null
@@ -1,81 +0,0 @@
-+++
-title = 'πŸƒ Building a component'
-headless = true
-time = 30
-facilitation = false
-emoji= '🧩'
-[objectives]
-    1='Implement components for a user interface'
-+++
-
-Recall our sub-goal:
-
-> 🎯 Sub-goal: Build a film card component
-
-We can render _any_ film object in the user interface with a general component. We've composed DOM elements to create a card; now we will build a **reusable component**. To do this, we wrap up our code inside a JavaScript function. JavaScript functions **reuse code**: so we can implement **reusable UI components** using functions.
-
-Look at our code so far:
-
-```js
-const film = {
-  title: "Killing of Flower Moon",
-  director: "Martin Scorsese",
-  times: ["15:35"],
-  certificate: "15",
-  duration: 112,
-};
-
-const filmCard = document.createElement("section");
-filmCard.innerHTML = `
-<p>${film.title}</p>
-`;
-console.log(filmCard);
-```
-
-We can wrap up some of this code to create our reusable film card component:
-
-```js
-function createFilmCard(film) {
-  const card = document.createElement("section");
-  card.innerHTML = `
-    <p>${film.title}</p>
-`;
-  return card;
-}
-
-const film1 = {
-  title: "Killing of Flower Moon",
-  director: "Martin Scorsese",
-  times: ["15:35"],
-  certificate: "15",
-  duration: 112,
-};
-
-const film2 = {
-  title: "Typist Artist Pirate King",
-  director: "Carol Morley",
-  times: ["15:00", "20:00"],
-  certificate: "12A",
-  duration: 108,
-};
-
-document
-  .querySelector("ul")
-  .append(createFilmCard(film1), createFilmCard(film2)); // append the film cards to the DOM
-```
-
-{{<tabs>}}
-
-{{<tab name="πŸ”§ Implement">}}
-
-Update the implementation of `createFilmCard` so it renders other film properties. Other film properties on this object are `director`, `times`, `certificate` and `duration`.
-
-{{</tab>}}
-
-{{<tab name="🧹 Refactor">}}
-
-Refactor the `createFilmCard` function to use object destructuring in the parameters.
-
-{{</tab>}}
-
-{{</tabs>}}
diff --git a/content/js3/blocks/composing-elements/index.md b/content/js3/blocks/composing-elements/index.md
deleted file mode 100644
index bd222e6ab..000000000
--- a/content/js3/blocks/composing-elements/index.md
+++ /dev/null
@@ -1,51 +0,0 @@
-+++
-title = '🧱 Composing elements'
-headless = true
-time = 20
-facilitation = false
-emoji= '🧩'
-[objectives]
-    1='Compose UI elements to some specification'
-    2='Append DOM elements to other nodes in the DOM tree'
-+++
-
-We can start by calling `createElement` to create and {{<tooltip title="compose DOM elements">}}To **compose DOM elements** means to **combine DOM elements** to form some part of the user interface.{{</tooltip>}}. For now, we'll only consider rendering the `title` property from the `film` object:
-
-```js
-const film = {
-  title: "Killing of Flower Moon",
-  director: "Martin Scorsese",
-  times: ["15:35"],
-  certificate: "15",
-  duration: 112,
-};
-
-const filmCard = document.createElement("section");
-filmCard.innerHTML = `
-  <h3>${film.title}</h3>
-`;
-console.log(filmCard);
-```
-
-If we open up the console tab, we should be able to see this element logged in the console. However, it won't yet appear in the browser.
-
-### Appending elements
-
-To display the film card, we need to append it to another element that is already in the DOM tree.
-
-```js {linenos=table,hl_lines=["14"],linenostart=1}
-const film = {
-  title: "Killing of Flower Moon",
-  director: "Martin Scorsese",
-  times: ["15:35"],
-  certificate: "15",
-  duration: 112,
-};
-
-const filmCard = document.createElement("section");
-filmCard.innerHTML = `
-<p>${film.title}</p>
-`;
-
-document.querySelector("ul").append(section);
-```
diff --git a/content/js3/prep/index.md b/content/js3/prep/index.md
deleted file mode 100644
index 8ed4f8196..000000000
--- a/content/js3/prep/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = 'prep'
-description = 'prep description'
-layout = 'prep'
-emoji= 'πŸ“'
-menu_level = ['module']
-weight = 1
-backlog= 'Module-JS3'
-+++
-
-
diff --git a/content/js3/sprints/2/prep/index.md b/content/js3/sprints/2/prep/index.md
deleted file mode 100644
index 250bc0cfd..000000000
--- a/content/js3/sprints/2/prep/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
-+++
-title = 'prep'
-layout = 'prep'
-emoji= 'πŸ“'
-menu_level = ['sprint']
-weight = 1
-backlog= 'Module-JS3'
-backlog_filter= 'Week 2'
-[[blocks]]
-name= "Gathering requirements Prep"
-src="https://cyf-pd.netlify.app/blocks/gathering-requirements-prep/readme/"
-+++
-
-
diff --git a/content/js3/sprints/3/day-plan/index.md b/content/js3/sprints/3/day-plan/index.md
deleted file mode 100644
index 5e3206911..000000000
--- a/content/js3/sprints/3/day-plan/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
-+++
-title = 'day-plan'
-layout = 'day-plan'
-emoji= 'πŸ“'
-menu_level = ['sprint']
-weight = 3
-backlog= 'Module-JS3'
-backlog_filter= 'Week 3'
-[[blocks]]
-name="Teamwork Project Sprint 3"
-src="https://cyf-pd.netlify.app/blocks/teamwork-project-s3/readme/"
-+++
-
-
diff --git a/content/js3/success/index.md b/content/js3/success/index.md
deleted file mode 100644
index 34bb9cca6..000000000
--- a/content/js3/success/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = 'success'
-description = 'success description'
-layout = 'success'
-emoji= 'πŸ“'
-menu_level = ['module']
-weight = 11
-backlog= 'Module-JS3'
-+++
-
-
diff --git a/content/node/success/index.md b/content/node/success/index.md
deleted file mode 100644
index ee07791c4..000000000
--- a/content/node/success/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = 'success'
-description = 'success description'
-layout = 'success'
-emoji= 'πŸ“'
-menu_level = ['module']
-weight = 11
-backlog= 'Module-Node'
-+++
-
-
diff --git a/content/react/success/index.md b/content/react/success/index.md
deleted file mode 100644
index 67d0e4d55..000000000
--- a/content/react/success/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-title = 'success'
-description = 'success description'
-layout = 'success'
-emoji= 'πŸ“'
-menu_level = ['module']
-weight = 11
-backlog= 'Module-React'
-+++
-
-
diff --git a/layouts/_default/_markup/render-codeblock-js.html b/layouts/_default/_markup/render-codeblock-js.html
deleted file mode 100644
index 604f45660..000000000
--- a/layouts/_default/_markup/render-codeblock-js.html
+++ /dev/null
@@ -1,7 +0,0 @@
-{{- .Page.Store.Set "hasCodeMirror" true -}}
-<h4 class="is-invisible">Interactive code block</h4>
-{{/* Must be a pre to preserve line breaks */}}
-<div class="highlight">
-  <pre data-cm-editor data-options="{{ .Options | jsonify }}">{{ .Inner }}</pre>
-</div>
-
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index e0bdf4f79..90804a5db 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -48,23 +48,5 @@
 
   <link rel="shortcut icon" href="{{ .Site.BaseURL }}favicon.ico" />
   <meta name="theme-color" content="#e3ddeef2" />
-  <link rel="manifest" href="manifest.json" />
-  <script src="{{ .Site.BaseURL }}sw.js"></script>
-  <script>
-    if ("serviceWorker" in navigator) {
-      window.addEventListener("load", function () {
-        navigator.serviceWorker.register("/sw.js").then(
-          function (registration) {
-            console.log(
-              "ServiceWorker registration successful with scope: ",
-              registration.scope
-            );
-          },
-          function (err) {
-            console.log("ServiceWorker registration failed: ", err);
-          }
-        );
-      });
-    }
-  </script>
+  <link rel="manifest" href="{{ .Site.BaseURL }}manifest.json" />
 </head>
diff --git a/layouts/partials/issues.html b/layouts/partials/issues.html
index 7472d888a..b138aed1f 100644
--- a/layouts/partials/issues.html
+++ b/layouts/partials/issues.html
@@ -1,5 +1,5 @@
 {{ $repo := .Params.backlog }}
-{{ $issues := print .Site.Params.orgapi $repo "/issues?per_page=100&state=open&direction=asc&type=issue" }}
+{{ $issuesUrl := print .Site.Params.issuesorgapi $repo "/issues?per_page=100&state=open&direction=asc&type=issue" }}
 {{ $filter := .Params.backlog_filter }}
 {{ $currentPath := .Page.RelPermalink }}
 <!-- api call -->
@@ -7,11 +7,11 @@
 {{ if ne (os.Getenv "CYF_CURRICULUM_GITHUB_BEARER_TOKEN") "" }}
   {{ $headers = merge $headers (dict "Authorization" (printf "Bearer %s" (getenv "CYF_CURRICULUM_GITHUB_BEARER_TOKEN"))) }}
 {{ end }}
-{{ $commitObject := getJSON $issues $headers }}
+{{ $issues := getJSON $issuesUrl $headers }}
 <!-- if no object show error -->
-{{ if ne $commitObject nil }}
+{{ if ne $issues nil }}
   <!-- range over issues list and pull out useful data -->
-  {{ range $commitObject }}
+  {{ range $issues }}
 
     {{ $showIssue := true }}
     <!-- if a filter exists, only show issues with the right label -->
@@ -62,5 +62,5 @@
     {{ end }}
   {{ end }}
 {{ else }}
-  {{ errorf "Error, fetch of %s failed: %v" $issues $commitObject }}
+  {{ errorf "Error, fetch of %s failed: %v" $issuesUrl $issues }}
 {{ end }}
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index 5c6b530d6..157461295 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -6,8 +6,6 @@
 <script src="{{ $scripts.Permalink }}" defer></script>
 {{ $player := resources.Get "scripts/youtube-player.js" | resources.Minify }}
 <script src="{{ $player.Permalink }}" defer></script>
-{{ $codemirror := resources.Get "scripts/cm6.ts" | js.Build | resources.Minify }}
-<script src="{{ $codemirror.Permalink }}" defer></script>
 {{ $tabs := resources.Get "scripts/tab-panels.js" | resources.Minify }}
 <script src="{{ $tabs.Permalink }}" type="module" defer></script>
 <script
diff --git a/layouts/shortcodes/contributors.html b/layouts/shortcodes/contributors.html
index 54d2c5261..73422e568 100644
--- a/layouts/shortcodes/contributors.html
+++ b/layouts/shortcodes/contributors.html
@@ -1,5 +1,9 @@
 {{ $repo := .Get 0 }}
-{{ $contributors := getJSON (printf "https://api.github.com/repos/CodeYourFuture/%s/contributors" $repo) }}
+{{ $headers := (dict) }}
+{{ if ne (os.Getenv "CYF_CURRICULUM_GITHUB_BEARER_TOKEN") "" }}
+  {{ $headers = merge $headers (dict "Authorization" (printf "Bearer %s" (getenv "CYF_CURRICULUM_GITHUB_BEARER_TOKEN"))) }}
+{{ end }}
+{{ $contributors := getJSON (printf "https://api.github.com/repos/CodeYourFuture/%s/contributors" $repo) $headers }}
 
 
 <ol class="c-contributors">
diff --git a/static/filterFilms.html b/static/filterFilms.html
new file mode 100644
index 000000000..ca32cfee1
--- /dev/null
+++ b/static/filterFilms.html
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <title>Film Search</title>
+    <style>
+      body {
+        font-family: Monaco, monospace;
+        background: linear-gradient(#282130, #1f1926) no-repeat;
+        min-height: 100vh;
+        padding: 5rem 3rem;
+      }
+      .film-card,
+      label {
+        display: grid;
+        background: white;
+        padding: 1rem;
+      }
+      #filmContainer {
+        display: grid;
+        gap: 1rem;
+        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+      }
+    </style>
+  </head>
+
+  <body>
+    <template id="filmCardTemplate">
+      <section class="film-card">
+        <h3></h3>
+        <dl>
+          <dt>Director</dt>
+          <dd></dd>
+        </dl>
+      </section>
+    </template>
+
+    <label
+      >Search <input type="search" id="search" placeholder="Search films..."
+    /></label>
+    <div id="filmContainer"></div>
+
+    <script>
+      // Data
+      let films = [
+        {
+          title: "The Matrix",
+          director: "Lana Wachowski",
+          certificate: "15",
+        },
+        {
+          title: "Inception",
+          director: "Christopher Nolan",
+          certificate: "12A",
+        },
+      ];
+      // State
+      const state = {
+        films,
+      };
+
+      // DOM elements
+      const filmContainer = document.getElementById("filmContainer");
+      const search = document.getElementById("search");
+      const template = document.getElementById("filmCardTemplate");
+
+      // Capture input
+      search.addEventListener("input", handleInput);
+      // Handle input
+      function handleInput(event) {
+        const searchTerm = event.target.value.toLowerCase();
+        const filteredFilms = state.films.filter((film) =>
+          film.title.toLowerCase().includes(searchTerm)
+        );
+        render(filmContainer, filteredFilms);
+      }
+
+      // Make a piece of UI
+
+      const createCard = (template, { title, director }) => {
+        const card = template.content.cloneNode(true);
+        card.querySelector("h3").textContent = title;
+        card.querySelector("dd").textContent = director;
+        return card;
+      };
+      // Render the component
+      const render = (container, list) => {
+        container.textContent = "";
+        const cards = list.map((film) => createCard(template, film));
+        container.append(...cards);
+      };
+
+      // Initial render
+      render(filmContainer, state.films);
+    </script>
+  </body>
+</html>
diff --git a/static/sw.js b/static/sw.js
deleted file mode 100644
index ee729d93f..000000000
--- a/static/sw.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const CACHE_CYF = "cyf-site-cache-v1";
-const IMAGE_CACHE_CYF = "cyf-image-cache";
-const FONT_CACHE_CYF = "cyf-font-cache";
-const urlsToCache = ["/"];
-
-const IMAGE_CACHE_CYF_LIMIT = 50;
-
-self.addEventListener("install", function (event) {
-  event.waitUntil(
-    caches.open(CACHE_CYF).then(function (cache) {
-      return cache.addAll(urlsToCache);
-    })
-  );
-});
-
-self.addEventListener("fetch", function (event) {
-  const requestUrl = new URL(event.request.url);
-
-  event.respondWith(
-    // Try to fetch from network first
-    fetch(event.request)
-      .then(function (networkResponse) {
-        // If request is successful, clone and cache the response
-        let cacheName = requestUrl.pathname;
-        console.log({ cacheName });
-
-        // Choose the cache depending on the file type
-        if (/\.woff2?$|\.ttf$/.test(requestUrl.pathname)) {
-          cacheName = FONT_CACHE_CYF;
-        } else if (/\.jpe?g$|\.png$|\.webp$/.test(requestUrl.pathname)) {
-          cacheName = IMAGE_CACHE_CYF;
-        } else {
-          cacheName = CACHE_CYF;
-        }
-
-        caches.open(cacheName).then(function (cache) {
-          cache.put(event.request, networkResponse.clone());
-        });
-
-        // Return the network response
-        return networkResponse;
-      })
-      .catch(function () {
-        // If network request fails, try to get from cache
-        return caches.match(event.request).then(function (cacheResponse) {
-          return cacheResponse;
-        });
-      })
-  );
-});