diff --git a/database_helper.py b/database_helper.py
new file mode 100644
index 0000000000000000000000000000000000000000..588b37b01b8305418bb6e6a74220e725a87779e8
--- /dev/null
+++ b/database_helper.py
@@ -0,0 +1,158 @@
+import sqlite3
+from flask import g
+from sqlite3 import Error
+
+DATABASE = "database.db"
+
+
+def connect_database():
+    conn = None
+    try:
+        conn = sqlite3.connect(DATABASE)
+    except Error as e:
+        print(e)
+    return conn
+
+
+def query_db(query):
+    try:
+        db = getattr(g, "_database", None)
+        if db is None:
+            db = connect_database()
+        cur = db.execute(query)
+        rows = cur.fetchall()
+        db.commit()
+        db.close()
+        return {
+            "status": True,
+            "data": rows,
+        }
+    except Error as e:
+        print(e)
+        return {"status": False, "data": str(e)}
+
+
+def user_exists_email(email):
+    query_str = "SELECT * FROM User WHERE email = '" + email + "'"
+    result = query_db(query_str)
+
+    if len(result["data"]) == 0:
+        return False
+    else:
+        return True
+
+
+def find_user_by_email(email):
+    query_str = "SELECT * FROM User WHERE email = '" + email + "'"
+    return query_db(query_str)
+
+
+def create_user(email, password, firstname, familyname, gender, city, country):
+    query_str = (
+        "INSERT INTO User (email, password, firstname, familyname, gender, city, country) VALUES("
+        + "'"
+        + email
+        + "','"
+        + password
+        + "','"
+        + firstname
+        + "','"
+        + familyname
+        + "','"
+        + gender
+        + "','"
+        + city
+        + "','"
+        + country
+        + "')"
+    )
+
+    return query_db(query_str)
+
+
+def find_user_by_email_password(email, password):
+    query_str = (
+        "SELECT * FROM User WHERE email= "
+        + "'"
+        + email
+        + "' AND password= '"
+        + password
+        + "'"
+    )
+    return query_db(query_str)
+
+
+def add_user_email_token(email, token):
+    token = str(token)
+    query_str = (
+        "INSERT INTO LoggedIn (email, token) VALUES("
+        + "'"
+        + email
+        + "','"
+        + token
+        + "')"
+    )
+    return query_db(query_str)
+
+
+def remove_token(token):
+    query_str = "DELETE FROM LoggedIn WHERE token = " + "'" + token + "'"
+    return query_db(query_str)
+
+def remove_logged_in_session(email):
+    query_str = "DELETE FROM LoggedIn WHERE email = " + "'" + email + "'"
+    return query_db(query_str)
+
+def find_token(token):
+    query_str = "SELECT * FROM LoggedIn WHERE token = " + "'" + token + "'"
+    return query_db(query_str)
+
+def find_token_by_email(email):
+    query_str = "SELECT * FROM LoggedIn WHERE email = " + "'" + email + "'"
+    return query_db(query_str)
+    
+
+def token_exist(token):
+    query_str = "SELECT * FROM LoggedIn WHERE token = " + "'" + token + "'"
+    result = query_db(query_str)
+
+    if len(result["data"]) == 0:
+        return False
+    else:
+        return True
+
+
+def change_password(email, newPassword):
+    newPassword = str(newPassword)
+    query_str = (
+        "UPDATE User SET password = "
+        + "'"
+        + newPassword
+        + "'"
+        + " WHERE email = "
+        + "'"
+        + email
+        + "'"
+    )
+
+    return query_db(query_str)
+
+
+def get_message_from_email(email):
+    query_str = "SELECT * FROM Messages WHERE email = " + "'" + email + "' OR recipient= '" + email + "'"
+    return query_db(query_str)
+
+
+def add_message_and_email(email, message, recipient):
+    # curr_user_email, message, recipient_email
+    query_str = (
+        "INSERT INTO Messages (email, content, recipient) VALUES("
+        + "'"
+        + email
+        + "','"
+        + message
+        + "','"
+        + recipient
+        + "')"
+    )
+    return query_db(query_str)