--- a
+++ b/server/app.py
@@ -0,0 +1,80 @@
+from flask import Flask, send_from_directory, request
+from flask_cors import CORS
+import json
+import csv
+import model
+
+import os
+os.chdir(__file__.replace(os.path.basename(__file__), ''))
+
+
+app = Flask(__name__, static_folder='../client/build')
+CORS(app)
+
+TEST_CASE_DATA_PATH = "../model/data/raw_subset"
+
+
+# Serve React App
+@app.route('/', defaults={'path': ''})
+@app.route('/<path:path>')
+def serve(path):
+    if path != "" and os.path.exists(app.static_folder + '/' + path):
+        return send_from_directory(app.static_folder, path)
+    else:
+        return send_from_directory(app.static_folder, 'index.html')
+
+
+@app.route('/predict', methods=['POST'])
+def predict():
+    data = []
+    for feat in model.selected_feats:
+        data.append(request.json[feat])
+    
+    result, prob = model.predict(data)
+    return json.dumps({
+        'res': result,
+        'prob': prob,
+        'labels': model.labels
+    })
+
+
+@app.route('/test/<int:num>')
+def test_case(num):
+    with open(f"{TEST_CASE_DATA_PATH}/BVP_{num}.csv", 'r') as f:
+        csvReader = csv.DictReader(f)
+        BVP = []
+        for rows in csvReader:
+            key = rows['seconds']
+            if rows['BVP']:
+                BVP.append({
+                    "timestamp": round(int(key)/1000, 1),
+                    "value": rows['BVP']
+                })
+        
+        
+    with open(f"{TEST_CASE_DATA_PATH}/EDA_{num}.csv", 'r') as f:
+        csvReader = csv.DictReader(f)
+        EDA = []
+        for rows in csvReader:
+            key = rows['seconds']
+            if rows['EDA']:
+                EDA.append({
+                    "timestamp": round(int(key)/1000, 1),
+                    "value": rows['EDA']
+                })
+
+    return json.dumps({
+        "BVP": BVP,
+        "EDA": EDA
+    })
+
+@app.route('/testresult/<int:num>')
+def test_result(num):
+    with open(f"test_results/test{num}.json", 'r') as f:
+        res = f.read()
+
+    res = json.dumps(res)
+    return res
+
+if __name__ == '__main__':
+    app.run(use_reloader=True, host='0.0.0.0', port=80, threaded=True)
\ No newline at end of file