diff --git a/15 - 20.12.23 - Modules/modules/server_module/control.js b/15 - 20.12.23 - Modules/modules/server_module/control.js
new file mode 100644
index 0000000..4f889c1
--- /dev/null
+++ b/15 - 20.12.23 - Modules/modules/server_module/control.js
@@ -0,0 +1,15 @@
+import { getData, postData } from "./model.js";
+import { default as updateUI } from "./view.js";
+
+// -- CONTROL --
+async function start() {
+ // 1. Get list of posts from server - GET
+ let data = await getData();
+ updateUI(data);
+
+ // 2. Create new post on server - POST
+ data = await postData();
+ alert(`${data.id} - ${data.title}`);
+}
+
+export default start;
\ No newline at end of file
diff --git a/15 - 20.12.23 - Modules/modules/server_module/index.html b/15 - 20.12.23 - Modules/modules/server_module/index.html
new file mode 100644
index 0000000..ea151c0
--- /dev/null
+++ b/15 - 20.12.23 - Modules/modules/server_module/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ 19.11.23
+
+
+
+
+
17.12.23
+
Modules
+
+
+
+
+
+
+
+
+
+
+
diff --git a/15 - 20.12.23 - Modules/modules/server_module/main.js b/15 - 20.12.23 - Modules/modules/server_module/main.js
new file mode 100644
index 0000000..373676e
--- /dev/null
+++ b/15 - 20.12.23 - Modules/modules/server_module/main.js
@@ -0,0 +1,3 @@
+import { default as start } from './control.js';
+
+start();
\ No newline at end of file
diff --git a/15 - 20.12.23 - Modules/modules/server_module/model.js b/15 - 20.12.23 - Modules/modules/server_module/model.js
new file mode 100644
index 0000000..721249a
--- /dev/null
+++ b/15 - 20.12.23 - Modules/modules/server_module/model.js
@@ -0,0 +1,37 @@
+// -- MODEL --
+// 1. Makes call to server
+// 2. Returns a Promise object
+async function getData() {
+
+ // 1. 1st option, using async/await
+ let response = await fetch('https://jsonplaceholder.typicode.com/posts');
+ if (response.ok) { // if HTTP status is within the range of 200 and 299
+ return response.json(); // Similar to JSON.parse();
+ }
+}
+
+async function postData() {
+ const myPost = {
+ title: 'foo',
+ body: 'bar',
+ userId: 1,
+ };
+
+ // 1. 1st option, using async/await
+ let response = await fetch('https://jsonplaceholder.typicode.com/posts', {
+ method: 'POST',
+ body: JSON.stringify(myPost),
+ headers: {
+ 'Content-type': 'application/json; charset=UTF-8',
+ },
+ });
+
+ if (response.ok) { // if HTTP status is within the range of 200 and 299
+ return response.json(); // Similar to JSON.parse();
+ }
+}
+
+export {
+ getData,
+ postData
+}
\ No newline at end of file
diff --git a/15 - 20.12.23 - Modules/modules/server_module/view.js b/15 - 20.12.23 - Modules/modules/server_module/view.js
new file mode 100644
index 0000000..e657dd5
--- /dev/null
+++ b/15 - 20.12.23 - Modules/modules/server_module/view.js
@@ -0,0 +1,23 @@
+// -- VIEW --
+// Responsible for updating the UI with data
+// אחראי על עדכון הממשק משתמש באמצעות דאטה שהוא מקבל כקלט לפונקציה
+function updateUI(data) {
+ // משתנה שישמור את התוכן של הטבלה שיתעדכן בכל איטרציה של הלולאה
+ let htmlContent = '';
+
+ // לולאה שעוברת על כל האיברים מהמערך שהתקבל מהתשובה של השרת
+ for (let post of data) {
+ htmlContent += `
+