diff --git a/frontend/application/frontend/api/PostClient.py b/frontend/application/frontend/api/PostClient.py
index 1a7ec0d25ff1f76260b2a932174a385da7f08cad..f7665bbabd3f7a537b6081598670b6a4c3070369 100644
--- a/frontend/application/frontend/api/PostClient.py
+++ b/frontend/application/frontend/api/PostClient.py
@@ -30,6 +30,18 @@ class PostClient:
 
         return response
 
+    def get_search(query):
+        url = 'http://' + PostClient.post_service  + '/api/search/' + str(query)
+        response = requests.request(method="GET", url=url)
+
+        if response.status_code == 404:
+            return response.status_code
+
+        response = response.json()
+        # print(response)
+
+        return response
+
     def get_comment(post_id, comment_id):
         url = 'http://' + PostClient.post_service + '/api/' + str(post_id) + '/' + str(comment_id)
         response = requests.request(method="GET", url=url)
diff --git a/frontend/application/frontend/views.py b/frontend/application/frontend/views.py
index b7466bd1977ee2998621652cbb22c1676459f99e..b5058dd50bfb8cecea74c9e0eb1e9b442c7fcc11 100644
--- a/frontend/application/frontend/views.py
+++ b/frontend/application/frontend/views.py
@@ -14,6 +14,7 @@ import secrets
 from PIL import Image
 from flask import send_file
 from os import environ, path
+from difflib import SequenceMatcher
 
 @login_manager.user_loader
 def load_user(user_id):
@@ -137,7 +138,30 @@ def categories(category = None):
         return redirect(url_for('frontend.get_posts'))  
 
     return render_template('forum/index.html',
-                           data=zip(category_posts,image_urls), category=category) 
+                           data=zip(category_posts,image_urls), category=category)
+
+
+@frontend_blueprint.route('/search', methods=['GET','POST'])
+def search():
+    if len(session)<4:
+        return redirect(url_for('frontend.login_route'))
+
+    form = forms.SearchForm(request.form)
+    words = form.keywords.data
+
+    image_urls = []
+    posts = PostClient.get_search(words)
+
+    if posts == 404:
+        flash('No search result found', 'fail')
+        return redirect(url_for('frontend.get_posts')) 
+
+    for post in posts:
+        user = UserClient.get_otheruser(post['user_id'])
+        image_urls.append(user['image_url']) 
+
+    return render_template('forum/index.html',
+                           data=zip(posts,image_urls))  
 
 
 def save_post_image(image_file):
diff --git a/frontend/application/templates/navbar.html b/frontend/application/templates/navbar.html
index dc8f552f6c984970299ce8638577084a18140ffb..fca276562ebca11b4658312bf2238a2456739b9c 100644
--- a/frontend/application/templates/navbar.html
+++ b/frontend/application/templates/navbar.html
@@ -3,6 +3,13 @@
       <ul class="nav navbar-nav">
         <li><a href="{{ url_for('frontend.get_posts') }}" class="navbar-brand">SurreySocial</a></li>
       </ul>
+      <form action="{{ url_for('frontend.search') }}" method="POST">
+         <input type="text" id="keywords" name="keywords" placeholder="Search content keywords
+         ">
+        <ul class="nav navbar-nav">
+        <li><a class="btn btn--link" href="{{ url_for('frontend.search') }}">Search</a></li>
+        </ul>
+      </form>
       <ul class="nav navbar-nav pull-right">
         <li><a class="btn btn--link" href="{{ url_for('frontend.logout') }}">Logout</a></li>
       </ul>
diff --git a/post-service/application/models.py b/post-service/application/models.py
index 3fecb837f25e3840737e063a9b1ed2b57570800d..b59ae4872af9debffb98ace3fa581d619240659e 100644
--- a/post-service/application/models.py
+++ b/post-service/application/models.py
@@ -3,6 +3,7 @@ from . import db
 from datetime import datetime
 
 class Post(db.Model):
+    __searchable__ = ['title','content']
     id = db.Column(db.Integer, primary_key=True)
     user_id = db.Column(db.Integer)
     user_name = db.Column(db.String(255), nullable=False)
diff --git a/post-service/application/post_api/routes.py b/post-service/application/post_api/routes.py
index 0bdc961fd2428fe4946849371997a9e0f5677a61..9a1c7de891e0a30ec009f54dcd686cc55e855fc3 100644
--- a/post-service/application/post_api/routes.py
+++ b/post-service/application/post_api/routes.py
@@ -18,6 +18,22 @@ def get_posts():
     response = jsonify(data)
     return response
 
+
+@post_api_blueprint.route('/api/search/<query>', methods=['GET'])
+def get_search(query):
+    responses = []
+    query = query.replace(" ", "%")
+
+    for row in Post.query.filter(Post.content.like('%'+query+'%')).order_by(Post.date_added.desc()).all():
+        responses.append(row.to_json())
+
+    if responses == []:
+        abort(404) 
+
+    response = jsonify(responses)
+    return response
+
+
 @post_api_blueprint.route('/api/<int:post_id>', methods=['GET'])
 def get_post(post_id):
     responses = []
diff --git a/post-service/instance/posts-service.db b/post-service/instance/posts-service.db
index a04cec11ce5c881e4ea16be66fdc7e5fe1705e3e..22429d9bb99fd02a1d1b643f9d1a42f31970fd7b 100644
Binary files a/post-service/instance/posts-service.db and b/post-service/instance/posts-service.db differ
diff --git a/user-service/instance/users-service.db b/user-service/instance/users-service.db
index 683a2edb7ee3a1cfcf8ea88e445a618df676d5d5..a0b581d7b48cbdebfc661ed95e2d2becf155f752 100644
Binary files a/user-service/instance/users-service.db and b/user-service/instance/users-service.db differ