diff --git a/front/src/EmbedFrame.vue b/front/src/EmbedFrame.vue
index 5f6a2f8ce15766f2a046fe0df4fb9ddcca7d085d..dd830b486e1cc83ae9fdb5adbf4bf4a8271bc336 100644
--- a/front/src/EmbedFrame.vue
+++ b/front/src/EmbedFrame.vue
@@ -13,7 +13,7 @@
       <symbol id="plyr-restart"><path d="M9.7 1.2l.7 6.4 2.1-2.1c1.9 1.9 1.9 5.1 0 7-.9 1-2.2 1.5-3.5 1.5-1.3 0-2.6-.5-3.5-1.5-1.9-1.9-1.9-5.1 0-7 .6-.6 1.4-1.1 2.3-1.3l-.6-1.9C6 2.6 4.9 3.2 4 4.1 1.3 6.8 1.3 11.2 4 14c1.3 1.3 3.1 2 4.9 2 1.9 0 3.6-.7 4.9-2 2.7-2.7 2.7-7.1 0-9.9L16 1.9l-6.3-.7z"/></symbol>
       <symbol id="plyr-rewind"><path d="M10.125 1L0 9l10.125 8v-6.171L18 17V1l-7.875 6.171z"/></symbol>
       <symbol id="plyr-settings"><path d="M16.135 7.784a2 2 0 0 1-1.23-2.969c.322-.536.225-.998-.094-1.316l-.31-.31c-.318-.318-.78-.415-1.316-.094a2 2 0 0 1-2.969-1.23C10.065 1.258 9.669 1 9.219 1h-.438c-.45 0-.845.258-.997.865a2 2 0 0 1-2.969 1.23c-.536-.322-.999-.225-1.317.093l-.31.31c-.318.318-.415.781-.093 1.317a2 2 0 0 1-1.23 2.969C1.26 7.935 1 8.33 1 8.781v.438c0 .45.258.845.865.997a2 2 0 0 1 1.23 2.969c-.322.536-.225.998.094 1.316l.31.31c.319.319.782.415 1.316.094a2 2 0 0 1 2.969 1.23c.151.607.547.865.997.865h.438c.45 0 .845-.258.997-.865a2 2 0 0 1 2.969-1.23c.535.321.997.225 1.316-.094l.31-.31c.318-.318.415-.781.094-1.316a2 2 0 0 1 1.23-2.969c.607-.151.865-.547.865-.997v-.438c0-.451-.26-.846-.865-.997zM9 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol>
-      <symbol id="plyr-volume"><path d="M15.6 3.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4C15.4 5.9 16 7.4 16 9c0 1.6-.6 3.1-1.8 4.3-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7z"/><path d="M11.282 5.282a.909.909 0 0 0 0 1.316c.735.735.995 1.458.995 2.402 0 .936-.425 1.917-.995 2.487a.909.909 0 0 0 0 1.316c.145.145.636.262 1.018.156a.725.725 0 0 0 .298-.156C13.773 11.733 14.13 10.16 14.13 9c0-.17-.002-.34-.011-.51-.053-.992-.319-2.005-1.522-3.208a.909.909 0 0 0-1.316 0zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol></svg>
+      <symbol id="plyr-volume"><path d="M15.6 3.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4C15.4 5.9 16 7.4 16 9c0 1.6-.6 3.1-1.8 4.3-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7z"/><path d="M11.282 5.282a.909.909 0 0 0 0 1.316c.735.735.995 1.458.995 2.402 0 .936-.425 1.917-.995 2.487a.909.909 0 0 0 0 1.316c.145.145.636.262 1.018.156a.725.725 0 0 0 .298-.156C13.773 11.733 14.13 10.16 14.13 9c0-.17-.002-.34-.011-.51-.053-.992-.319-2.005-1.522-3.208a.909.909 0 0 0-1.316 0zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol>
       <!-- those ones are from fork-awesome -->
       <symbol id="plyr-step-backward"><path d="M979 141c25-25 45-16 45 19v1472c0 35-20 44-45 19L269 941c-6-6-10-12-13-19v678c0 35-29 64-64 64H64c-35 0-64-29-64-64V192c0-35 29-64 64-64h128c35 0 64 29 64 64v678c3-7 7-13 13-19z"/></symbol>
       <symbol id="plyr-step-forward"><path d="M45 1651c-25 25-45 16-45-19V160c0-35 20-44 45-19l710 710c6 6 10 12 13 19V192c0-35 29-64 64-64h128c35 0 64 29 64 64v1408c0 35-29 64-64 64H832c-35 0-64-29-64-64V922c-3 7-7 13-13 19z"/></symbol>
diff --git a/front/src/components/Pagination.vue b/front/src/components/Pagination.vue
index 4820822380b0b44b084d7569f476782ec77bc324..b8733f2785e4e6684b8ecb3b859d6a84981a1377 100644
--- a/front/src/components/Pagination.vue
+++ b/front/src/components/Pagination.vue
@@ -11,7 +11,7 @@
         @click.prevent.stop="selectPage(page)"
         :class="[{'active': page === current}, 'item']">
         {{ page }}
-      </a href>
+      </a>
       <div v-else class="disabled item">
         …
       </div>
diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue
index ea8dc16d84b2509eea99f5f11dfe3801d9a9fc33..7d3f5a2df4bfedc2bf7a28d2301750d4734ae8dc 100644
--- a/front/src/components/Sidebar.vue
+++ b/front/src/components/Sidebar.vue
@@ -78,8 +78,8 @@
             <actor-avatar v-else :actor="{preferred_username: $store.state.auth.username, full_username: $store.state.auth.username}" />
             <div class="menu">
               <router-link class="item" :to="{name: 'profile.overview', params: {username: $store.state.auth.username}}"><translate translate-context="*/*/*/Noun">Profile</translate></router-link>
-              <router-link class="item" :to="{path: '/settings'}"></i><translate translate-context="*/*/*/Noun">Settings</translate></router-link>
-              <router-link class="item" :to="{name: 'logout'}"></i><translate translate-context="Sidebar/Login/List item.Link/Verb">Logout</translate></router-link>
+              <router-link class="item" :to="{path: '/settings'}"><translate translate-context="*/*/*/Noun">Settings</translate></router-link>
+              <router-link class="item" :to="{name: 'logout'}"><translate translate-context="Sidebar/Login/List item.Link/Verb">Logout</translate></router-link>
             </div>
           </div>
         </div>
diff --git a/front/src/components/audio/EmbedWizard.vue b/front/src/components/audio/EmbedWizard.vue
index 04a6fe62fba2bd285cf169246dea108e344342a1..eb470b35a0261afa319e6f8fe747b1e5d3499d17 100644
--- a/front/src/components/audio/EmbedWizard.vue
+++ b/front/src/components/audio/EmbedWizard.vue
@@ -30,7 +30,7 @@
           <button @click="copy" class="ui right teal labeled icon floated button"><i class="copy icon"></i><translate translate-context="*/*/Button.Label/Short, Verb">Copy</translate></button>
           <label for="embed-width"><translate translate-context="Popup/Embed/Input.Label/Noun">Embed code</translate></label>
           <p><translate translate-context="Popup/Embed/Paragraph">Copy/paste this code in your website HTML</translate></p>
-          <textarea ref="textarea":value="embedCode" rows="5" readonly>
+          <textarea ref="textarea" :value="embedCode" rows="5" readonly>
           </textarea>
           <div class="ui right">
           <p class="message" v-if=copied><translate translate-context="Content/*/Paragraph">Text copied to clipboard!</translate></p>
diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue
index 1c720d9522b6c7258bd3f4b4a079f9079b066549..91c1ecc5d2e50c91b49ab854ea5596215ea00589 100644
--- a/front/src/components/audio/Player.vue
+++ b/front/src/components/audio/Player.vue
@@ -9,7 +9,7 @@
       <div class="controls-row">
 
         <div class="controls track-controls queue-not-focused desktop-and-up">
-          <div @click.stop.prevent="" class="ui tiny image" @click.stop.prevent="$router.push({name: 'library.tracks.detail', params: {id: currentTrack.id }})">
+          <div class="ui tiny image" @click.stop.prevent="$router.push({name: 'library.tracks.detail', params: {id: currentTrack.id }})">
             <img ref="cover" v-if="currentTrack.album && currentTrack.album.cover && currentTrack.album.cover.original" :src="$store.getters['instance/absoluteUrl'](currentTrack.album.cover.medium_square_crop)">
             <img v-else src="../../assets/audio/default-cover.png">
           </div>
diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue
index 8ad1b3c140a28288e86de08aeb9b5bfba1b73ece..588c1c4e10501085c648f9a3a7eb68c10359394b 100644
--- a/front/src/components/auth/Settings.vue
+++ b/front/src/components/auth/Settings.vue
@@ -271,7 +271,7 @@
         <div class="ui warning message">
           <translate translate-context="Content/Settings/Paragraph'">Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though.</translate>
         </div>
-        <div class="ui form"">
+        <div class="ui form">
           <div v-if="accountDeleteErrors.length > 0" class="ui negative message">
             <div class="header"><translate translate-context="Content/Settings/Error message.Title">We cannot delete your account</translate></div>
             <ul class="list">
diff --git a/front/src/components/channels/AlbumForm.vue b/front/src/components/channels/AlbumForm.vue
index e224b7addf0c8f48f816a4abdb545115a7a2f190..a904a546cfa8a353d2ddf265b7839e29211647da 100644
--- a/front/src/components/channels/AlbumForm.vue
+++ b/front/src/components/channels/AlbumForm.vue
@@ -12,7 +12,6 @@
       </label>
       <input type="text" v-model="values.title">
     </div>
-    </div>
   </form>
 </template>
 <script>
diff --git a/front/src/components/common/EmptyState.vue b/front/src/components/common/EmptyState.vue
index 360ef58f4dea75f815658b930039be11718d8a71..3a45ad6fa724a4487f64a240e21eb4b83b2fe437 100644
--- a/front/src/components/common/EmptyState.vue
+++ b/front/src/components/common/EmptyState.vue
@@ -16,7 +16,7 @@
       <button v-if="refresh" class="ui button" @click="$emit('refresh')">
         <translate translate-context="Content/*/Button.Label/Short, Verb">
           Refresh
-        </translate></button>
+        </translate>
       </button>
     </div>
   </div>
diff --git a/front/src/components/library/EditForm.vue b/front/src/components/library/EditForm.vue
index ff219a1c21791ec044612d3b3732bc52475b61a0..d58de5051a6c14c49dfbbb6f5af495de7b836351 100644
--- a/front/src/components/library/EditForm.vue
+++ b/front/src/components/library/EditForm.vue
@@ -127,8 +127,7 @@
         <translate v-if="canEdit" key="1" translate-context="Content/Library/Button.Label/Verb">Submit and apply edit</translate>
         <translate v-else key="2" translate-context="Content/Library/Button.Label/Verb">Submit suggestion</translate>
       </button>
-      </form>
-    </div>
+    </form>
   </div>
 </template>
 
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index b79dce92bf10245e3658b18c58d427bc8105bb42..92c85ee210e6efdef5346258f3dd42595b3f317a 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -56,7 +56,7 @@
                     <i class="wikipedia w icon"></i>
                     <translate translate-context="Content/*/Button.Label/Verb">Search on Wikipedia</translate>
                   </a>
-                  <a v-if="discogsUrl ":href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
+                  <a v-if="discogsUrl" :href="discogsUrl" target="_blank" rel="noreferrer noopener" class="basic item">
                     <i class="external icon"></i>
                     <translate translate-context="Content/*/Button.Label/Verb">Search on Discogs</translate>
                   </a>
diff --git a/front/src/components/library/radios/Filter.vue b/front/src/components/library/radios/Filter.vue
index 023f41f34759147a2915783f8181b8fa343aed3e..278fa36978a46ef27e5ef9e9061c197f6d1edd31 100644
--- a/front/src/components/library/radios/Filter.vue
+++ b/front/src/components/library/radios/Filter.vue
@@ -13,25 +13,24 @@
         class="ui field"
         :key="(f.name, index)"
         :ref="f.name">
-          <div :class="['ui', 'search', 'selection', 'dropdown', {'autocomplete': f.autocomplete}, {'multiple': f.type === 'list'}]">
-            <i class="dropdown icon"></i>
-            <div class="default text">{{ f.placeholder }}</div>
-            <input v-if="f.type === 'list' && config[f.name]" :value="config[f.name].join(',')" type="hidden">
-            <div v-if="config[f.name]" class="ui menu">
-              <div
-                v-if="f.type === 'list'"
-                v-for="(v, index) in config[f.name]"
-                class="ui item"
-                :data-value="v">
-                  <template v-if="config.names">
-                    {{ config.names[index] }}
-                  </template>
-                  <template v-else>{{ v }}</template>
-                </div>
-              </div>
+        <div :class="['ui', 'search', 'selection', 'dropdown', {'autocomplete': f.autocomplete}, {'multiple': f.type === 'list'}]">
+          <i class="dropdown icon"></i>
+          <div class="default text">{{ f.placeholder }}</div>
+          <input v-if="f.type === 'list' && config[f.name]" :value="config[f.name].join(',')" type="hidden">
+          <div v-if="config[f.name]" class="ui menu">
+            <div
+              v-if="f.type === 'list'"
+              v-for="(v, index) in config[f.name]"
+              class="ui item"
+              :data-value="v">
+                <template v-if="config.names">
+                  {{ config.names[index] }}
+                </template>
+                <template v-else>{{ v }}</template>
             </div>
           </div>
         </div>
+      </div>
     </td>
     <td>
       <span
diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue
index 73cc142db7a37aa341eba048756eeb02bef9f008..5d167c9ac66a00795c50e6dcdc73b29694217e45 100644
--- a/front/src/components/manage/moderation/ReportCard.vue
+++ b/front/src/components/manage/moderation/ReportCard.vue
@@ -243,7 +243,6 @@
         </div>
       </div>
     </div>
-    </div>
   </div>
 </template>
 
diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue
index 07a75902741e71b8dc017dc969817c33149bbf3e..567ee572c2d2ac7ebd49a6559a5f2b23cc564c58 100644
--- a/front/src/components/playlists/PlaylistModal.vue
+++ b/front/src/components/playlists/PlaylistModal.vue
@@ -87,7 +87,6 @@
             </div>
           </div>
         </template>
-        </div>
         <template v-else>
           <div class="ui placeholder segment">
             <div class="ui icon header">
diff --git a/front/src/views/channels/DetailBase.vue b/front/src/views/channels/DetailBase.vue
index de07b4e220fd1859fd8fd487875612ed0d5f1e55..19ce17cab230bed07937f1a47116e2c1b78bcf78 100644
--- a/front/src/views/channels/DetailBase.vue
+++ b/front/src/views/channels/DetailBase.vue
@@ -125,7 +125,7 @@
               <div class="left aligned" :title="object.artist.name">
                 {{ object.artist.name }}
                 <div class="ui hidden very small divider"></div>
-                <div class="sub header ellipsis" v-if="object.actor ":title="object.actor.full_username">
+                <div class="sub header ellipsis" v-if="object.actor" :title="object.actor.full_username">
                   {{ object.actor.full_username }}
                 </div>
                 <div v-else class="sub header ellipsis">