diff --git a/components/admin/Cohorts.vue b/components/admin/Cohorts.vue
new file mode 100644
index 00000000..3c73ec36
--- /dev/null
+++ b/components/admin/Cohorts.vue
@@ -0,0 +1,199 @@
+
+v-container
+ v-card-title {{$t('common.cohort')}}
+ v-spacer
+ v-text-field(v-model='search'
+ :append-icon='mdiMagnify' outlined rounded
+ label='Search'
+ single-line hide-details)
+ v-card-subtitle(v-html="$t('admin.cohort_description')")
+
+ v-btn(color='primary' text @click='dialog = true') {{$t('common.new')}}
+
+ v-dialog(v-model='dialog' width='800' destroy-on-close :fullscreen='$vuetify.breakpoint.xsOnly')
+ v-card(color='secondary')
+ v-card-title {{$t('admin.edit_cohort')}}
+ v-card-text
+ v-form(v-model='valid' ref='form' lazy-validation)
+ v-text-field(
+ :rules="[$validators.required('common.name')]"
+ :label="$t('common.name')"
+ v-model='cohort.name'
+ :placeholder='$t("common.name")')
+
+ v-row
+
+ v-col(cols=5)
+ v-autocomplete(v-model='filterTags'
+ :prepend-icon="mdiTagMultiple"
+ chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
+ no-filter
+ placeholder='Tutte'
+ :search-input.sync="tagName"
+ :delimiters="[',', ';']"
+ :items="filteredTags"
+ :label="$t('common.tags')")
+
+ v-col(cols=5)
+ v-autocomplete(v-model='filterPlaces'
+ :prepend-icon="mdiMapMarker"
+ chips small-chips multiple deletable-chips hide-no-data hide-selected persistent-hint
+ no-filter
+ item-text='name'
+ :search-input.sync="placeName"
+ :delimiters="[',', ';']"
+ :items="filteredPlaces"
+ :label="$t('common.places')")
+
+ v-col(cols=2)
+ v-btn(color='primary' text @click='addFilter') add
+
+
+ v-data-table(
+ :headers='filterHeaders'
+ :items='filters'
+ :hide-default-footer='filters.length<5'
+ :footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }')
+ template(v-slot:item.actions='{item}')
+ v-btn(@click='removeFilter(item)' color='error' icon)
+ v-icon(v-text='mdiDeleteForever')
+ template(v-slot:item.tags='{item}')
+ v-chip.ma-1(small v-for='tag in item.tags' v-text='tag' :key='tag')
+ template(v-slot:item.places='{item}')
+ v-chip.ma-1(small v-for='place in item.places' v-text='place.name' :key='place' )
+
+
+
+ v-card-actions
+ v-spacer
+ v-btn(text @click='dialog=false' color='warning') {{$t('common.cancel')}}
+ v-btn(text @click='saveCohort' color='primary' :loading='loading'
+ :disable='!valid || loading') {{$t('common.save')}}
+
+ v-card-text
+ v-data-table(
+ :headers='cohortHeaders'
+ :items='cohorts'
+ :hide-default-footer='cohorts.length<5'
+ :footer-props='{ prevIcon: mdiChevronLeft, nextIcon: mdiChevronRight }'
+ :search='search')
+ template(v-slot:item.actions='{item}')
+ v-btn(@click='editCohort(item)' color='primary' icon)
+ v-icon(v-text='mdiPencil')
+ v-btn(@click='removeCohort(item)' color='error' icon)
+ v-icon(v-text='mdiDeleteForever')
+
+
+
\ No newline at end of file