diff --git a/app/lib/main.dart b/app/lib/main.dart
index bff144024437ae2f42b7df9fecce02ce0b1142c9..06166efbafb957925fd35e6152f243b5dab59cc9 100644
--- a/app/lib/main.dart
+++ b/app/lib/main.dart
@@ -1,8 +1,11 @@
+import 'dart:js_interop';
+
 import 'package:flutter/material.dart';
 import 'package:flutter_map/flutter_map.dart';
 import 'package:latlong2/latlong.dart'; // Import LatLng class from the latlong package
 import 'dart:async';
 import 'dart:io';
+import 'dart:convert';
 
 
 const String port = "8443";
@@ -27,23 +30,6 @@ class App extends StatelessWidget {
   }
 }
 
-// fetchData requests data from the update_map endpoint
-Future<void> fetchData() async {
-  try {
-    // Custom HTTP client
-    HttpClient client = HttpClient()
-      ..badCertificateCallback = // NB: temporary disable SSL certificate validation
-          (X509Certificate cert, String host, int port) => true;
-
-    var request =  await client.getUrl(Uri.parse(serverURI+mapEndpoint));
-    var response = await request.close();
-
-    print('Response status: ${response.statusCode}');
-  } catch (e) {
-    print('Failed to connect to the server: $e');
-  }
-}
-
 class DefaultPage extends StatefulWidget {
   const DefaultPage({Key? key}) : super(key: key);
 
@@ -59,26 +45,68 @@ class MarkerData {
   MarkerData({required this.location, required this.size, required this.color});
 }
 
+// parseMarkerData parses jsonData into an object of type MakerData
+List<MarkerData> parseMarkerData(String jsonString) {
+  final parsed = json.decode(jsonString);
+  return List<MarkerData>.from(parsed.map((data) => MarkerData(
+    location: LatLng(data['latitude'], data['longitude']),
+    size: data['size'].toDouble(),
+    color: parseColor(data['color']),
+  )));
+}
+
+Color parseColor(String colorString) {
+  switch (colorString) {
+    case 'blue':
+      return Colors.blue;
+    case 'red':
+      return Colors.red;
+    case 'green':
+      return Colors.green;
+    default:
+      return Colors.black; // Default color if unrecognized
+  }
+}
+
 class _DefaultPageState extends State<DefaultPage> {
   late Timer _timer;
 
-  final List<MarkerData> markerList = [
-    MarkerData(location: LatLng(60.7266, 10.9771), size: 50.0, color: Colors.blue),
-    MarkerData(location: LatLng(60.8366, 10.8171), size: 70.0, color: Colors.red),
-    MarkerData(location: LatLng(60.7366, 10.8471),  size: 60.0, color: Colors.green),
-  ];
+  List<MarkerData> markerList = [];
+
+  // fetchMarkerData requests data from the update_map endpoint
+  Future<void> fetchMarkerData() async {
+    try {
+      // Custom HTTP client
+      HttpClient client = HttpClient()
+        ..badCertificateCallback = // NB: temporary disable SSL certificate validation
+            (X509Certificate cert, String host, int port) => true;
+
+      var request =  await client.getUrl(Uri.parse(serverURI+mapEndpoint));
+      var response = await request.close();
+
+      // Parse json response to list of MarkerData objects if request is ok
+      if (response.statusCode == 200) {
+        var responseBody = await response.transform(utf8.decoder).join();
+        markerList = parseMarkerData(responseBody);
+      } else {
+        print('Request failed with status: ${response.statusCode}');
+      }
+    } catch (e) {
+      print('Failed to connect to the server: $e');
+    }
+  }
 
   // Timer initializer
   @override
   void initState() {
     super.initState();
-    // Call fetchData when the widget is first created
-    fetchData();
+    // Call fetchMarkerData when the widget is first created
+    fetchMarkerData();
 
-    // Schedule fetchData to run periodically based on fetchInterval const
+    // Schedule fetchMarkerData to run periodically based on fetchInterval const
     const Duration fiveMinutes = Duration(minutes: fetchInterval);
     _timer = Timer.periodic(fiveMinutes, (timer) {
-      fetchData();
+      fetchMarkerData();
     });
   }
 
diff --git a/server/__pycache__/consts.cpython-311.pyc b/server/__pycache__/consts.cpython-311.pyc
index 3de30302111c2cd3d3561aa908cd47ab136cdbed..9ff52d124944e7e6b5fd6348a75357356a3572d9 100644
Binary files a/server/__pycache__/consts.cpython-311.pyc and b/server/__pycache__/consts.cpython-311.pyc differ
diff --git a/server/__pycache__/data_structs.cpython-311.pyc b/server/__pycache__/data_structs.cpython-311.pyc
index 637f0e2f98054a92e7adcb5e251233a6d0ad1dbd..8dea98bcfe20ac3a6dcfb4290cc498c0b28974ca 100644
Binary files a/server/__pycache__/data_structs.cpython-311.pyc and b/server/__pycache__/data_structs.cpython-311.pyc differ
diff --git a/server/data_structs.py b/server/data_structs.py
index b9b8358993b94c6244e9e31560665e23ac38c074..6e289e54101abe911d73f9c6175ba2f1ea87ef0b 100644
--- a/server/data_structs.py
+++ b/server/data_structs.py
@@ -21,9 +21,17 @@ class DataPoint:
         self.accuracy = accuracy
 
 
+# Template for map marker data
 class MarkerTemplate:
-    def __init__(self, longitude, latitude, size, color):
-        self.longitude = longitude
+    def __init__(self, latitude, longitude, size, color):
         self.latitude = latitude
+        self.longitude = longitude
         self.size = size
-        self.color = color
\ No newline at end of file
+        self.color = color
+    def to_dict(self):
+        return {
+            'latitude': self.latitude,
+            'longitude': self.longitude,
+            'size': self.size,
+            'color': self.color
+        }
\ No newline at end of file
diff --git a/server/main.py b/server/main.py
index 06f19b3298012852308a642eb0f2313e2ab3c06b..97253949bb348a70b72262b5eb0e1c6a663edd7c 100644
--- a/server/main.py
+++ b/server/main.py
@@ -3,8 +3,7 @@ from http.server import HTTPServer, BaseHTTPRequestHandler
 from pymongo import MongoClient
 from pymongo.server_api import ServerApi
 from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PATH, SSL_KEY_PATH, HOST, PORT
-from map.extract_coordinates import extract_coordinates
-from data_structs import DataPoint
+from map.get_markers import get_markers
 import atexit
 import ssl
 
@@ -32,16 +31,14 @@ class IceHTTP(BaseHTTPRequestHandler):
             self.end_headers()
             self.wfile.write(b"Root path hit!")
         elif self.path == '/update_map':
-            # Get response from process_data_point
-            response, status_code = extract_coordinates()
-
-            # Send the response
-            self.send_response(status_code)
+            # Send the response with a status code (e.g., 200 for success)
+            self.send_response(200)
             self.send_header("Content-type", "application/json")
             self.end_headers()
 
-            # Write response data to the response
-            self.wfile.write(response.get_data())
+            # Write the JSON data directly to the response
+            markers_data = get_markers()
+            self.wfile.write(markers_data.encode('utf-8'))
 
         elif self.path == '/test_endpoint':
             self.send_response(200)
diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6b2fcc46f8cf164508bc3de6dd6af98c1ca63601
Binary files /dev/null and b/server/map/__pycache__/get_markers.cpython-311.pyc differ
diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index dc632c004204d9b15aac9c6fbc18ae8ce1cc239e..f59ca2b4941c28df79d0450d713596da3c95e208 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -1,4 +1,10 @@
+import os
+import sys
+current_dir = os.path.dirname(__file__)
+parent_dir = os.path.abspath(os.path.join(current_dir, '..'))
+sys.path.append(parent_dir)
 from data_structs import MarkerTemplate
+from flask import json
 
 def get_markers():
     testData = [