diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
index 19b7eae6c93f2c47fe987cbe3ca455da11a010d1..79f0b0acc5a0571d3957e2950456a83fa737243a 100644
--- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
+++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java
@@ -33,7 +33,7 @@ import java.util.UUID;
         @UniqueConstraint(columnNames = {"cid", "internalName"})
 })
 @NamedQueries({
-        @NamedQuery(name = "Database.findAll", query = "select d from Database d order by d.created desc"),
+        @NamedQuery(name = "Database.findAllDesc", query = "select d from Database d order by d.created desc"),
         @NamedQuery(name = "Database.findByInternalName", query = "select d from Database d where d.internalName = ?1"),
         @NamedQuery(name = "Database.findAllOnlyIds", query = "select d.id from Database d order by d.created desc"),
         @NamedQuery(name = "Database.findReadAccess", query = "select distinct d from Database d join DatabaseAccess a on a.hdbid = d.id and a.huserid = ?1"),
diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
index b9123993280c00c79b72e80ff57c88441afbef38..fe17cbc8b29ee40cf7297882f7763acbf337b9d1 100644
--- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
+++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/repository/mdb/DatabaseRepository.java
@@ -11,6 +11,8 @@ import java.util.UUID;
 @Repository
 public interface DatabaseRepository extends JpaRepository<Database, Long> {
 
+    List<Database> findAllDesc();
+
     List<Database> findReadAccess(UUID id);
 
     List<Database> findWriteAccess(UUID id);
diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
index a905152e61fe21784307f1aeaee5e36852fff8e9..3353721f47f894c729e1a96e591fc9f42cedb300 100644
--- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
+++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java
@@ -76,7 +76,7 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe
 
     @Override
     public List<Database> findAll() {
-        return databaseRepository.findAll();
+        return databaseRepository.findAllDesc();
     }
 
     @Override
diff --git a/dbrepo-ui/components/database/DatabaseCard.vue b/dbrepo-ui/components/database/DatabaseCard.vue
index 7dbb6401b4dd55eefacbc71716a18268c6873494..ea3089fabdcbf3d9d21652cd977a743a374f9a3f 100644
--- a/dbrepo-ui/components/database/DatabaseCard.vue
+++ b/dbrepo-ui/components/database/DatabaseCard.vue
@@ -24,6 +24,7 @@
           v-if="!database.is_public"
           size="small"
           :color="colorVariant"
+          variant="outlined"
           :text="$t('toolbars.database.private')"
           flat />
         <v-chip
@@ -76,7 +77,13 @@ export default {
   },
   computed: {
     colorVariant () {
-      return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? '' : 'secondary'
+      return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary')
+    },
+    isContrastTheme () {
+      return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast')
+    },
+    isDarkTheme () {
+      return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark')
     }
   },
   methods: {
diff --git a/dbrepo-ui/components/database/DatabaseList.vue b/dbrepo-ui/components/database/DatabaseList.vue
index c836c2be797b38a619e5acbec607259d60b8062f..baefecad2071d7db23c4d69299d8741ee77ce26d 100644
--- a/dbrepo-ui/components/database/DatabaseList.vue
+++ b/dbrepo-ui/components/database/DatabaseList.vue
@@ -2,7 +2,7 @@
   <div>
     <div
       v-if="loading"
-      v-for="(idx) in [1,2,3]"
+      v-for="(idx) in [1,2,3,4,5]"
       :key="`d-${idx}`">
       <DatabaseSkeleton />
     </div>
diff --git a/dbrepo-ui/components/database/DatabaseSkeleton.vue b/dbrepo-ui/components/database/DatabaseSkeleton.vue
index 2e691fa98ae003a15c20b3e3adc7202ce25aa27a..2a918c05c337c0ba5c974a734de497092cbe5269 100644
--- a/dbrepo-ui/components/database/DatabaseSkeleton.vue
+++ b/dbrepo-ui/components/database/DatabaseSkeleton.vue
@@ -1,16 +1,14 @@
 <template>
-  <v-card variant="flat">
+  <v-card
+    variant="flat"
+    rounded="0">
     <v-divider class="mx-4" />
-    <v-card-subtitle class="db-subtitle">
-      <v-skeleton-loader type="text" :style="randomWidth(100,300)" />
-      <v-skeleton-loader type="text" class="pt-2" :style="randomWidth(100,200)" />
-    </v-card-subtitle>
-    <v-card-text class="db-description">
-      <v-skeleton-loader type="chip" />
-      <v-skeleton-loader type="text" class="pt-4" :style="randomWidth(800,1000)" />
-      <v-skeleton-loader type="text" :style="randomWidth(800,1000)" />
-      <v-skeleton-loader type="text" :style="randomWidth(600,1000)" />
-    </v-card-text>
+    <v-skeleton-loader
+      type="subtitle"
+      :style="randomWidth(300,500)" />
+    <v-skeleton-loader
+      type="list-item-two-line"
+      :style="randomWidth(500,800)" />
   </v-card>
 </template>
 
diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue
index b48aaa93d5519db007bf1c61203d4db35227095b..a4897c120b0f32f8257727220f8c8da39eea8f39 100644
--- a/dbrepo-ui/components/database/DatabaseToolbar.vue
+++ b/dbrepo-ui/components/database/DatabaseToolbar.vue
@@ -1,15 +1,20 @@
 <template>
-  <div v-if="database">
-    <v-toolbar flat>
+  <div>
+    <v-toolbar
+      flat>
       <v-toolbar-title>
-        <span v-if="$vuetify.display.lgAndUp" v-text="database.name" />
-        <v-tooltip bottom>
+        <span
+          v-if="database && $vuetify.display.lgAndUp"
+          v-text="database.name" />
+        <v-tooltip
+          v-if="database"
+          bottom>
           <template v-slot:activator="{ props }">
             <v-icon
               class="ml-2"
               size="small"
               right
-              :color="database.is_public ? 'success' : null"
+              :color="database.is_public ? 'success' : 'chip'"
               v-bind="props">
               {{ database.is_public ? 'mdi-lock-open-outline' : 'mdi-lock-outline' }}
             </v-icon>
diff --git a/dbrepo-ui/composables/identifier-service.ts b/dbrepo-ui/composables/identifier-service.ts
index 268dc8d3f74bd1ed9cb78f24a3edf768fba43236..de406ef7b698c3998c12ade1f3c44bf5e44c1b78 100644
--- a/dbrepo-ui/composables/identifier-service.ts
+++ b/dbrepo-ui/composables/identifier-service.ts
@@ -167,12 +167,15 @@ export const useIdentifierService = (): any => {
     }
     const filtered = data.descriptions.filter(d => d.language && d.language === 'en')
     if (filtered.length === 0) {
-      return data.descriptions[0].description
+      return data.descriptions[0]?.description
     }
     return filtered[0].description
   }
 
-  function descriptionShort(description: string): string {
+  function descriptionShort(description: string): string | null {
+    if (!description) {
+      return null
+    }
     const targetLength = 280
     const lengthMax = 300
     if (description.length <= lengthMax) {
diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue
index cb3de72ff9d948de0485cb2884d4af68662b7c62..eb1b6f544b784bcafeea731cc922687dbb1906c4 100644
--- a/dbrepo-ui/pages/database/[database_id]/info.vue
+++ b/dbrepo-ui/pages/database/[database_id]/info.vue
@@ -2,7 +2,6 @@
   <div>
     <DatabaseToolbar />
     <v-window
-      v-if="database"
       v-model="tab">
       <v-window-item value="1">
         <Summary
@@ -18,12 +17,14 @@
               :identifier="identifier" />
           </v-card-text>
         </v-card>
-        <v-divider v-if="hasIdentifier" />
+        <v-divider
+          v-if="hasIdentifier" />
         <v-card
           :title="$t('pages.database.title')"
           variant="flat"
           rounded="0">
-          <v-card-text>
+          <v-card-text
+            v-if="database">
             <v-list
               lines="two"
               dense>
@@ -114,7 +115,8 @@
           :title="$t('pages.container.title')"
           variant="flat"
           rounded="0">
-          <v-card-text>
+          <v-card-text
+            v-if="database">
             <v-list dense>
               <v-list-item
                 :title="$t('pages.container.name.title')"
diff --git a/dbrepo-ui/pages/index.vue b/dbrepo-ui/pages/index.vue
index 3b410c1b738ba933b90c746ae25fb0d8151ed57c..5b4ee9cc9d9c8c0952b0cda6323840ea1f1aadc1 100644
--- a/dbrepo-ui/pages/index.vue
+++ b/dbrepo-ui/pages/index.vue
@@ -38,7 +38,7 @@ export default {
   },
   data () {
     return {
-      loading: false,
+      loading: true,
       dialog: null,
       databases: [],
       userStore: useUserStore()
@@ -56,10 +56,12 @@ export default {
     }
   },
   mounted () {
+    this.loading = true
     const databaseService = useDatabaseService();
     databaseService.findAll()
       .then((databases) => {
         this.databases = databases
+        this.loading = false
       })
   },
   methods: {