diff --git a/cms/src/api/update-item/controllers/update-item.js b/cms/src/api/update-item/controllers/update-item.js
index 68cec5c7b9398c860c705c981ac0334d6ecbed66..0c810e4ad18e07cbb513fe02ba698f5e3be4b4c8 100644
--- a/cms/src/api/update-item/controllers/update-item.js
+++ b/cms/src/api/update-item/controllers/update-item.js
@@ -79,6 +79,7 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
     return response;
   },
   async find(ctx) {
+
     // console.log(ctx.state.user.role.name);
     ctx.query['populate'] = ['submittedBy', 'reviewedBy'];
 
@@ -258,6 +259,68 @@ module.exports = createCoreController('api::update-item.update-item', ({ strapi
     }
     return res
   },
+
+  async filterContributors(ctx) {
+
+    // const entries = await strapi.entityService.findMany('api::update-item.update-item', {
+    //   filters: {
+    //     EntityId: { $contains: ctx.params.id,
+    //     },
+    //     Status: "synced"
+    //   },
+    //   populate: {
+    //     submittedBy: {
+    //       fields: ['full_name', 'username'],
+    //     }
+    //   }
+    // });
+
+
+    console.log(ctx.params.entity);
+
+    if (ctx.params.entity === 'condensate') {
+      const [entries] = await strapi.db.query('plugin::users-permissions.user').findWithCount({
+
+        select: ['username', 'full_name'],
+        populate: {
+          SubmittedUpdateItems: {
+            where: {
+              EntityId: { $contains: ctx.params.id, },
+              Entity: { $startsWith: ctx.params.entity },
+              Status: 'synced',
+            },
+          }
+        },
+        orderBy: { id: 'DESC' },
+
+      });
+      const { data, meta } = await super.find(ctx);
+
+      return { entries, meta };
+    } else if (ctx.params.entity === 'protein') {
+      const [entries] = await strapi.db.query('plugin::users-permissions.user').findWithCount({
+
+        select: ['username', 'full_name'],
+        populate: {
+          SubmittedUpdateItems: {
+            where: {
+              EntityId: { $eq: ctx.params.id, },
+              Entity: { $eq: ctx.params.entity },
+              Status: 'synced',
+            },
+          }
+        },
+        orderBy: { id: 'DESC' },
+
+      });
+
+      const { data, meta } = await super.find(ctx);
+
+      return { entries, meta };
+
+    }
+  },
+
   async findOne(ctx) {
     // console.log(ctx);
     const { id } = ctx.params;
diff --git a/cms/src/api/update-item/routes/custom-update-item.js b/cms/src/api/update-item/routes/custom-update-item.js
index dfec063ff199220703b2628cefa52d87b0191ba2..2224f5e57fef9114263ddf6fa75977880f51a19f 100644
--- a/cms/src/api/update-item/routes/custom-update-item.js
+++ b/cms/src/api/update-item/routes/custom-update-item.js
@@ -16,5 +16,10 @@ module.exports = {
       path: '/update-item/filterCondensateRequest/:id',
       handler: 'api::update-item.update-item.filterCondensateRequest',
     },
+    {
+      method: 'GET',
+      path: '/update-item/filterContributors/:entity/:id',
+      handler: 'api::update-item.update-item.filterContributors',
+    },
     ]
 }
diff --git a/web/src/components/CondensateDetailPage.vue b/web/src/components/CondensateDetailPage.vue
index 0fdb0e16d79ad7ea2b0472c92ca2a13ba6bd4bd3..eada6814cdb8932bb71c96a72ead13b466dd94f3 100644
--- a/web/src/components/CondensateDetailPage.vue
+++ b/web/src/components/CondensateDetailPage.vue
@@ -798,6 +798,12 @@
                     :data="response.data.canonical_id"
                   />
                 </div>
+                <div  class="my-14 border border-gray-300 rounded-lg p-8">
+                  <h4 class="round mb-8">
+                    Contributors
+                  </h4>
+                  <contributor-list-table :id="response.data.canonical_id" entity="condensate" />
+                </div>
 
                 <!-- <request-update-item-table
                 id="protein-table"
@@ -858,6 +864,7 @@ import BaseSpinner from './UI/BaseSpinner.vue';
 import CondensateUpdateItemsTable from './CondensateUpdateItemsTable.vue';
 import BaseToaster from './UI/BaseToaster.vue';
 import StarRating from 'vue-star-rating';
+import ContributorListTable from './ContributorListTable.vue';
 //import FetchUserSpecificUpdateItems from './CMS/fetchUserSpecificUpdateItems.vue';
 
 //import RequestUpdateItemTable from "./RequestUpdateItemTable.vue";
@@ -878,6 +885,7 @@ export default {
     CondensateUpdateItemsTable,
     BaseToaster,
     StarRating,
+    ContributorListTable,
     // FetchUserSpecificUpdateItems,
 
     // RequestUpdateItemTable,
diff --git a/web/src/components/ContributorListTable.vue b/web/src/components/ContributorListTable.vue
new file mode 100644
index 0000000000000000000000000000000000000000..a8d4f9cf6ad46826ebe48a5532b3c4e53ed89032
--- /dev/null
+++ b/web/src/components/ContributorListTable.vue
@@ -0,0 +1,166 @@
+<template>
+  <section>
+    <div class="relative overflow-x-auto shadow-md sm:rounded-lg">
+      <h2 class="text-red-500" v-if="error">
+        {{ errorMsg }}
+      </h2>
+      <h5 class="text-center" v-if="!showTable">No contribution made yet.</h5>
+      <table
+        v-else
+        class="w-full table-auto text-left text-gray-500 dark:text-gray-400"
+      >
+        <thead
+          class="
+            bg-gray-50
+            text-gray-700
+            uppercase
+            dark:bg-gray-700 dark:text-gray-400
+          "
+        >
+          <tr class="p-8">
+            <th
+              scope="col"
+              class="px-6 py-3"
+              v-for="item in tableHeader"
+              :key="item"
+            >
+              {{ item }}
+            </th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr
+            v-for="items in topContributors"
+            :key="items.id"
+            class="bg-white border-b dark:bg-gray-800 dark:border-gray-700"
+          >
+            <td
+              scope="row"
+              class="
+                px-6
+                py-4
+                font-medium
+                text-gray-900
+                dark:text-white
+                whitespace-nowrap
+              "
+            >
+              {{ items.fullName }}
+            </td>
+            <td
+              scope="row"
+              class="
+                px-6
+                py-4
+                font-medium
+                text-gray-900
+                dark:text-white
+                whitespace-nowrap
+              "
+            >
+              <span
+                class="
+                  bg-blue-100
+                  text-blue-800
+                  font-semibold
+                  mr-2
+                  px-2.5
+                  py-0.5
+                  rounded
+                  dark:bg-blue-200 dark:text-blue-800
+                "
+              >
+                {{ items.contribution }}
+              </span>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+    </div>
+  </section>
+</template>
+
+<script>
+let host = require("@/components/js/const").apiHost;
+export default {
+  props: ["id", "entity"],
+  data() {
+    return {
+      tableHeader: ["Name", "Contributions"],
+
+      isDev: process.env.NODE_ENV === "development",
+      topContributors: null,
+      error: false,
+      errorMsg: "",
+      showTable: true,
+    };
+  },
+  mounted() {
+    this.getContributors();
+  },
+
+  methods: {
+    async getContributors() {
+      if (this.isDev) {
+        host = require("@/components/js/const").devApiHost;
+      }
+
+      try {
+        const res = await fetch(
+          `${host}/api/update-item/filterContributors/${this.entity}/${this.id}`
+        );
+        if (!res.ok) {
+          this.error = true;
+          this.errorMsg = `${res.status} Internal Error, please write a mail to DDCode Admin`;
+
+          return;
+        }
+
+        this.error = false;
+        this.errorMsg = "";
+        const response = await res.json();
+        
+        const convertedArray = response.entries.map((e) => ({
+          id: e.id,
+          username: e.username,
+          fullName: e.full_name,
+          contribution: e.SubmittedUpdateItems.length,
+        }));
+
+        let sortedArray = convertedArray.sort(
+          (a, b) => b.contribution - a.contribution
+        );
+
+        // const sorted = [...new Set(convertedArray)].sort((a, b) => b.contribution - a.contribution);
+        let syncedList = sortedArray.filter((list) => list.contribution > 0);
+        if (syncedList.length === 0) {
+          this.showTable = false;
+          return;
+        }
+        this.showTable = true;
+        let rank = 1;
+        for (let i in syncedList) {
+          if (
+            i > 0 &&
+            syncedList[i].contribution < syncedList[i - 1].contribution
+          ) {
+            rank += 1;
+          }
+          syncedList[i].rank = rank;
+        }
+
+        let top10Contributors = syncedList.filter((list) => list.rank <= 10);
+
+        this.topContributors = top10Contributors;
+      } catch (err) {
+        this.error = true;
+        this.errorMsg = `${err.message} Internal Error, please write a mail to DDCode Admin`;
+        console.log(err);
+      }
+    },
+  },
+};
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/web/src/components/Links.vue b/web/src/components/Links.vue
index 9da15d61c1510743328419a8b1a0694cac6dfc4f..934350cce272c191a1bcdda063a0d75720df8435 100644
--- a/web/src/components/Links.vue
+++ b/web/src/components/Links.vue
@@ -258,7 +258,7 @@
       </router-link>
     </li>
     <li
-      v-show="userData !== null"
+      v-if="userData !== null"
       role="presentation"
       @mouseover="openCondensateSubMenu = false"
     >
@@ -270,7 +270,7 @@
       </router-link>
     </li>
     <li
-      v-show="userData === null"
+      v-if="userData === null"
       role="presentation"
       :class="{ active: $route.name === 'login' }"
       @mouseover="openCondensateSubMenu = false"
diff --git a/web/src/components/ProteinDetailPage.vue b/web/src/components/ProteinDetailPage.vue
index 3c08a7d04ada9cc8354d928230cf4e60afb52047..a5a0afafc6740113d55a50aa92c5c833bdda4501 100644
--- a/web/src/components/ProteinDetailPage.vue
+++ b/web/src/components/ProteinDetailPage.vue
@@ -435,6 +435,12 @@
                   :data="protein"
                 />
               </div>
+              <div class="border border-gray-300 rounded-lg p-8">
+               <h4 class="round mb-8">
+                  Contributors
+                </h4>
+                <contributor-list-table :id="protein" entity="protein" />
+              </div>
             </div>
           </slot>
         </template>
@@ -453,6 +459,7 @@ import AddDeletePubmed from './CMS/addDeletePubmed.vue';
 //import FetchUserSpecificUpdateItems from './CMS/fetchUserSpecificUpdateItems.vue';
 import ProteinUpdateItemTable from './ProteinUpdateItemTable.vue';
 import BaseSpinner from './UI/BaseSpinner.vue';
+import ContributorListTable from './ContributorListTable.vue';
 //import BaseToaster from "./UI/BaseToaster.vue";
 
 const $ = (window.jQuery = require('jquery'));
@@ -470,6 +477,7 @@ export default {
 
     ProteinUpdateItemTable,
     BaseSpinner,
+    ContributorListTable,
     
   },
   props: ['proteinId'],
diff --git a/web/src/components/UpdateItemTable.vue b/web/src/components/UpdateItemTable.vue
index 83f0ce0aadbc7f347a424942d2573b3af2a76389..5ebb06d2fee6a63ba8d1723c18245df6cc2d15f5 100644
--- a/web/src/components/UpdateItemTable.vue
+++ b/web/src/components/UpdateItemTable.vue
@@ -81,7 +81,7 @@ export default {
           title: 'Value',
           data: 'attributes.Value',
            render: function (data, type, row, meta) {
-                console.log('all changes now', data);
+               
                 if(data==='frap'){
                   return data.toUpperCase();
                 }else if(data === 'self_ps'){
@@ -295,7 +295,7 @@ export default {
             recordsFiltered: res.data.meta.pagination.total,
             data: res.data.data
           }
-
+          
           fnCallback(dat)
         }
       } catch(error) {
diff --git a/web/src/components/js/const.js b/web/src/components/js/const.js
index 68137d10c18819c3cd0574658fe12f4ad29f193e..7c333b3a672180089c300f4f6975a3415cfc60a9 100644
--- a/web/src/components/js/const.js
+++ b/web/src/components/js/const.js
@@ -3,7 +3,7 @@ export const devHost = '/api';
 export const apiHost = '/cms';
 export const devApiHost = '/cms';
 
-// export const devHost = 'https://dev.ddcode.org/api';
+// export const devHost = 'https://dev.cd-code.org/api';
 // export const devHost = 'http://localhost:5001';
 // export const apiHost = 'http://localhost:1337';
 // export const devApiHost = 'http://localhost:1337';
diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue
index 8af1df9acd26764cab58934012de1fb19bade9a4..6a349031161f441a75603d68134a91b902ba5036 100644
--- a/web/src/views/Login.vue
+++ b/web/src/views/Login.vue
@@ -227,7 +227,7 @@ export default {
           password: this.password.val,
         }),
       });
-      console.log('response is',res);
+      
 
       if(!res.ok){
         this.isLoading = false;