diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue
index 14eebd3eca3075c04c70f4cb2cdf6ea1778dae27..b34498f25970be289497230db59bf347d5119d75 100644
--- a/components/ServerDbTable.vue
+++ b/components/ServerDbTable.vue
@@ -7,6 +7,7 @@ import { useDisplay } from "vuetify";
 import { useThrottleFn } from '@vueuse/core'
 import type { FacetInputItem, FilterItem } from '@/components/AutocompleteMeiliFacets.vue'
 import { useMeiliSearch } from "#imports"
+import type { SearchResponse } from 'meilisearch'
 // import { saveAs } from "file-saver";
 export interface SortItem {
     key: string,
@@ -55,9 +56,11 @@ const props = withDefaults(defineProps<Props>(), {
     }
 });
 const slots = useSlots()
+const client = useMeiliSearchRef()
 const sortByRef = toRef(props.sortBy)
 const emit = defineEmits(["refresh:search"])
-const { search: msSearch, result: msResult } = useMeiliSearch(props.autocompleteMeiliFacetsProps.db)
+const msResult = ref()
+// const { search: msSearch, result: msResult } = useMeiliSearch(props.autocompleteMeiliFacetsProps.db)
 const search: Ref<string> = ref("");
 const filterOrSearch: Ref<FilterItem[] | null> = ref(null)
 const hitsPerPage: Ref<number> = ref(25)
@@ -118,7 +121,7 @@ watch([paginationParams, msSortBy, page], ([newParams, newSort, newPage]) => {
     }
 })
 
-onBeforeMount(async () => {
+onMounted(async () => {
     searchOrFilter()
     emitRefreshRes()
 })
@@ -214,7 +217,15 @@ async function searchOrFilter() {
         try {
             loading.value = true
             const q = search.value
-            await msSearch(q, { ...paginationParams.value, filter: toValue(computedFilter), sort: msSortBy.value })
+            const response = await client
+                .index(props.autocompleteMeiliFacetsProps.db)
+                .search(q, {
+                    ...paginationParams.value,
+                    filter: toValue(computedFilter),
+                    sort: msSortBy.value
+                })
+            // await msSearch(q, { ...paginationParams.value, filter: toValue(computedFilter), sort: msSortBy.value })
+            msResult.value = response
         } catch (error: any) {
             filterError.value = error
             console.log(error)
@@ -255,13 +266,23 @@ watch(search, () => {
 // })
 
 async function downloadData() {
-    pendingDownloadData.value = true
+
     try {
-        const { data } = await useAsyncMeiliSearch({
-            index: props.autocompleteMeiliFacetsProps.db,
-            params: { ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy) },
-            query: toValue(search),
-        })
+        pendingDownloadData.value = true
+
+        const data = await client
+            .index(props.autocompleteMeiliFacetsProps.db)
+            .search(
+                toValue(search),
+                {
+                    ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy)
+                })
+
+        // const { data } = await useAsyncMeiliSearch({
+        //     index: props.autocompleteMeiliFacetsProps.db,
+        //     params: { ...toValue(notPaginatedParams), filter: toValue(computedFilter), sort: toValue(msSortBy) },
+        //     query: toValue(search),
+        // })
 
         useCsvDownload(data, props.columnsToDownload, props.title)
     } finally {
diff --git a/components/content/RefseqDb.vue b/components/content/RefseqDb.vue
index b0b1675207a6140ecd13d718ddf16063afa3d4cc..2a56e792aa711ea3c0c888af766cf876235fa963 100644
--- a/components/content/RefseqDb.vue
+++ b/components/content/RefseqDb.vue
@@ -25,76 +25,39 @@ const cellPlotMargin = ref({
     marginRight: 50
 })
 
+const client = useMeiliSearchRef()
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-
-        }
-    })
-    await getAllHits({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            // page: 1,
-            // hitsPerPage: 25,
-            limit: 500000,
-            sort: ["type:asc"]
-
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
-    // allHitsDb.value = toValue(data)?.hits
-    const { data: taxo } = await useAsyncMeiliSearch({
-        index: toValue("refseqtaxo"), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
-    taxonomyFacet.value = toValue(taxo)?.facetDistribution
-})
 onMounted(async () => {
-
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
+    try {
+        const data = await client.index(toValue(dbName)).search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-            // limit: 500000,
-            // sort: ["type:asc"]
-        }
-    })
+        })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+    }
     await getAllHits({
         index: toValue(dbName), query: "", params: {
             facets: ["*"],
             filter: [],
-            // page: 1,
-            // hitsPerPage: 25,
             limit: 500000,
             sort: ["type:asc"]
 
         }
     })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
-    // allHitsDb.value = toValue(data)?.hits
-
-    const { data: taxo } = await useAsyncMeiliSearch({
-        index: toValue("refseqtaxo"), query: "", params: {
+    try {
+        const taxo = await client.index("refseqtaxo").search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-        }
-    })
-    taxonomyFacet.value = toValue(taxo)?.facetDistribution
+        })
+        taxonomyFacet.value = taxo?.facetDistribution
+    } catch (error) {
 
+    }
 })
 
 const { serialize } = useSerialize()
@@ -221,16 +184,14 @@ async function getAllHits(params: { index: string, params: Record<string, any>,
 
     pendingAllHits.value = true
     try {
-        const { data, error } = await useAsyncMeiliSearch({
-            ...params,
-            index: "refseqsanitized",
-            params: {
+        const data = await client
+            .index("refseqsanitized")
+            .search("", {
                 ...params.params,
-
                 'attributesToRetrieve': ['type', 'Assembly', ...toValue(availableTaxo)]
-            }
-        })
-        allHits.value = data.value
+            })
+
+        allHits.value = data
     } finally {
         pendingAllHits.value = false
 
diff --git a/components/content/StructureDb.vue b/components/content/StructureDb.vue
index 59db42f08ca3a2d213e3a977007d718603d36f81..8fcbd9d139e65c3a12ed31f32417e1088ffe9056 100644
--- a/components/content/StructureDb.vue
+++ b/components/content/StructureDb.vue
@@ -16,34 +16,29 @@ interface Item {
 const sortBy: Ref<SortItem[]> = ref([{ key: 'System', order: "asc" }])
 const itemValue = ref("id");
 const dbName = ref("structure")
+const client = useMeiliSearchRef()
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
+onMounted(async () => {
+
+    try {
+        const data = await client.index(toValue(dbName)).search("", {
             facets: ["*"],
             filter: [],
             page: 1,
             hitsPerPage: 25,
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
+        })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+        throw createError("Unable to get structures")
 
-})
+    }
 
 
-onMounted(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
 })
 
+
+
 const autocompleteMeiliFacetsProps = ref<AutocompleteMeiliFacetProps>({
     db: toValue(dbName),
     facets: [
diff --git a/components/content/SystemDb.vue b/components/content/SystemDb.vue
index 81f591a26d7ae9a80edf60e6eb9db2dd594271ec..700214dca75cb45b313a8bb5e6b6fb9d2beed878 100644
--- a/components/content/SystemDb.vue
+++ b/components/content/SystemDb.vue
@@ -5,31 +5,36 @@ const sortBy: Ref<SortItem[]> = ref([{ key: 'title', order: "asc" }])
 const itemValue = ref("title");
 const dbName = ref("systems")
 
-onBeforeMount(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
+const client = useMeiliSearchRef()
 
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
-})
-onMounted(async () => {
-    const { data } = await useAsyncMeiliSearch({
-        index: toValue(dbName), query: "", params: {
-            facets: ["*"],
-            filter: [],
-            page: 1,
-            hitsPerPage: 25,
-        }
-    })
+// onBeforeMount(async () => {
+//     const { data } = await useAsyncMeiliSearch({
+//         index: toValue(dbName), query: "", params: {
+//             facets: ["*"],
+//             filter: [],
+//             page: 1,
+//             hitsPerPage: 25,
+//         }
+//     })
 
-    autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
+//     autocompleteMeiliFacetsProps.value.facetDistribution = toValue(data)?.facetDistribution
 
+// })
+onMounted(async () => {
+    try {
+        const data = await client
+            .index(toValue(dbName))
+            .search("", {
+                facets: ["*"],
+                filter: [],
+                page: 1,
+                hitsPerPage: 25,
+            })
+        autocompleteMeiliFacetsProps.value.facetDistribution = data?.facetDistribution
+    } catch (error) {
+        throw createError("Unable to get list of systems")
+    }
 })
 
 
@@ -118,18 +123,19 @@ const columnsToDownload = ref(['title', 'doi', 'Sensor', 'Activator', 'Effector'
 
         <template #[`item.title`]="{ item }">
             <v-chip color="info" link :to="`/defense-systems/${item.title.toLowerCase()}`">{{
-                item.title
-            }}</v-chip>
+        item.title
+    }}</v-chip>
         </template>
 
         <template #[`item.doi`]="{ item }">
-            <ArticleDoi v-if="item?.doi" :doi="item.doi" :abstract="item?.abstract" :divider="false" :enumerate="false" />
+            <ArticleDoi v-if="item?.doi" :doi="item.doi" :abstract="item?.abstract" :divider="false"
+                :enumerate="false" />
         </template>
         <template #[`item.PFAM`]="{ item }">
             <pfam-chips v-if="item?.PFAM" :pfams="item.PFAM"></pfam-chips>
         </template>
         <template #[`item.contributors`]="{ item }">
-            <CollapsibleChips v-if="item?.contributors" :items="item.contributors.map(it => ({ title: it }))">
+            <CollapsibleChips v-if="item?.contributors" :items="item.contributors.map(it => ({ title: it })) ">
             </CollapsibleChips>
         </template>
     </ServerDbTable>
diff --git a/docker-compose.yml b/docker-compose.yml
index 6744c4e3daf6379122c804b82e81aa173c38b3bf..c9ab11ca13a7986ef613e0b2ed093972dc2daaa0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -7,7 +7,7 @@ services:
       args:
         BASE_URL: /wiki
         MEILI_HOST: http://localhost:7700
-        MEILI_API_KEY: f5f5f1bc48e6379fc2509f5bf0aed1fce96c1bbf86e0a194c605b258d7cfe890
+        MEILI_API_KEY: 3534db2924c3938bab5fc878906aaf1b83f8f39867891c6d020b05043b04b1ef
         HOST_URL: http://localhost:8082
     container_name: nuxt
     environment: