diff --git a/resources/assets/js/components/Micro.vue b/resources/assets/js/components/Micro.vue
new file mode 100644
index 000000000..e3f7b685e
--- /dev/null
+++ b/resources/assets/js/components/Micro.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/assets/js/micro.js b/resources/assets/js/micro.js
new file mode 100644
index 000000000..831c0e78a
--- /dev/null
+++ b/resources/assets/js/micro.js
@@ -0,0 +1,40 @@
+require('./bootstrap');
+
+window.Vue = require('vue');
+import BootstrapVue from 'bootstrap-vue'
+import InfiniteLoading from 'vue-infinite-loading';
+import Loading from 'vue-loading-overlay';
+import VueTimeago from 'vue-timeago';
+//import {Howl, Howler} from 'howler';
+
+Vue.use(BootstrapVue);
+Vue.use(InfiniteLoading);
+Vue.use(Loading);
+Vue.use(VueTimeago);
+
+pixelfed.readmore = () => {
+ $('.read-more').each(function(k,v) {
+ let el = $(this);
+ let attr = el.attr('data-readmore');
+ if(typeof attr !== typeof undefined && attr !== false) {
+ return;
+ }
+ el.readmore({
+ collapsedHeight: 44,
+ heightMargin: 20,
+ moreLink: 'Read more',
+ lessLink: 'Hide',
+ });
+ });
+};
+
+try {
+ document.createEvent("TouchEvent");
+ $('body').addClass('touch');
+} catch (e) {
+}
+
+Vue.component(
+ 'micro',
+ require('./components/Micro.vue').default
+);
\ No newline at end of file