diff --git a/README.md b/README.md
index 4829d7252928b2fe3062c98cb2bbca42e4026c96..09a2229a10312ad283fc0330b78edec339880a99 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,9 @@
 # cwblog
-
-
-
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.surrey.ac.uk/group20cw/cwblog.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.surrey.ac.uk/group20cw/cwblog/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+TO RUN IT USING DOCKER SERVICES, MAKE SURE ALL .ENV FILES IN SERVICES ARE AS 
+CONFIGURATION_SETUP="config.ProductionConfig"
+THEN YOU CAN RUN PROJECT "sudo bash run.sh"
+
+IF YOU WOULD LIKE TO USE DEVELOPMENT SERVER AND RUN APPLICATION IN LOCALHOST
+GO INTO ALL SERVICES, CHANGE .ENV FILES AND CHANGE THEM AS
+CONFIGURATION_SETUP="config.DevelopmentConfig"
+THEN RUN SERVICES USING "python3 run.py" command for each services. 
diff --git a/frontend/application/frontend/api/PostClient.py b/frontend/application/frontend/api/PostClient.py
index f7665bbabd3f7a537b6081598670b6a4c3070369..d73e2b465cb12ba64944610b5ce37593e8e0d9ed 100644
--- a/frontend/application/frontend/api/PostClient.py
+++ b/frontend/application/frontend/api/PostClient.py
@@ -8,8 +8,30 @@ class PostClient:
 
     post_service = app.config['POST_SERVICE']
 
-    def get_posts():        
-        url = 'http://' + PostClient.post_service + '/api/posts'
+    def get_posts(per_page,offset):        
+        url = 'http://' + PostClient.post_service + '/api/posts/' + str(per_page) + '/' + str(offset)
+        response = requests.request(method="GET", url=url)
+
+        if response.status_code == 404:
+            return response.status_code
+            
+        response = response.json()
+
+        return response
+
+    def get_category_posts(category,per_page,offset):        
+        url = 'http://' + PostClient.post_service + '/api/posts/'+ str(category) + '/' + str(per_page) + '/' + str(offset)
+        response = requests.request(method="GET", url=url)
+
+        if response.status_code == 404:
+            return response.status_code
+            
+        response = response.json()
+
+        return response
+
+    def get_user_posts(user_id):        
+        url = 'http://' + PostClient.post_service + '/api/posts/'+ str(user_id)
         response = requests.request(method="GET", url=url)
 
         if response.status_code == 404:
@@ -30,15 +52,14 @@ class PostClient:
 
         return response
 
-    def get_search(query):
-        url = 'http://' + PostClient.post_service  + '/api/search/' + str(query)
+    def get_search(query,per_page,offset):
+        url = 'http://' + PostClient.post_service  + '/api/search/' + str(query) + '/' + str(per_page) + '/' + str(offset)
         response = requests.request(method="GET", url=url)
 
         if response.status_code == 404:
             return response.status_code
 
         response = response.json()
-        # print(response)
 
         return response
 
diff --git a/frontend/application/frontend/views.py b/frontend/application/frontend/views.py
index 3f427dfd14afeb098f23909748a3a54b81fa8f19..12f2bc72a617b95f0c742b80e481f6ab067126c3 100644
--- a/frontend/application/frontend/views.py
+++ b/frontend/application/frontend/views.py
@@ -116,74 +116,116 @@ def login_route():
 
 
 @frontend_blueprint.route('/', methods=['GET'])
-def get_posts():
+@frontend_blueprint.route('/page/<int:page>', methods=['GET'])
+def get_posts(page=1):
+    print(session)
+
     if len(session)<4:
         return redirect(url_for('frontend.login_route'))
 
     categories = []
     image_urls = []
-    posts = PostClient.get_posts()
+
+    per_page = 4
+    offset = (page - 1) * per_page
+    posts = PostClient.get_posts(per_page,offset)
 
     if posts == 404:
-        return render_template('forum/index.html') 
+        return redirect(url_for('frontend.get_posts'))
+
+    page_limit = True
+    offset_ = (page) * per_page
+    next_posts = PostClient.get_posts(per_page,offset_)
+    if next_posts == 404:
+        page_limit = False
+    if len(posts) < per_page:
+        page_limit = False
 
     for post in posts:
-        categories.append(post['category'])
         user = UserClient.get_otheruser(post['user_id'])
         image_urls.append(user['image_url'])
-    categories = sorted(set(categories))   
+
+    categories = ['activities','courses&modules','societies',
+    'student_union','accommodation','transportation','lost&found','sale&rental','other']   
 
     return render_template('forum/index.html',
-                           data=zip(posts,image_urls), categories=categories)
+                           data=zip(posts,image_urls), categories=categories,page=page, page_limit=page_limit)
 
 
-@frontend_blueprint.route('/category/<category>', methods=['GET'])
-def categories(category = None):
+@frontend_blueprint.route('/category/<category>/', methods=['GET'])
+@frontend_blueprint.route('/category/<category>/<int:page>', methods=['GET'])
+def categories(category, page=1):
     if len(session)<4:
         return redirect(url_for('frontend.login_route'))
 
-    category_posts = []
     image_urls = []
-    posts = PostClient.get_posts()  
+    per_page = 4
+    offset = (page - 1) * per_page
+    posts = PostClient.get_category_posts(category,per_page,offset)  
 
     if posts == 404:
         flash('No post found in the category', 'fail')
-        return render_template('forum/index.html') 
+        return redirect(url_for('frontend.get_posts')) 
+
+    page_limit = True
+    offset_ = (page) * per_page
+    next_posts = PostClient.get_category_posts(category,per_page,offset_)
+    if next_posts == 404:
+        page_limit = False
+    if len(posts) < per_page:
+        page_limit = False
 
     for post in posts:
-        if post['category'] == category:
-            category_posts.append(post)
             user = UserClient.get_otheruser(post['user_id'])
             image_urls.append(user['image_url'])
 
-    if category_posts == []:
-        return redirect(url_for('frontend.get_posts'))  
+    categories = ['activities','courses&modules','societies',
+    'student_union','accommodation','transportation','lost&found','sale&rental','other']   
 
-    return render_template('forum/index.html',
-                           data=zip(category_posts,image_urls), category=category)
+    return render_template('forum/category.html',
+                           data=zip(posts,image_urls), category=category, categories=categories,page=page, page_limit=page_limit)
 
 
-@frontend_blueprint.route('/search', methods=['GET','POST'])
-def search():
+@frontend_blueprint.route('/search/', methods=['GET','POST'])
+@frontend_blueprint.route('/search/<int:page>', methods=['GET','POST'])
+def search(page=1):
     if len(session)<4:
         return redirect(url_for('frontend.login_route'))
 
     form = forms.SearchForm(request.form)
-    words = form.keywords.data
+    form_words = form.keywords.data
+
+    if request.method == 'POST':
+        session["words"] = form_words
+
+    words = session.get('words', '')
 
     image_urls = []
-    posts = PostClient.get_search(words)
+    per_page = 4
+    offset = (page - 1) * per_page
+    posts = PostClient.get_search(words,per_page,offset)
 
     if posts == 404:
-        flash('No search result found', 'fail')
-        return redirect(url_for('frontend.get_posts')) 
+        flash('No result found', 'fail')
+        return redirect(url_for('frontend.get_posts'))
+
+    page_limit = True
+    offset_ = (page) * per_page
+    next_posts = PostClient.get_search(words,per_page,offset_)
+    if next_posts == 404:
+        page_limit = False
+    if len(posts) < per_page:
+        page_limit = False
 
     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))  
+    categories = ['activities','courses&modules','societies',
+    'student_union','accommodation','transportation','lost&found','sale&rental','other']   
+
+    return render_template('forum/search.html',
+                           data=zip(posts,image_urls), categories=categories,page=page, page_limit=page_limit)
 
 
 def save_post_image(image_file):
@@ -192,7 +234,7 @@ def save_post_image(image_file):
     picture_filename = random_hex + file_ext
     picture_path = path.join(current_app.root_path,
                              'static/images', picture_filename)
-    output_size = (200, 200)
+    output_size = (500, 500)
     pic = Image.open(image_file)
     pic.thumbnail(output_size)
     pic.save(picture_path)
@@ -213,8 +255,10 @@ def save_user_image(image_file):
 
     return picture_filename 
 
-@frontend_blueprint.route('/category/images/users/<image_id>' , methods=['GET'])
+
 @frontend_blueprint.route('/post/images/users/<image_id>' , methods=['GET'])
+@frontend_blueprint.route('/search/images/users/<image_id>' , methods=['GET'])
+@frontend_blueprint.route('/page/images/users/<image_id>' , methods=['GET'])
 @frontend_blueprint.route('/user/images/users/<image_id>' , methods=['GET'])
 @frontend_blueprint.route('/images/users/<image_id>' , methods=['GET'])
 def get_user_image(image_id):
@@ -225,6 +269,8 @@ def get_user_image(image_id):
 
 
 @frontend_blueprint.route('/post/images/<image_id>' , methods=['GET'])
+@frontend_blueprint.route('/page/static/images/<image_id>' , methods=['GET'])
+@frontend_blueprint.route('/search/static/images/<image_id>' , methods=['GET'])
 def get_post_image(image_id):
     picture_path = path.join(current_app.root_path,
                              'static/images', image_id)
@@ -232,6 +278,13 @@ def get_post_image(image_id):
     return send_file(picture_path, mimetype='image/gif')
 
 
+categories = ['activities','courses&modules','societies',
+'student_union','accommodation','transportation','lost&found','sale&rental','other'] 
+for category in categories:
+    frontend_blueprint.add_url_rule(f"/category/{category}/images/users/<image_id>", view_func=get_user_image, methods=['GET'])
+    frontend_blueprint.add_url_rule(f"/category/{category}/static/images/<image_id>", view_func=get_post_image, methods=['GET'])
+
+
 @frontend_blueprint.route('/post/new', methods=['GET','POST'])
 def create_post():
     if len(session)<4:
@@ -352,6 +405,7 @@ def delete_post(post_id):
 
     return redirect(url_for('frontend.get_posts'))
 
+
 @frontend_blueprint.route('/logout', methods=['GET'])
 def logout():
     if len(session)<4:
@@ -376,11 +430,7 @@ def display_user(user_id):
         return redirect(url_for('frontend.display_currentuser'))
 
     user_posts = []
-    posts = PostClient.get_posts()
-    if posts != 404:
-        for post in posts:
-            if post['user_id'] == int(response['id']):
-                user_posts.append(post)
+    posts = PostClient.get_user_posts(response['id'])
 
     content = {
     'name': response['full_name'],
@@ -389,7 +439,7 @@ def display_user(user_id):
     'image': response['image_url']
     }
 
-    return render_template('forum/user.html', **content, posts=user_posts)
+    return render_template('forum/user.html', **content, posts=posts)
 
 
 @frontend_blueprint.route('/user/profile', methods=['GET','POST'])
@@ -398,15 +448,16 @@ def display_currentuser():
         return redirect(url_for('frontend.login_route'))
 
     user_posts = []
-    posts = PostClient.get_posts()
-    if posts != 404:
-        for post in posts:
-            if post['user_id'] == session['user']['id']:
-                user_posts.append(post)
+    posts = PostClient.get_user_posts(session['user']['id'])
 
     form = forms.AccountUpdateForm()
     if request.method == "POST":
         if form.validate_on_submit():
+            
+            if not any([form.image.data, form.first_name.data, form.last_name.data, form.phone_number.data, form.user_role.data]):
+                flash('At least one field required', 'error')
+                return redirect(url_for('frontend.display_currentuser'))
+
             if form.image.data:
                 post_image = save_user_image(form.image.data)
                 form.image_url = post_image
@@ -432,4 +483,4 @@ def display_currentuser():
             flash('Account update failed', 'fail')
             return redirect(url_for('frontend.display_currentuser'))
 
-    return render_template('forum/profile.html', user=session['user'], posts=user_posts, form=form)
\ No newline at end of file
+    return render_template('forum/profile.html', user=session['user'], posts=posts, form=form)
\ No newline at end of file
diff --git a/frontend/application/static/images/1cb98311fa2e5d79.jpg b/frontend/application/static/images/1cb98311fa2e5d79.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b746ad183c8015260bee7e40038d10eafe2541b8
Binary files /dev/null and b/frontend/application/static/images/1cb98311fa2e5d79.jpg differ
diff --git a/frontend/application/static/images/239083512eeaba24.jpg b/frontend/application/static/images/239083512eeaba24.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b7f5716ea81e9977059833080a716ed0a84e799d
Binary files /dev/null and b/frontend/application/static/images/239083512eeaba24.jpg differ
diff --git a/frontend/application/static/images/7700d26acb7035dc.jpg b/frontend/application/static/images/7700d26acb7035dc.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b746ad183c8015260bee7e40038d10eafe2541b8
Binary files /dev/null and b/frontend/application/static/images/7700d26acb7035dc.jpg differ
diff --git a/frontend/application/static/images/794c578d42d2a1fb.png b/frontend/application/static/images/794c578d42d2a1fb.png
new file mode 100644
index 0000000000000000000000000000000000000000..0072163bdb83d1591ddd3e55cf955c375902d644
Binary files /dev/null and b/frontend/application/static/images/794c578d42d2a1fb.png differ
diff --git a/frontend/application/static/images/7ddafe8f43d811a8.png b/frontend/application/static/images/7ddafe8f43d811a8.png
new file mode 100644
index 0000000000000000000000000000000000000000..0072163bdb83d1591ddd3e55cf955c375902d644
Binary files /dev/null and b/frontend/application/static/images/7ddafe8f43d811a8.png differ
diff --git a/frontend/application/static/images/94dab1504063fe9e.jpg b/frontend/application/static/images/94dab1504063fe9e.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b746ad183c8015260bee7e40038d10eafe2541b8
Binary files /dev/null and b/frontend/application/static/images/94dab1504063fe9e.jpg differ
diff --git a/frontend/application/static/images/dfe3f6bc4d0ba617.jpg b/frontend/application/static/images/dfe3f6bc4d0ba617.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..88138f054c3dceabede0508508a813d15cc1bcb5
Binary files /dev/null and b/frontend/application/static/images/dfe3f6bc4d0ba617.jpg differ
diff --git a/frontend/application/static/images/users/3362eefed3da4c9a.jpg b/frontend/application/static/images/users/3362eefed3da4c9a.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..88138f054c3dceabede0508508a813d15cc1bcb5
Binary files /dev/null and b/frontend/application/static/images/users/3362eefed3da4c9a.jpg differ
diff --git a/frontend/application/static/images/users/6dfd74a463184028.jpg b/frontend/application/static/images/users/6dfd74a463184028.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..b746ad183c8015260bee7e40038d10eafe2541b8
Binary files /dev/null and b/frontend/application/static/images/users/6dfd74a463184028.jpg differ
diff --git a/frontend/application/templates/_messages.html b/frontend/application/templates/_messages.html
index 1cc31eb6655453eb72ef9313539ad19f6f594dfe..13ea54bf83afe7646a9e0dd289cf76998d1bccd1 100644
--- a/frontend/application/templates/_messages.html
+++ b/frontend/application/templates/_messages.html
@@ -27,6 +27,10 @@
         background-color: #f44336;
         border: 1px solid #f44336;
       }
+      .flash-messages__item--fail {
+        background-color: #f44336;
+        border: 1px solid #f44336;
+      }
       .flash-messages__item--warning {
         background-color: #ff9800;
         border: 1px solid #ff9800;
@@ -45,6 +49,9 @@
       .flash-messages__icon--error {
         background-color: #f44336;
       }
+      .flash-messages__icon--fail {
+        background-color: #f44336;
+      }
       .flash-messages__icon--warning {
         background-color: #ff9800;
       }
diff --git a/frontend/application/templates/forum/category.html b/frontend/application/templates/forum/category.html
new file mode 100644
index 0000000000000000000000000000000000000000..bdd075538e981f60eb511f3ae44ff215847f1f48
--- /dev/null
+++ b/frontend/application/templates/forum/category.html
@@ -0,0 +1,116 @@
+{% extends "base_col_1.html" %}
+{% block title %} CATEGORY RESULTS {% endblock %}
+
+{% block pageContent%}
+
+<style>
+    body {
+        background-color: #f8f9fa;
+        color: #212529;
+    }
+
+    .card-header {
+        background-color: #c6e2ff;
+        color: white;
+    }
+
+    .nav-link.active {
+        background-color: #6c757d;
+        color: white;
+    }
+    .btn-outline-success:hover {
+      background-color: #218838;
+      border-color: #1e7e34;
+    }
+    .profile-image {
+      width: 60px;
+      height: 60px;
+      object-fit: ;
+      border-radius: 50%;
+    }
+    .post-image {
+      width: 100px;
+      height: 100px;
+      object-fit: contain;
+    }
+</style>
+
+<div>
+
+</div>
+
+<div class="col-md-6 gedf-main">
+    <div class="card gedf-card">
+        <div class="card-header">
+            <ul class="nav nav-tabs card-header-tabs" id="myTab" role="tablist">
+                <li class="nav-item">
+                    <a class="nav-link active" id="posts-tab" data-toggle="tab" href="#posts" role="tab" aria-controls="posts" aria-selected="true">Start a discussion</a>
+                </li>
+            </ul>
+        </div>
+        <div class="card-body">
+            <div class="tab-content" id="myTabContent">
+                <div class="tab-pane fade show active" id="posts" role="tabpanel" aria-labelledby="posts-tab">
+                    <div class="form-group">
+                        <label class="sr-only" for="message">post</label>
+                        <a class="btn btn--link" href="{{ url_for('frontend.create_post') }}">New Post</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    {% if page > 1 %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.categories',category=category, page=page-1) }}">Previous</a>
+    {% endif %}
+
+    {% if page_limit == True %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.categories', category=category, page=page+1) }}">Next</a>
+    {% endif %}
+
+    {% for post,image in data %}
+    <div class="card gedf-card">
+        <div class="card-header">
+            <div class="d-flex justify-content-between align-items-center">
+                <div class="d-flex justify-content-between align-items-center">
+                    <div class="mr-2">
+                        <img class="profile-image" src="images/users/{{ image }}">
+                    </div>
+                    <div class="ml-2">
+                        <div class="h5 m-0"><a href="{{ url_for('frontend.display_user', user_id=post.user_id) }}">{{ post['user_name'] }}</a></div>
+                    </div>
+                </div>
+                <div>
+                    <div class="dropdown">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="card-body">
+            <div class="text-muted h7 mb-2"> <i class="fa fa-clock-o"></i>{{ post['date_added']}}</div>
+            <a class="card-link" href="{{ url_for('frontend.display_post', post_id=post.id) }}">
+                <h5 class="card-title">{{ post['title'] }}</h5>
+            </a>
+            <p class="card-text">{{ post.content[:40] | safe }}{% if post.content|length > 30 %}...{% endif %}</p>
+            
+            {% if post['image_url'] != '' %}
+            <img class="post-image" src="static/images/{{ post['image_url'] }}">
+            {% endif %}  
+        </div>
+        <div class="card-footer">
+            <a href="{{ url_for('frontend.display_post', post_id=post.id) }}" class="card-link"><i class="fa fa-comment"></i> Comment</a>
+        </div>
+    </div>
+{% endfor %}
+
+{% if page > 1 %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.categories',category=category, page=page-1) }}">Previous</a>
+{% endif %}
+
+{% if page_limit == True %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.categories', category=category, page=page+1) }}">Next</a>
+{% endif %}
+
+</div>
+
+{% endblock %}
diff --git a/frontend/application/templates/forum/index.html b/frontend/application/templates/forum/index.html
index dadd9a6b7c2bd4e0a30a2982330f9de43886ce3f..b1bb31a10fc07390dc844c4a80ccd75cbcec8fdd 100644
--- a/frontend/application/templates/forum/index.html
+++ b/frontend/application/templates/forum/index.html
@@ -1,5 +1,5 @@
 {% extends "base_col_1.html" %}
-{% block title %} Home Page {% endblock %}
+{% block title %} HOME PAGE {% endblock %}
 
 {% block pageContent%}
 
@@ -18,6 +18,15 @@
         background-color: #6c757d;
         color: white;
     }
+    .btn-outline-success:hover {
+      background-color: #218838;
+      border-color: #1e7e34;
+    }
+    .post-image {
+      width: 100px;
+      height: 100px;
+      object-fit: contain;
+    }
 </style>
 
 <div>
@@ -44,13 +53,22 @@
             </div>
         </div>
     </div>
+
+    {% if page > 1 %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.get_posts', page=page-1) }}">Previous</a>
+    {% endif %}
+
+    {% if page_limit == True %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.get_posts', page=page+1) }}">Next</a>
+    {% endif %}
+
     {% for post,image in data %}
     <div class="card gedf-card">
         <div class="card-header">
             <div class="d-flex justify-content-between align-items-center">
                 <div class="d-flex justify-content-between align-items-center">
                     <div class="mr-2">
-                        <img class="rounded-circle" width="45" src="images/users/{{ image }}">
+                        <img class="profile-image" src="images/users/{{ image }}">
                     </div>
                     <div class="ml-2">
                         <div class="h5 m-0"><a href="{{ url_for('frontend.display_user', user_id=post.user_id) }}">{{ post['user_name'] }}</a></div>
@@ -67,11 +85,11 @@
             <a class="card-link" href="{{ url_for('frontend.display_post', post_id=post.id) }}">
                 <h5 class="card-title">{{ post['title'] }}</h5>
             </a>
-            {% if post['image_url'] != '' %}
-        <img class="post-image" src="static/images/{{ post['image_url'] }}">
-        {% endif %}
-            <p class="card-text">{{ post.content | safe }}</p>
+            <p class="card-text">{{ post.content[:40] | safe }}{% if post.content|length > 30 %}...{% endif %}</p>
             
+            {% if post['image_url'] != '' %}
+            <img class="post-image" src="static/images/{{ post['image_url'] }}">
+            {% endif %}  
         </div>
         <div class="card-footer">
             <a href="{{ url_for('frontend.display_post', post_id=post.id) }}" class="card-link"><i class="fa fa-comment"></i> Comment</a>
@@ -79,6 +97,14 @@
     </div>
 {% endfor %}
 
+{% if page > 1 %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.get_posts', page=page-1) }}">Previous</a>
+{% endif %}
+
+{% if page_limit == True %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.get_posts', page=page+1) }}">Next</a>
+{% endif %}
+
 </div>
 
 {% endblock %}
diff --git a/frontend/application/templates/forum/post.html b/frontend/application/templates/forum/post.html
index 79b12d7bed989ea1245df2aeb763e9d7998e278f..5c50ab80a5dbdab8bd33d950f55399fff7802930 100644
--- a/frontend/application/templates/forum/post.html
+++ b/frontend/application/templates/forum/post.html
@@ -1,22 +1,41 @@
 {# application/templates/forum/post.html #}
 
-< <a class="home-btn" href="{{ url_for('frontend.get_posts') }}">Home</a>
+<style>
+.profile-image {
+  width: 60px;
+  height: 60px;
+  object-fit: ;
+  border-radius: 50%;
+}
+.user-image {
+  width: 45px;
+  height: 45px;
+  object-fit: ;
+  border-radius: 50%;
+}
+.post-image {
+  width: 125px;
+  height: 125px;
+  object-fit:contain;
+}
+.tile__author {
+  font-size: 16px;
+}
+</style>
 
+<title>POST PAGE</title>
+<a class="home-btn" href="{{ url_for('frontend.get_posts') }}">Home</a> 
 {% from 'macros.html' import displayField %}
+{% include '_messages.html' %}
 
 <br>
-<br>
-
-<div class="row latest">
       
   <!-- START posts -->
-<div class="col-md-8 offset-md-2">
+<div class="col-md-8">
   <div class="post-container">
-    <div class="tile tile--wide">
-      <div class="tile__content">
-        <div class="tile__author">
-          <img class="rounded-circle" width="45" src="images/users/{{ owner_image }}">
-          <h2 class="tile__title"><a href="{{ url_for('frontend.display_user', user_id=post.user_id) }}">{{ post['user_name'] }}</a></h2>
+        <div class="tile__author"> 
+          <img class="profile-image" src="images/users/{{ owner_image }}">
+          <h2 ><a href="{{ url_for('frontend.display_user', user_id=post.user_id) }}">{{ post['user_name'] }}</a></h2>
         </div>
         <div class="tile__header">
           {{ post['title'] }}
@@ -39,7 +58,7 @@
 
     <!-- START comments -->
 
-    <div class="comment-container" style="overflow-y: auto; height: 300px;>
+    <div class="comment-container" style="overflow-y: auto; height: 300px;">
       <h3 class="comment__title">COMMENTS</h3>
       {% if comments %}
       {% for comment, image in comments %}
@@ -48,7 +67,7 @@
           <div class="comment__bubble{% if current_user_id == comment['user_id'] %} comment__bubble--self{% endif %}">
             <div class="comment__avatar{% if current_user_id == comment['user_id'] %} comment__avatar--self{% endif %}">
               {% if current_user_id != comment['user_id'] %}
-              <img class="rounded-circle" width="45" src="images/users/{{ image }}">
+              <img class="user-image" src="images/users/{{ image }}">
               {% endif %}
             </div>
             {% if current_user_id != comment['user_id'] %}
diff --git a/frontend/application/templates/forum/profile.html b/frontend/application/templates/forum/profile.html
index db2360e3d61004610e1336a3092d4c78b128216b..ecc44eb215b442f2fbb9d774ba00766dcccba3bc 100644
--- a/frontend/application/templates/forum/profile.html
+++ b/frontend/application/templates/forum/profile.html
@@ -1,4 +1,6 @@
  <!DOCTYPE html>
+<title>MY PROFILE</title>
+{% include '_messages.html' %}
 <html>
   <head>
     <title>Login Page</title>
@@ -76,6 +78,12 @@
           width: 45%;
           margin-right: 20px;
         }
+      .profile-image {
+        width: 100px;
+        height: 100px;
+        object-fit: ;
+        border-radius: 50%;
+      }
       }
 
     </style>
@@ -87,39 +95,39 @@
 
     <div class="container">
       <div class="profile">
-        <img class="rounded-circle" width="100" src="images/users/{{session['user'].image_url }}">
+        <img class="profile-image" src="images/users/{{session['user'].image_url }}">
         <h2>{{user['first_name']}} {{user['last_name']}}</h2>
         <p>{{user['email']}}</p>
         <p>{{user['phone_number']}}</p>
         <p>{{user['user_role']}}</p>
-        <form action="{{ url_for('frontend.display_currentuser') }}" method="POST" enctype="multipart/formdata">
-{{ form.csrf_token }}
-<div class="form-input">
-<input type="file" id="image" name="image" placeholder="Upload new profile picture">
-</div>
-<div class="form-input">
-<label for="first_name">First Name:</label>
-<input type="text" id="first_name" name="first_name" value="{{user['first_name']}}">
-</div>
-<div class="form-input">
-<label for="last_name">Last Name:</label>
-<input type="text" id="last_name" name="last_name" value="{{user['last_name']}}">
-</div>
-<div class="form-input">
-<label for="phone_number">Phone Number:</label>
-<input type="text" id="phone_number" name="phone_number" value="{{user['phone_number']}}">
-</div>
-{% if user['user_role'] == 'student' %}
-<div class="form-input">
-<label for="user_role">User Role:</label>
-<select id="user_role" name="user_role">
-<option value=""></option>
-<option value="graduate">Graduate</option>
-</select>
-</div>
-{% endif %}
-<input class="form-submit" type="submit" value="Update">
-</form>
+        <form action="{{ url_for('frontend.display_currentuser') }}" method="POST", enctype="multipart/form-data">
+        {{ form.csrf_token }}
+        <div class="form-input">
+        <input type="file" id="image" name="image" placeholder="Upload new profile picture">
+        </div>
+        <div class="form-input">
+        <label for="first_name">First Name:</label>
+        <input type="text" id="first_name" name="first_name" placeholder="Enter first name">
+        </div>
+        <div class="form-input">
+        <label for="last_name">Last Name:</label>
+        <input type="text" id="last_name" name="last_name" placeholder="Enter last name">
+        </div>
+        <div class="form-input">
+        <label for="phone_number">Phone Number:</label>
+        <input type="text" id="phone_number" name="phone_number" placeholder="Enter phone number">
+        </div>
+        {% if user['user_role'] == 'student' %}
+        <div class="form-input">
+        <label for="user_role">User Role:</label>
+        <select id="user_role" name="user_role">
+        <option value=""></option>
+        <option value="graduate">Graduate</option>
+        </select>
+        </div>
+        {% endif %}
+        <input class="form-submit" type="submit" value="Update">
+        </form>
 </div>   <div class="posts" style="flex-grow: 1;">
      <h2>YOUR POSTS</h2>
      {% for post in posts %}
diff --git a/frontend/application/templates/forum/search.html b/frontend/application/templates/forum/search.html
new file mode 100644
index 0000000000000000000000000000000000000000..6134bfba84db47eac0e9f640775ff1f958fe0a23
--- /dev/null
+++ b/frontend/application/templates/forum/search.html
@@ -0,0 +1,117 @@
+{% extends "base_col_1.html" %}
+{% block title %} SEARCH RESULTS {% endblock %}
+
+{% block pageContent%}
+
+<style>
+    body {
+        background-color: #f8f9fa;
+        color: #212529;
+    }
+
+    .card-header {
+        background-color: #c6e2ff;
+        color: white;
+    }
+
+    .nav-link.active {
+        background-color: #6c757d;
+        color: white;
+    }
+
+    .btn-outline-success:hover {
+      background-color: #218838;
+      border-color: #1e7e34;
+    }
+    .profile-image {
+      width: 60px;
+      height: 60px;
+      object-fit: ;
+      border-radius: 50%;
+    }
+    .post-image {
+      width: 100px;
+      height: 100px;
+      object-fit: contain;
+    }
+</style>
+
+<div>
+
+</div>
+
+<div class="col-md-6 gedf-main">
+    <div class="card gedf-card">
+        <div class="card-header">
+            <ul class="nav nav-tabs card-header-tabs" id="myTab" role="tablist">
+                <li class="nav-item">
+                    <a class="nav-link active" id="posts-tab" data-toggle="tab" href="#posts" role="tab" aria-controls="posts" aria-selected="true">Start a discussion</a>
+                </li>
+            </ul>
+        </div>
+        <div class="card-body">
+            <div class="tab-content" id="myTabContent">
+                <div class="tab-pane fade show active" id="posts" role="tabpanel" aria-labelledby="posts-tab">
+                    <div class="form-group">
+                        <label class="sr-only" for="message">post</label>
+                        <a class="btn btn--link" href="{{ url_for('frontend.create_post') }}">New Post</a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    {% if page > 1 %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.search', page=page-1) }}">Previous</a>
+    {% endif %}
+
+    {% if page_limit == True %}
+    <a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.search', page=page+1) }}">Next</a>
+    {% endif %}
+
+    {% for post,image in data %}
+    <div class="card gedf-card">
+        <div class="card-header">
+            <div class="d-flex justify-content-between align-items-center">
+                <div class="d-flex justify-content-between align-items-center">
+                    <div class="mr-2">
+                        <img class="profile-image" src="images/users/{{ image }}">
+                    </div>
+                    <div class="ml-2">
+                        <div class="h5 m-0"><a href="{{ url_for('frontend.display_user', user_id=post.user_id) }}">{{ post['user_name'] }}</a></div>
+                    </div>
+                </div>
+                <div>
+                    <div class="dropdown">
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="card-body">
+            <div class="text-muted h7 mb-2"> <i class="fa fa-clock-o"></i>{{ post['date_added']}}</div>
+            <a class="card-link" href="{{ url_for('frontend.display_post', post_id=post.id) }}">
+                <h5 class="card-title">{{ post['title'] }}</h5>
+            </a>
+            <p class="card-text">{{ post.content[:40] | safe }}{% if post.content|length > 30 %}...{% endif %}</p>
+            
+            {% if post['image_url'] != '' %}
+            <img class="post-image" src="static/images/{{ post['image_url'] }}">
+            {% endif %}  
+        </div>
+        <div class="card-footer">
+            <a href="{{ url_for('frontend.display_post', post_id=post.id) }}" class="card-link"><i class="fa fa-comment"></i> Comment</a>
+        </div>
+    </div>
+{% endfor %}
+
+{% if page > 1 %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.search', page=page-1) }}">Previous</a>
+{% endif %}
+
+{% if page_limit == True %}
+<a class="btn btn-outline-success my-2 my-sm-0" href="{{ url_for('frontend.search', page=page+1) }}">Next</a>
+{% endif %}
+
+</div>
+
+{% endblock %}
diff --git a/frontend/application/templates/forum/user.html b/frontend/application/templates/forum/user.html
index f4d3b4ee2d5e633dab220731d1e859e8a2fd34e3..fabb149c58fc7d782225090898c61e2e46deb4ef 100644
--- a/frontend/application/templates/forum/user.html
+++ b/frontend/application/templates/forum/user.html
@@ -9,23 +9,33 @@
         font-size: 16px;
         cursor: pointer;
         margin-bottom: 20px;
+  }
+  .profile-image {
+  width: 100px;
+  height: 100px;
+  object-fit: ;
+  border-radius: 50%;
+  }
 </style>
 </head>
+<title>USER PROFILE</title>
 {% extends "base.html" %}
 
 {% block content %}
-  <div class="container">
+  <div class="container-fluid">
     <div class="row">
-      <div class="col-md-4">
-         <a class="home-btn" href="{{ url_for('frontend.get_posts') }}">Home</a>
-        <br><br>
-        <img class="rounded-circle" width="100" src="images/users/{{ image }}">
-        <br><br>
-        <div class="h5">{{ name }}</div>
-        <div>{{ email }}</div>
-        <div>{{ role }}</div>
+      <div class="col-md-4 position-fixed w-100 h-100 left-0 top-0">
+        <div class="user-info" style="margin-top: 50px;">
+          <a class="home-btn" href="{{ url_for('frontend.get_posts') }}">Home</a>
+          <br><br>
+          <img class="profile-image" src="images/users/{{ image }}">
+          <br><br>
+          <div class="h5">{{ name }}</div>
+          <div>{{ email }}</div>
+          <div>{{ role }}</div>
+        </div>
       </div>
-      <div class="col-md-8">
+      <div class="col-md-8 offset-md-4" style="margin-top: 50px;">
         <h2>POSTS OF THE USER</h2>
         <div style="height: 1500px; overflow-y: scroll;">
           {% for post in posts %}
@@ -42,3 +52,4 @@
     </div>
   </div>
 {% endblock %}
+
diff --git a/frontend/application/templates/macros.html b/frontend/application/templates/macros.html
index 3b27f63e9a2216182f46f935408263a5f5bcf150..0fec92470f0b1c88e6b4eeda5884a9285155c660 100644
--- a/frontend/application/templates/macros.html
+++ b/frontend/application/templates/macros.html
@@ -1,6 +1,5 @@
 {# application/templates/macros.html #}
 
-
 {% macro displayField(fieldName, placeholderValue) %}
 
   {{ fieldName(class_='input__field', placeholder=placeholderValue, **kwargs) }}
@@ -9,4 +8,4 @@
     <p class="form__error">{{ error }}</p>
   {% endfor %}
 
-{% endmacro %}
+{% endmacro %}
\ No newline at end of file
diff --git a/frontend/application/templates/navbar.html b/frontend/application/templates/navbar.html
index 91216b749c7fa777c45e3ba757542a0f512775ab..333983463bd9fc87836618f8353674e12fa221ef 100644
--- a/frontend/application/templates/navbar.html
+++ b/frontend/application/templates/navbar.html
@@ -68,7 +68,7 @@
           </li>
         </ul>
         <form class="form-inline my-2 my-lg-0" action="{{ url_for('frontend.search') }}" method="POST">
-          <input class="form-control mr-sm-2" type="text" id="keywords" name="keywords" placeholder="Search content keywords">
+          <input class="form-control mr-sm-2" type="text" id="keywords" name="keywords" placeholder="Search content keywords" required autofocus>
           <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
         </form>
       </div>
diff --git a/frontend/application/templates/sidebar.html b/frontend/application/templates/sidebar.html
index a95be73a38ccab0e300a99e3f75857fe37c4206f..790b9ef1f19c05605cfaed811a3f05a5399df83a 100644
--- a/frontend/application/templates/sidebar.html
+++ b/frontend/application/templates/sidebar.html
@@ -22,17 +22,23 @@
             color: #007bff; 
             text-decoration:none;
         }
+        .profile-image {
+          width: 60px;
+          height: 60px;
+          object-fit: ;
+          border-radius: 50%;
+        }
     </style>
 </head>
 
 <body>
 <div class="col-md-3">
     <div class="card">
-        <div class="card-body">
-            <img class="rounded-circle" width="45" src="images/users/{{ session['user'].image_url }}" >
-            <div class="h5" style="color: #007bff;"><a href="{{ url_for('frontend.display_currentuser') }}" style="text-decoration:none;">{{ session['user'].full_name }}</a></div>
-            <div class="h7 text-muted" >{{session['user'].email}}</div>
-            <div class="h7" >{{session['user'].user_role}} at University of Surrey</div>
+        <div class="card-body d-flex flex-column align-items-center">
+        <img class="profile-image" src="images/users/{{ session['user'].image_url }}" >
+            <div class="h5 mt-3" style="color: #007bff;"><a href="{{ url_for('frontend.display_currentuser') }}" style="text-decoration:none;">{{ session['user'].full_name }}</a></div>
+        <div class="h7 text-muted" >{{session['user'].email}}</div>
+        <div class="h7" >{{session['user'].user_role}} at University of Surrey</div>
         </div>
         <ul class="list-group list-group-flush">
             <li class="list-group-item">
diff --git a/frontend/application/testing.html b/frontend/application/testing.html
deleted file mode 100644
index f131240857f5322985f2b654bc44f900b78ed957..0000000000000000000000000000000000000000
--- a/frontend/application/testing.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<html>
-<head>
-	<title>Registration and login page</title>
-	<link rel="stylesheet" href="css.css">
-</head>
-<body>
-	<div class="hero">
-	    <div class="form-box">
-	    	<div class="button-box">
-	    		<div id="btn"> </div>
-	    		<button type="button" class="toggle-btn" id="login-btn" onclick="Login()">Log In</button>
-	    		<button type="button" class="toggle-btn" id="register-btn" onclick="Register()">Register</button>
-	    	</div>
-	    	<div class="logo">
-	    	    <img src="logo.jpg">
-	        </div>
-	    <form id="Login" class="input-group">
-	    	<input type="email" class="input-field" placeholder="Email" required>
-            <input type="password" class="input-field" placeholder ="Password" required>
-            <button type="submit" class="submit-btn">Log In</button>
-	    </form>
-	    <form id="Register" class="input-group">
-	    	<input type="text" class="input-field" placeholder="First_name" required>
-	    	<input type="text" class="input-field" placeholder="Last_name" required>
-	    	<input type="email" class="input-field" placeholder="Email" required>
-	    	<input type="password" class="input-field" placeholder ="Password" required>
-	    	<input type="tel" class="input-field" placeholder="Phone Number" required>
-	    	<input type="text" class="input-field" placeholder="University Number" required>
-	    	<input type="date" class="input-field" placeholder="DoB" required>
-	    	<select id="role" name="role">
-			<option value="Student">Student</option>
-			<option value="Staff">Staff</option>
-		    </select>
-		    <input type="checkbox" class="check-box" ><span> I agree to the terms and conditions</span>
-		    <button type="submit" class="submit-btn">Register</button>
-		 </form>
-	    </div>
-	</div>
-	<script >
-
-		var x= document.getElementById("Login");
-		var y= document.getElementById("Register");
-		var z= document.getElementById("btn");
-        var formBox = document.querySelector(".form-box");
-
-
-		function Register(){
-			x.style.left = "-400px";
-			y.style.left = "50px";
-			z.style.left = "110px";
-            formBox.style.height = "570px";
-
-		}
-		function Login(){
-			x.style.left = "50px";
-			y.style.left = "450px";
-			z.style.left = "0";
-            formBox.style.height = "350px";
-		}
-	</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/post-service/application/post_api/routes.py b/post-service/application/post_api/routes.py
index 9a1c7de891e0a30ec009f54dcd686cc55e855fc3..695e7fbbeee2bf3d670fecead7ca0ed3a96ffd98 100644
--- a/post-service/application/post_api/routes.py
+++ b/post-service/application/post_api/routes.py
@@ -6,10 +6,10 @@ from ..models import Post, Comment
 from .api.UserClient import UserClient
 
 
-@post_api_blueprint.route('/api/posts', methods=['GET'])
-def get_posts():
+@post_api_blueprint.route('/api/posts/<int:per_page>/<int:offset>', methods=['GET'])
+def get_posts(per_page,offset):
     data = []
-    for row in Post.query.order_by(Post.date_added.desc()):
+    for row in Post.query.order_by(Post.date_added.desc()).offset(offset).limit(per_page).all():
         data.append(row.to_json())
 
     if data == []:
@@ -18,13 +18,36 @@ def get_posts():
     response = jsonify(data)
     return response
 
+@post_api_blueprint.route('/api/posts/<int:user_id>', methods=['GET'])
+def get_user_posts(user_id):
+    data = []
+    for row in Post.query.filter_by(user_id=user_id).order_by(Post.date_added.desc()).all():
+        data.append(row.to_json())
+    if data == []:
+        abort(404) 
+
+    response = jsonify(data)
+    return response
+
+@post_api_blueprint.route('/api/posts/<category>/<int:per_page>/<int:offset>', methods=['GET'])
+def get_category_posts(category,per_page,offset):
+    data = []
+    for row in Post.query.filter_by(category=category).order_by(Post.date_added.desc()).offset(offset).limit(per_page).all():
+        data.append(row.to_json())
+
+    print(data)
+    if data == []:
+        abort(404) 
+
+    response = jsonify(data)
+    return response
 
-@post_api_blueprint.route('/api/search/<query>', methods=['GET'])
-def get_search(query):
+@post_api_blueprint.route('/api/search/<query>/<int:per_page>/<int:offset>', methods=['GET'])
+def get_search(query,per_page,offset):
     responses = []
     query = query.replace(" ", "%")
 
-    for row in Post.query.filter(Post.content.like('%'+query+'%')).order_by(Post.date_added.desc()).all():
+    for row in Post.query.filter(Post.content.like('%'+query+'%')).order_by(Post.date_added.desc()).offset(offset).limit(per_page).all():
         responses.append(row.to_json())
 
     if responses == []:
diff --git a/post-service/instance/posts-service.db b/post-service/instance/posts-service.db
index ce8a49c477afc271679451e3be1d57d6a6869a06..9ab4f800813bd86bd6b451732a725bbdb6cfb68d 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 2fb85d47485846915ff70bdb7ede625883a8c540..9448302443290a84e12677b4ba7be83e2aaea46d 100644
Binary files a/user-service/instance/users-service.db and b/user-service/instance/users-service.db differ