diff --git a/components/layouts/navbar.vue b/components/layouts/navbar.vue
index 7f0bf34..5b3b7fe 100644
--- a/components/layouts/navbar.vue
+++ b/components/layouts/navbar.vue
@@ -1,5 +1,5 @@
 <script lang="ts" setup>
-	import { log } from "~/lib/server/logger";
+	import { log } from "@server/logger";
 	import { MenuProps } from "ant-design-vue";
 
 	const { data, status } = useAuth();
@@ -48,47 +48,55 @@
 			@click="clickFn"
 			:active-key="cur"
 		>
-			<a-menu-item key="home"> Home </a-menu-item>
-			<a-menu-item key="bands"> Bands </a-menu-item>
-			<a-menu-item key="authors"> Authors </a-menu-item>
-			<a-menu-item key="forum"> Message Board </a-menu-item>
-			<a-sub-menu title="My Stuff" v-if="!!data?.user" key="group/my-stuff">
-				<a-menu-item key="account"> Account </a-menu-item>
-				<a-menu-item key="edit-profile"> Edit Profile </a-menu-item>
-				<a-menu-item key="profile"> View Profile </a-menu-item>
-				<a-menu-item key="stories"> Stories </a-menu-item>
-				<a-menu-item key="drafts"> Drafts </a-menu-item>
-				<a-menu-item key="reviews"> Manage Reviews </a-menu-item>
-				<a-menu-item key="messages"> Private Messages </a-menu-item>
+			<a-menu-item key="home"> {{ $tm("navbar.home") }} </a-menu-item>
+			<a-menu-item key="bands"> {{ $tm("navbar.bands") }} </a-menu-item>
+			<a-menu-item key="authors"> {{ $tm("navbar.authors") }} </a-menu-item>
+			<a-menu-item key="forum"> {{ $tm("navbar.forum") }} </a-menu-item>
+			<a-sub-menu
+				:title="$tm('navbar.profile.myStuff') as any"
+				v-if="!!data?.user"
+				key="group/my-stuff"
+			>
+				<a-menu-item key="account"> {{ $tm("navbar.account") }} </a-menu-item>
+				<a-menu-item key="edit-profile">
+					{{ $tm("navbar.editProfile") }}
+				</a-menu-item>
+				<a-menu-item key="profile"> {{ $tm("navbar.profile") }} </a-menu-item>
+				<a-menu-item key="stories"> {{ $tm("navbar.account") }} </a-menu-item>
+				<a-menu-item key="drafts"> {{ $tm("navbar.account") }} </a-menu-item>
+				<a-menu-item key="reviews"> {{ $tm("navbar.reviews") }} </a-menu-item>
+				<a-menu-item key="messages"> {{ $tm("navbar.messages") }} </a-menu-item>
 			</a-sub-menu>
 			<a-menu-item key="admin" v-if="data?.user?.profile.isAdmin || false">
-				Admin
+				{{ $tm("navbar.admin") }}
+			</a-menu-item>
+			<a-menu-item key="logout" v-if="!!data?.user">
+				{{ $tm("navbar.logout") }}
 			</a-menu-item>
-			<a-menu-item key="logout" v-if="!!data?.user"> Logout </a-menu-item>
 		</a-menu>
 		<div>
 			<a-button
 				v-if="data?.user"
 				type="primary"
-				tooltip="Post a new Story"
+				:tooltip="$tm('newStoryButton')"
 				@click="() => navigateTo('/new-story')"
 			>
 				<!-- <template #icon>
 				</template> -->
 				<icon istyle="regular" name="file-plus" />
-				<span style="margin-left: 0.5em"> Post a new Story </span>
+				<span style="margin-left: 0.5em"> {{ $tm("newStoryButton") }} </span>
 			</a-button>
 		</div>
 		<div class="acbut" v-if="!data">
 			<a-button size="large" @click="() => navigateTo('/login')">
-				Log In
+				{{ $tm("navbar.login") }}
 			</a-button>
 			<a-button
 				size="large"
 				type="primary"
 				@click="() => navigateTo('/register')"
 			>
-				Register
+				{{ $tm("navbar.register") }}
 			</a-button>
 		</div>
 	</div>
diff --git a/components/layouts/sidebar.vue b/components/layouts/sidebar.vue
index 718aad0..d0a1215 100644
--- a/components/layouts/sidebar.vue
+++ b/components/layouts/sidebar.vue
@@ -5,7 +5,7 @@
 	} from "ant-design-vue/es/menu/src/interface";
 	import { ItemType, theme } from "ant-design-vue";
 	import Icon from "../icon.vue";
-	import { ISidebarItem } from "~/models/sidebarEntry";
+	import { ISidebarItem } from "@models/sidebarEntry";
 	import { AButton, NuxtLink } from "#components";
 
 	const loaded = inject<Ref<boolean>>("loaded");
@@ -16,6 +16,7 @@
 	const selState = ref<string>("");
 
 	const { data: injecto } = await useApiFetch<ISidebarItem[]>("/sidebar");
+	const { tm, rt } = useI18n();
 
 	let items: Ref<ItemType[]> = ref([
 		{
@@ -57,7 +58,9 @@
 		} as SubMenuType,
 		{
 			key: "fun-features",
-			label: h("span", { class: "smallcaps" }, ["Fun features"]),
+			label: h("span", { class: "smallcaps" }, [
+				rt(tm<string>("sidebar.features")),
+			]),
 			icon: h(Icon, {
 				istyle: "regular",
 				name: "sparkles",
diff --git a/components/listings/stories.vue b/components/listings/stories.vue
index 95c2280..3a7da0f 100644
--- a/components/listings/stories.vue
+++ b/components/listings/stories.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 	import singleStory from "~/components/listings/singleStory.vue";
-	import { IStory } from "~/models/stories";
+	import { IStory } from "@models/stories";
 	const route = useRoute();
 	let curPage = ref(route.query.page || 1);
 	const props = defineProps<{ prefix?: string; items?: IStory[] }>();
@@ -25,32 +25,39 @@
 		// 		page
 		// 	}
 		// })
-		// let {data: data } = await useApiFetch(`${props.prefix}/stories`, {
-		// 	query: {
-		// 		page: curPage
-		// 	}
-		// })
-		// rdata.value = data;
+		let { data: data } = await useApiFetch(`${props.prefix}`, {
+			query: {
+				page: curPage,
+			},
+		});
+		rdata.value = data.value;
 	};
 </script>
 <template>
-	<a-list
-		:pagination="{
+	<div>
+		<a-list :data-source="rdata.stories" item-layout="vertical">
+			<template #renderItem="{ item }">
+				<!-- {{ item.title }} -->
+				<single-story :story="item" />
+			</template>
+		</a-list>
+		<a-pagination
+			:default-page-size="20"
+			:total="rdata.total"
+			:default-current="curPage as number"
+			@change="pagiChange"
+			:show-quick-jumper="true"
+			:show-size-changer="false"
+		/>
+	</div>
+	<!--		{
 			defaultPageSize: 20,
 			total: rdata.total,
 			defaultCurrent: curPage as number,
-			// onChange: pagiChange,
-			hideOnSinglePage: true,
+			onChange: pagiChange,
+			// hideOnSinglePage: true,
 			showSizeChanger: false,
-		}"
-		:data-source="rdata.stories"
-		item-layout="vertical"
-	>
-		<template #renderItem="{ item }">
-			<!-- {{ item.title }} -->
-			<single-story :story="item" />
-		</template>
-	</a-list>
+		}-->
 </template>
 <style scoped>
 	.ant-list-items > * + * {
diff --git a/components/profile/adminPanel.vue b/components/profile/adminPanel.vue
index 1a3a123..d6aca42 100644
--- a/components/profile/adminPanel.vue
+++ b/components/profile/adminPanel.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 	import { message } from "ant-design-vue";
-	import { IUser } from "~/models/user";
+	import { IUser } from "@models/user";
 	const [messageApi, contextHolder] = message.useMessage();
 
 	const props = defineProps<{ user: IUser | null }>();
diff --git a/components/reviews/forChapter.vue b/components/reviews/forChapter.vue
index ee26639..b7f40be 100644
--- a/components/reviews/forChapter.vue
+++ b/components/reviews/forChapter.vue
@@ -1,7 +1,7 @@
 <script lang="ts" setup>
-	import { IReview } from "~/models/stories/review";
+	import { IReview } from "@models/stories/review";
 	import singleReview from "./singleReview.vue";
-	import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+	import { SingleChapterResult } from "@client/types/slightlyDifferentStory";
 	const props = defineProps<{ endpoint: string }>();
 	const story = inject<SingleChapterResult>("story");
 	const { data: reviews } = (await useApiFetch<IReview[]>(
diff --git a/components/reviews/singleReview.vue b/components/reviews/singleReview.vue
index 342f65d..9e0b704 100644
--- a/components/reviews/singleReview.vue
+++ b/components/reviews/singleReview.vue
@@ -1,8 +1,8 @@
 <script lang="ts" setup>
 	import { Form as veeForm, Field as veeField, useForm } from "vee-validate";
-	import { IReview } from "~/models/stories/review";
-	import { comment } from "~/lib/client/editorConfig";
-	import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+	import { IReview } from "@models/stories/review";
+	import { comment } from "@client/editorConfig";
+	import { SingleChapterResult } from "@client/types/slightlyDifferentStory";
 	const props = defineProps<{ review: IReview; story: SingleChapterResult }>();
 	const review = toRef(props.review);
 	const story = toRef(props.story);
@@ -75,11 +75,16 @@
 		</template>
 		<template #author>
 			<b style="display: flex">
-				<span v-if="review.replyingTo == null">Review by&nbsp;</span>
-				<span v-else> Response from&nbsp; </span>
-				<nuxt-link :to="`/user/${review.author._id}`">
-					{{ review.author.username }}
-				</nuxt-link>
+				<i18n-t keypath="reviews.reviewFrom" v-if="review.replyingTo == null">
+					<nuxt-link :to="`/user/${review.author._id}`">
+						{{ review.author.username }}
+					</nuxt-link>
+				</i18n-t>
+				<i18n-t keypath="reviews.responseFrom" v-else>
+					<nuxt-link :to="`/user/${review.author._id}`">
+						{{ review.author.username }}
+					</nuxt-link>
+				</i18n-t>
 			</b>
 		</template>
 		<template #content>
diff --git a/components/story/atoms/bands.vue b/components/story/atoms/bands.vue
index ba15c9c..6c01641 100644
--- a/components/story/atoms/bands.vue
+++ b/components/story/atoms/bands.vue
@@ -1,9 +1,9 @@
 <script setup lang="ts">
 	import { DefaultOptionType } from "ant-design-vue/es/select";
 	import { RuleExpression, useField } from "vee-validate";
-	import { cs } from "~/lib/client/storyFormSchema";
-	import { IBand } from "~/models/band";
-	import { log } from "~/lib/server/logger";
+	import { cs } from "@client/storyFormSchema";
+	import { IBand } from "@models/band";
+	import { log } from "@server/logger";
 
 	import iconEl from "../icon.vue";
 
diff --git a/components/story/atoms/characters.vue b/components/story/atoms/characters.vue
index be0ad80..95e1fb0 100644
--- a/components/story/atoms/characters.vue
+++ b/components/story/atoms/characters.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 	import { RuleExpression, useField } from "vee-validate";
-	import { cs } from "~/lib/client/storyFormSchema";
-	import { IBand } from "~/models/band";
+	import { cs } from "@client/storyFormSchema";
+	import { IBand } from "@models/band";
 	const fname = inject<string>("curName");
 	const { sb: selectedBands } = inject<any>("selectedBands");
 	const allBands = inject<Ref<IBand[]>>("bandlist");
diff --git a/components/story/atoms/pairings.vue b/components/story/atoms/pairings.vue
index 7ad9f98..72e1c68 100644
--- a/components/story/atoms/pairings.vue
+++ b/components/story/atoms/pairings.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 	import { Field, useFieldArray } from "vee-validate";
-	import { IBand } from "~/models/band";
+	import { IBand } from "@models/band";
 
 	const { sb: selectedBands } = inject<any>("selectedBands");
 	const allBands = inject<Ref<IBand[]>>("bandlist");
diff --git a/components/story/create/singleChapter.vue b/components/story/create/singleChapter.vue
index ae05707..95741f2 100644
--- a/components/story/create/singleChapter.vue
+++ b/components/story/create/singleChapter.vue
@@ -7,9 +7,9 @@
 		ErrorMessage,
 	} from "vee-validate";
 	import { NamePath } from "ant-design-vue/es/form/interface";
-	import { FormChapter } from "~/lib/client/types/form/story";
+	import { FormChapter } from "@client/types/form/story";
 
-	import { story, bare } from "~/lib/client/editorConfig";
+	import { story, bare } from "@client/editorConfig";
 	import elBands from "../atoms/bands.vue";
 	import genre from "../atoms/genre.vue";
 	import elCharacters from "../atoms/characters.vue";
diff --git a/components/story/create/storyform.vue b/components/story/create/storyform.vue
index 0fc67ca..8499496 100644
--- a/components/story/create/storyform.vue
+++ b/components/story/create/storyform.vue
@@ -9,13 +9,13 @@
 		FieldEntry,
 		useForm,
 	} from "vee-validate";
-	import { storySchema } from "~/lib/client/storyFormSchema";
+	import { storySchema } from "@client/storyFormSchema";
 	import {
 		FormChapter,
 		FormStory,
 		defaultChapter,
-	} from "~/lib/client/types/form/story";
-	import { autoEdit, autoSave } from "~/lib/client/utils";
+	} from "@client/types/form/story";
+	import { autoEdit, autoSave } from "@client/utils";
 
 	import findUser from "~/components/findUser.vue";
 
diff --git a/components/story/create/uploadOrPaste.vue b/components/story/create/uploadOrPaste.vue
index bdd3b4e..3b65240 100644
--- a/components/story/create/uploadOrPaste.vue
+++ b/components/story/create/uploadOrPaste.vue
@@ -6,7 +6,7 @@
 		useField,
 		ErrorMessage,
 	} from "vee-validate";
-	import { story } from "~/lib/client/editorConfig";
+	import { story } from "@client/editorConfig";
 	import icon from "~/components/icon.vue";
 	import baseEditor from "../../baseEditor.vue";
 	const fname = inject<string>("curName");
diff --git a/components/story/view/chapterPicker.vue b/components/story/view/chapterPicker.vue
index 4657804..d7dbd8a 100644
--- a/components/story/view/chapterPicker.vue
+++ b/components/story/view/chapterPicker.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 	import { LabeledValue } from "ant-design-vue/es/select";
-	import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+	import { SingleChapterResult } from "@client/types/slightlyDifferentStory";
 
 	const { params } = useRoute();
 	const cidx = parseInt(params.cidx as string);
diff --git a/components/story/view/storyInfo.vue b/components/story/view/storyInfo.vue
index 9e3ca86..402a3c0 100644
--- a/components/story/view/storyInfo.vue
+++ b/components/story/view/storyInfo.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 	import { format } from "date-fns";
-	import { type SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+	import { type SingleChapterResult } from "@client/types/slightlyDifferentStory";
 	import icon from "~/components/icon.vue";
 	const story = inject<SingleChapterResult | null>("story");
 	console.log("storyyy--info", story);
diff --git a/layouts/default.vue b/layouts/default.vue
index 67d7ac6..0a8f542 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -4,7 +4,7 @@
 	import cfooter from "~/components/layouts/footer.vue";
 	import sidebarThing from "~/components/layouts/sidebar.vue";
 	import icon from "~/components/icon.vue";
-	import { ISidebarItem } from "~/models/sidebarEntry";
+	import { ISidebarItem } from "@models/sidebarEntry";
 	const { useToken } = theme;
 	const { token } = useToken();
 
diff --git a/lib/client/middleware.ts b/lib/client/middleware.ts
index ce74c6f..de96098 100644
--- a/lib/client/middleware.ts
+++ b/lib/client/middleware.ts
@@ -1,7 +1,7 @@
 import { SingleChapterResult } from "./types/slightlyDifferentStory";
-import { IChapter } from "~/models/stories/chapter";
-import { IStory } from "~/models/stories";
-import { messages } from "~/lib/server/constants";
+import { IChapter } from "@models/stories/chapter";
+import { IStory } from "@models/stories";
+import { messages } from "@server/constants";
 
 export const storyMiddleware = defineNuxtRouteMiddleware(async (to, from) => {
 	const { getSession } = useAuth();
diff --git a/lib/client/types/slightlyDifferentStory.ts b/lib/client/types/slightlyDifferentStory.ts
index c1891d0..024fa2d 100644
--- a/lib/client/types/slightlyDifferentStory.ts
+++ b/lib/client/types/slightlyDifferentStory.ts
@@ -1,5 +1,5 @@
-import { type IStory } from "~/models/stories";
-import { IChapter } from "~/models/stories/chapter";
+import { type IStory } from "@models/stories";
+import { IChapter } from "@models/stories/chapter";
 
 export type SingleChapterResult = Omit<IStory, "chapters"> & {
 	currentChapter: IChapter & { text: string };
diff --git a/lib/client/utils.ts b/lib/client/utils.ts
index 0b56bbe..e8f9178 100644
--- a/lib/client/utils.ts
+++ b/lib/client/utils.ts
@@ -1,6 +1,6 @@
 import { debounce } from "lodash-es";
 import { message } from "ant-design-vue";
-import { IStory } from "~/models/stories";
+import { IStory } from "@models/stories";
 import { useAutoSaveStore } from "~/stores/autosaveStore";
 
 export const autoSave = debounce(async (values: any) => {
diff --git a/lib/functions.ts b/lib/functions.ts
index c956a97..6171873 100644
--- a/lib/functions.ts
+++ b/lib/functions.ts
@@ -4,7 +4,7 @@ import { resolve } from "path";
 // import iconv from "iconv-lite";
 import { GridFSBucketReadStream } from "mongodb";
 import { stripHtml } from "string-strip-html";
-import { IStory } from "~/models/stories";
+import { IStory } from "@models/stories";
 import { ficsHidden } from "./server/ficmas";
 import { PreMiddlewareFunction, Query } from "mongoose";
 
diff --git a/lib/server/dbHelpers/chapterTransformer.ts b/lib/server/dbHelpers/chapterTransformer.ts
index c1361fc..89f4328 100644
--- a/lib/server/dbHelpers/chapterTransformer.ts
+++ b/lib/server/dbHelpers/chapterTransformer.ts
@@ -1,11 +1,11 @@
 import { H3Event, EventHandlerRequest } from "h3";
 import { GridFSBucket } from "mongodb";
 import mongoose, { Document } from "mongoose";
-import { norm, stringifyStream } from "~/lib/functions";
-import { IStory } from "~/models/stories";
-import { IChapter } from "~/models/stories/chapter";
+import { norm, stringifyStream } from "@functions";
+import { IStory } from "@models/stories";
+import { IChapter } from "@models/stories/chapter";
 import getBucket from "../storyHelpers/getBucket";
-import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+import { SingleChapterResult } from "@client/types/slightlyDifferentStory";
 
 export default async function (
 	story: Document<number, {}, IStory> & IStory,
diff --git a/lib/server/dbHelpers/listQuerier.ts b/lib/server/dbHelpers/listQuerier.ts
index 20046b6..76c06bb 100644
--- a/lib/server/dbHelpers/listQuerier.ts
+++ b/lib/server/dbHelpers/listQuerier.ts
@@ -1,18 +1,18 @@
-import { Band } from "~/models/band";
-import { Challenge } from "~/models/challenges/gen";
-import { IStory, Story } from "~/models/stories";
+import { Band } from "@models/band";
+import { Challenge } from "@models/challenges/gen";
+import { IStory, Story } from "@models/stories";
 import { log } from "../logger";
-import { H3Event, EventHandlerRequest } from "h3";
+import { H3Event, EventHandlerRequest, H3EventContext } from "h3";
 
 export default async function (
-	query,
-	context,
+	query: any,
+	context: H3EventContext,
 	ev: H3Event<EventHandlerRequest>,
 	limit: number = 0,
-	sort?,
+	sort?: any,
 ): Promise<{ stories: IStory[]; total: number }> {
 	const q = getQuery(ev);
-	let skipAmt = limit * (parseInt((q.page as string) || "1") - 1) - 1;
+	let skipAmt = limit * (parseInt((q.page as string) || "1") - 1);
 	if (skipAmt < 0) skipAmt = 0;
 	query["chapters.hidden"] = false;
 	if (context.currentUser) {
@@ -22,7 +22,7 @@ export default async function (
 		query["author"]["$nin"] = context.currentUser.hiddenAuthors;
 	}
 	query["ficmas"] = {
-		$nin: context.ficmasarray_raw.map((a) => a._id),
+		$nin: context.ficmasarray_raw!.map((a) => a._id),
 	};
 	let stories = await Story.find(query, null)
 		.collation({ locale: "en" })
diff --git a/lib/server/dbHelpers/storyQuerier.ts b/lib/server/dbHelpers/storyQuerier.ts
index 138e2c8..a0b7f39 100644
--- a/lib/server/dbHelpers/storyQuerier.ts
+++ b/lib/server/dbHelpers/storyQuerier.ts
@@ -1,8 +1,9 @@
 import type { H3Event, EventHandlerRequest } from "h3";
-import { Challenge } from "~/models/challenges/gen";
-import { Story } from "~/models/stories";
+import { Challenge } from "@models/challenges/gen";
+import { Story } from "@models/stories";
+import isIdNan from "@server/middlewareButNotReally/isIdNan";
 export default async function (ev: H3Event<EventHandlerRequest>) {
-	const id = parseInt(getRouterParam(ev, "id") as string);
+	const id = isIdNan(ev);
 	const chapterIndex = ev.context.chapterIndex;
 	if (isNaN(id) || isNaN(chapterIndex))
 		throw createError({
diff --git a/lib/server/middlewareButNotReally/storyCheck.ts b/lib/server/middlewareButNotReally/storyCheck.ts
index cf1448c..238ae37 100644
--- a/lib/server/middlewareButNotReally/storyCheck.ts
+++ b/lib/server/middlewareButNotReally/storyCheck.ts
@@ -1,6 +1,6 @@
 import type { H3Event, EventHandlerRequest } from "h3";
-import { isFicmasHidden } from "~/lib/functions";
-import { IStory } from "~/models/stories";
+import { isFicmasHidden } from "@functions";
+import { IStory } from "@models/stories";
 import { messages } from "../constants";
 export default async function (
 	event: H3Event<EventHandlerRequest>,
diff --git a/lib/server/middlewareButNotReally/storyPrivileges.ts b/lib/server/middlewareButNotReally/storyPrivileges.ts
index 75dcfef..40ae7df 100644
--- a/lib/server/middlewareButNotReally/storyPrivileges.ts
+++ b/lib/server/middlewareButNotReally/storyPrivileges.ts
@@ -1,7 +1,7 @@
 import type { H3Event, EventHandlerRequest } from "h3";
-import { IStory } from "~/models/stories";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { IDraft } from "~/models/stories/draft";
+import { IStory } from "@models/stories";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { IDraft } from "@models/stories/draft";
 export function canDelete(event: H3Event<EventHandlerRequest>, story: IStory) {
 	isLoggedIn(event);
 	return (
@@ -9,6 +9,13 @@ export function canDelete(event: H3Event<EventHandlerRequest>, story: IStory) {
 		story.author._id === event.context.currentUser?._id
 	);
 }
+export function canDeleteDraft(
+	event: H3Event<EventHandlerRequest>,
+	story: IDraft,
+) {
+	isLoggedIn(event);
+	return story.author === event.context.currentUser?._id;
+}
 export function canModify(
 	event: H3Event<EventHandlerRequest>,
 	story: IStory | IDraft,
diff --git a/lib/server/plugnplay.ts b/lib/server/plugnplay.ts
index f1c20de..db81fd1 100644
--- a/lib/server/plugnplay.ts
+++ b/lib/server/plugnplay.ts
@@ -1,7 +1,7 @@
 import mongoose from "mongoose";
-import { Biffno } from "~/models/challenges/biffno";
-import { Ficmas } from "~/models/challenges/ficmas";
-import { Challenge } from "~/models/challenges/gen";
+import { Biffno } from "@models/challenges/biffno";
+import { Ficmas } from "@models/challenges/ficmas";
+import { Challenge } from "@models/challenges/gen";
 import { log } from "./logger";
 
 export default async function () {
@@ -17,6 +17,9 @@ export default async function () {
 		// if (!!!mongoose.connections.length)
 	} catch (e) {
 		console.error(e);
-		throw createError({ statusCode: 500, message: "whoops." });
+		throw createError({
+			statusCode: 500,
+			message: "Could not connect to the database.",
+		});
 	}
 }
diff --git a/lib/server/storyHelpers/bodyHandler.ts b/lib/server/storyHelpers/bodyHandler.ts
index 4083afb..de9558b 100644
--- a/lib/server/storyHelpers/bodyHandler.ts
+++ b/lib/server/storyHelpers/bodyHandler.ts
@@ -4,7 +4,7 @@ import { marked } from "marked";
 import mammoth from "mammoth";
 import san from "sanitize-html";
 import { sanitizeConf } from "../constants";
-import { FormChapter } from "~/lib/client/types/form/story";
+import { FormChapter } from "@client/types/form/story";
 import { log } from "../logger";
 
 export default async function (bodyObj: FormChapter): Promise<string> {
diff --git a/lib/server/storyHelpers/formChapterTransform.ts b/lib/server/storyHelpers/formChapterTransform.ts
index 3f6dbb1..07544e8 100644
--- a/lib/server/storyHelpers/formChapterTransform.ts
+++ b/lib/server/storyHelpers/formChapterTransform.ts
@@ -1,9 +1,7 @@
 import san from "sanitize-html";
-import { FormChapter } from "~/lib/client/types/form/story";
-import { countWords } from "~/lib/functions";
-import { IChapter } from "~/models/stories/chapter";
+import { FormChapter } from "@client/types/form/story";
+import { IChapter } from "@models/stories/chapter";
 import { sanitizeConf } from "../constants";
-import bodyHandler from "./bodyHandler";
 
 export default function (c: FormChapter): IChapter {
 	let t: IChapter = {
diff --git a/models/band.ts b/models/band.ts
index 5cd73bd..33aee82 100644
--- a/models/band.ts
+++ b/models/band.ts
@@ -1,7 +1,7 @@
 import mongoose, { connect, Document, Model } from "mongoose";
 const { Schema, model } = mongoose;
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 
 const AutoIncrement = SequenceFactory(mongoose);
 
diff --git a/models/challenges/biffno.ts b/models/challenges/biffno.ts
index 28fb3bf..18372f9 100644
--- a/models/challenges/biffno.ts
+++ b/models/challenges/biffno.ts
@@ -1,7 +1,7 @@
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
-import { IUser } from "~/models/user";
+import { IUser } from "@models/user";
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 
 const AutoIncrement = SequenceFactory(mongoose);
 
diff --git a/models/challenges/ficmas.ts b/models/challenges/ficmas.ts
index 9f240d5..10f8a76 100644
--- a/models/challenges/ficmas.ts
+++ b/models/challenges/ficmas.ts
@@ -6,10 +6,10 @@ import mongoose, {
 	model,
 } from "mongoose";
 
-import { IBand } from "~/models/band";
-import { IUser } from "~/models/user";
+import { IBand } from "@models/band";
+import { IUser } from "@models/user";
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 
 const AutoIncrement = SequenceFactory(mongoose);
 
diff --git a/models/challenges/gen.ts b/models/challenges/gen.ts
index a820dbd..7626bbe 100644
--- a/models/challenges/gen.ts
+++ b/models/challenges/gen.ts
@@ -1,6 +1,6 @@
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 
 const AutoIncrement = SequenceFactory(mongoose);
 
diff --git a/models/privMsg.ts b/models/privMsg.ts
index 9f863a5..025937b 100644
--- a/models/privMsg.ts
+++ b/models/privMsg.ts
@@ -1,6 +1,6 @@
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 import { IUser } from "./user";
 
 const AutoIncrement = SequenceFactory(mongoose);
diff --git a/models/stories/chapter.ts b/models/stories/chapter.ts
index 71334b5..c0189bc 100644
--- a/models/stories/chapter.ts
+++ b/models/stories/chapter.ts
@@ -1,5 +1,5 @@
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
-import { IBand } from "~/models/band";
+import { IBand } from "@models/band";
 export interface IChapter {
 	title: string;
 	summary: string;
diff --git a/models/stories/draft.ts b/models/stories/draft.ts
index f98c0b5..1c8e552 100644
--- a/models/stories/draft.ts
+++ b/models/stories/draft.ts
@@ -1,9 +1,9 @@
 import { IStory } from ".";
-import { hasMigrated } from "~/lib/dbconfig";
-import { IBand } from "~/models/band";
-import { IFicmas } from "~/models/challenges/ficmas";
-import { IChallenge } from "~/models/challenges/gen";
-import { IUser } from "~/models/user";
+import { hasMigrated } from "@dbconfig";
+import { IBand } from "@models/band";
+import { IFicmas } from "@models/challenges/ficmas";
+import { IChallenge } from "@models/challenges/gen";
+import { IUser } from "@models/user";
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
 import SequenceFactory from "mongoose-sequence";
 import { Chapter } from "./chapter";
diff --git a/models/stories/index.ts b/models/stories/index.ts
index 8ea08b6..222f400 100644
--- a/models/stories/index.ts
+++ b/models/stories/index.ts
@@ -4,10 +4,10 @@ import SequenceFactory from "mongoose-sequence";
 const AutoIncrement = SequenceFactory(mongoose);
 
 import { Chapter, IChapter } from "./chapter";
-import { IUser } from "~/models/user";
-import { Ficmas, IFicmas } from "~/models/challenges/ficmas";
-import { IChallenge, Challenge } from "~/models/challenges/gen";
-import { hasMigrated } from "~/lib/dbconfig";
+import { IUser } from "@models/user";
+import { Ficmas, IFicmas } from "@models/challenges/ficmas";
+import { IChallenge, Challenge } from "@models/challenges/gen";
+import { hasMigrated } from "@dbconfig";
 
 export interface IStory {
 	_id?: number;
diff --git a/models/stories/review.ts b/models/stories/review.ts
index 01a0748..8d0cc5a 100644
--- a/models/stories/review.ts
+++ b/models/stories/review.ts
@@ -1,8 +1,8 @@
 import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose";
 import SequenceFactory from "mongoose-sequence";
-import { hasMigrated } from "~/lib/dbconfig";
-import { populate, populateSelected } from "~/lib/functions";
-import { IUser } from "~/models/user";
+import { hasMigrated } from "@dbconfig";
+import { populate, populateSelected } from "@functions";
+import { IUser } from "@models/user";
 
 const AutoIncrement = SequenceFactory(mongoose);
 
diff --git a/models/user.ts b/models/user.ts
index d411c06..71c4c1e 100644
--- a/models/user.ts
+++ b/models/user.ts
@@ -9,7 +9,7 @@ import SequenceFactory from "mongoose-sequence";
 import bcrypt from "bcryptjs";
 import md5 from "blueimp-md5";
 import jwt from "jsonwebtoken";
-import { hasMigrated } from "~/lib/dbconfig";
+import { hasMigrated } from "@dbconfig";
 import { IBand } from "./band";
 import { IStory } from "./stories/index";
 import { QuickMenuItem, QuickMenuSchema } from "./quickMenu";
diff --git a/nuxt.config.ts b/nuxt.config.ts
index 4407d56..6a09acf 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -1,5 +1,5 @@
 // https://nuxt.com/docs/api/configuration/nuxt-config
-import { IUser } from "~/models/user";
+import { IUser } from "@models/user";
 // import speedkitHydrate from "nuxt-speedkit/dist/runtime/hydrate.mjs";
 
 export type SessionData = IUser;
@@ -32,8 +32,12 @@ export default defineNuxtConfig({
 		"@pinia/nuxt",
 		"@vueuse/nuxt",
 		"nuxt-speedkit",
+		"@nuxtjs/i18n",
 		// "./modules/09.loaded",
 	],
+	i18n: {
+		vueI18n: `./i18n.config.ts`,
+	},
 	speedkit: {
 		disableNuxtFontaine: true,
 		lazyOffset: {
diff --git a/pages/authors.vue b/pages/authors.vue
index 4aace85..7d5fc7f 100644
--- a/pages/authors.vue
+++ b/pages/authors.vue
@@ -1,7 +1,7 @@
 <script lang="ts" setup>
 	import icon from "~/components/icon.vue";
-	import { bp, subscriptions } from "~/lib/client/listActions";
-	import { IUser } from "~/models/user";
+	import { bp, subscriptions } from "@client/listActions";
+	import { IUser } from "@models/user";
 
 	const { data: authors } = (await useApiFetch<any[]>("/authors")) as {
 		data: Ref<any[]>;
diff --git a/pages/band/[id].vue b/pages/band/[id].vue
index 05fffee..215127a 100644
--- a/pages/band/[id].vue
+++ b/pages/band/[id].vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 	import storyList from "~/components/listings/stories.vue";
-	import { IBand } from "~/models/band";
+	import { IBand } from "@models/band";
 	const route = useRoute();
 	const { data: band } = await useApiFetch<IBand>(`/band/${route.params.id}`);
 </script>
diff --git a/pages/bands.vue b/pages/bands.vue
index 673a6c7..3561009 100644
--- a/pages/bands.vue
+++ b/pages/bands.vue
@@ -1,8 +1,8 @@
 <script lang="ts" setup>
-	import { IBand } from "~/models/band";
+	import { IBand } from "@models/band";
 	import icon from "~/components/icon.vue";
-	import { subscriptions, bp } from "~/lib/client/listActions";
-	import { IUser } from "~/models/user";
+	import { subscriptions, bp } from "@client/listActions";
+	import { IUser } from "@models/user";
 
 	const { data: bands } = (await useApiFetch<NonNullable<IBand[]>>(
 		"/band/all",
diff --git a/pages/new-story.vue b/pages/new-story.vue
index 313da71..22f0087 100644
--- a/pages/new-story.vue
+++ b/pages/new-story.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 	import storyForm from "~/components/story/create/storyform.vue";
-	import { defaultStory } from "~/lib/client/types/form/story";
+	import { defaultStory } from "@client/types/form/story";
 	definePageMeta({
 		middleware: ["auth"],
 	});
diff --git a/pages/register.vue b/pages/register.vue
index a2696d3..dc8eaaa 100644
--- a/pages/register.vue
+++ b/pages/register.vue
@@ -15,7 +15,7 @@
 
 	import { useChallengeV2 } from "vue-recaptcha";
 	import { notification } from "ant-design-vue";
-	import { log } from "~/lib/server/logger";
+	import { log } from "@server/logger";
 	import termsOfServices from "~/components/tos.vue";
 	useRecaptchaProvider();
 
diff --git a/pages/story/[id]/[cidx]/index.vue b/pages/story/[id]/[cidx]/index.vue
index 4f35356..65e8897 100644
--- a/pages/story/[id]/[cidx]/index.vue
+++ b/pages/story/[id]/[cidx]/index.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
-	import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory";
+	import { SingleChapterResult } from "@client/types/slightlyDifferentStory";
 	import { theme } from "ant-design-vue";
-	import { storyMiddleware } from "~/lib/client/middleware";
+	import { storyMiddleware } from "@client/middleware";
 	import forChapter from "~/components/reviews/forChapter.vue";
 	import storyInfo from "~/components/story/view/storyInfo.vue";
 	import chapterPicker from "~/components/story/view/chapterPicker.vue";
diff --git a/pages/story/[id]/chapters.vue b/pages/story/[id]/chapters.vue
index daaa440..541899a 100644
--- a/pages/story/[id]/chapters.vue
+++ b/pages/story/[id]/chapters.vue
@@ -1,6 +1,6 @@
 <script lang="ts" setup>
-	import { storyMiddleware } from "~/lib/client/middleware";
-	import { IStory } from "~/models/stories";
+	import { storyMiddleware } from "@client/middleware";
+	import { IStory } from "@models/stories";
 
 	definePageMeta({
 		middleware: [storyMiddleware],
diff --git a/pages/story/[id]/edit.vue b/pages/story/[id]/edit.vue
index 11ed759..09e59d1 100644
--- a/pages/story/[id]/edit.vue
+++ b/pages/story/[id]/edit.vue
@@ -1,11 +1,11 @@
 <script lang="ts" setup>
 	import { v4 } from "uuid";
 	import storyForm from "~/components/story/create/storyform.vue";
-	import { FormStory } from "~/lib/client/types/form/story";
-	import { IStory } from "~/models/stories";
-	import { IChapter } from "~/models/stories/chapter";
+	import { FormStory } from "@client/types/form/story";
+	import { IStory } from "@models/stories";
+	import { IChapter } from "@models/stories/chapter";
 
-	import { storyEditMiddleware } from "~/lib/client/middleware";
+	import { storyEditMiddleware } from "@client/middleware";
 	const rtr = useRoute();
 	const {
 		data: { value: originalStory },
diff --git a/pages/user/[id].vue b/pages/user/[id].vue
index 548d2b8..5e1b098 100644
--- a/pages/user/[id].vue
+++ b/pages/user/[id].vue
@@ -1,8 +1,8 @@
 <script lang="ts" setup>
 	import { format, formatDistanceToNow, formatRelative } from "date-fns";
-	import { IUser } from "~/models/user";
-	import { IStory } from "~/models/stories";
-	import { favourites } from "~/lib/client/listActions";
+	import { IUser } from "@models/user";
+	import { IStory } from "@models/stories";
+	import { favourites } from "@client/listActions";
 	import singleStory from "~/components/listings/singleStory.vue";
 	import icon from "~/components/icon.vue";
 	import adminPanel from "~/components/profile/adminPanel.vue";
diff --git a/plugins/01.db.server.ts b/plugins/01.db.server.ts
index 63aac4d..8803497 100644
--- a/plugins/01.db.server.ts
+++ b/plugins/01.db.server.ts
@@ -1,9 +1,9 @@
 import mongoose from "mongoose";
 import * as net from "net";
-import plugnplay from "~/lib/server/plugnplay";
-import { Biffno } from "~/models/challenges/biffno";
-import { Ficmas } from "~/models/challenges/ficmas";
-import { Challenge } from "~/models/challenges/gen";
+import plugnplay from "@server/plugnplay";
+import { Biffno } from "@models/challenges/biffno";
+import { Ficmas } from "@models/challenges/ficmas";
+import { Challenge } from "@models/challenges/gen";
 export default defineNuxtPlugin({
 	name: "mongo",
 	// enforce: 'pre',
diff --git a/server/api/all-users.get.ts b/server/api/all-users.get.ts
index 9d7b78c..d792b1b 100644
--- a/server/api/all-users.get.ts
+++ b/server/api/all-users.get.ts
@@ -1,4 +1,4 @@
-import { User } from "~/models/user";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	const q = getQuery(ev);
diff --git a/server/api/auth/login.post.ts b/server/api/auth/login.post.ts
index a86e82d..32f64d8 100644
--- a/server/api/auth/login.post.ts
+++ b/server/api/auth/login.post.ts
@@ -1,7 +1,7 @@
 import mongoose from "mongoose";
 import jwt from "jsonwebtoken";
-import { IUser, User } from "~/models/user";
-import { log } from "~/lib/server/logger";
+import { IUser, User } from "@models/user";
+import { log } from "@server/logger";
 
 export default eventHandler(async (event) => {
 	const wrongMsg = "wrong credentials";
diff --git a/server/api/auth/register.post.ts b/server/api/auth/register.post.ts
index 91e9057..9a446c2 100644
--- a/server/api/auth/register.post.ts
+++ b/server/api/auth/register.post.ts
@@ -1,9 +1,9 @@
 import { weirdToNormalChars as w2nc } from "weird-to-normal-chars";
 import crypto from "crypto";
-import { usernameRegex } from "~/lib/server/constants";
-import { User } from "~/models/user";
+import { usernameRegex } from "@server/constants";
+import { User } from "@models/user";
 import mongoose from "mongoose";
-import captcha from "~/lib/server/middlewareButNotReally/captcha";
+import captcha from "@server/middlewareButNotReally/captcha";
 
 export default eventHandler(async (event) => {
 	const body = await readBody(event);
diff --git a/server/api/auth/session.get.ts b/server/api/auth/session.get.ts
index 337b303..4fda71d 100644
--- a/server/api/auth/session.get.ts
+++ b/server/api/auth/session.get.ts
@@ -1,5 +1,5 @@
 import jwt from "jsonwebtoken";
-import { log } from "~/lib/server/logger";
+import { log } from "@server/logger";
 export default eventHandler((event) => {
 	let ahead = (
 		getHeaders(event).authorization ||
diff --git a/server/api/authors.get.ts b/server/api/authors.get.ts
index 84b9042..c0b7c72 100644
--- a/server/api/authors.get.ts
+++ b/server/api/authors.get.ts
@@ -1,4 +1,4 @@
-import { User } from "~/models/user";
+import { User } from "@models/user";
 let authorSingleton: {
 	lastRefreshed: number;
 	data: {
diff --git a/server/api/band/[id]/index.get.ts b/server/api/band/[id]/index.get.ts
index 7574bc5..e8d1ab5 100644
--- a/server/api/band/[id]/index.get.ts
+++ b/server/api/band/[id]/index.get.ts
@@ -1,5 +1,5 @@
-import { messages } from "~/lib/server/constants";
-import { Band } from "~/models/band";
+import { messages } from "@server/constants";
+import { Band } from "@models/band";
 
 export default eventHandler(async (ev) => {
 	const id = parseInt(getRouterParam(ev, "id") as string);
diff --git a/server/api/band/[id]/index.put.ts b/server/api/band/[id]/index.put.ts
index 2e5c9ba..b254cbc 100644
--- a/server/api/band/[id]/index.put.ts
+++ b/server/api/band/[id]/index.put.ts
@@ -1,7 +1,7 @@
-import { messages } from "~/lib/server/constants";
-import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Band, IBand } from "~/models/band";
+import { messages } from "@server/constants";
+import isAdmin from "@server/middlewareButNotReally/isAdmin";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Band, IBand } from "@models/band";
 
 export default eventHandler(async (ev) => {
 	isAdmin(ev);
diff --git a/server/api/band/[id]/stories.get.ts b/server/api/band/[id]/stories.get.ts
index 2e6f86a..e5f02b1 100644
--- a/server/api/band/[id]/stories.get.ts
+++ b/server/api/band/[id]/stories.get.ts
@@ -1,6 +1,6 @@
-import { listQuerier } from "~/lib/server/dbHelpers";
-import { Band } from "~/models/band";
-import { Story } from "~/models/stories";
+import { listQuerier } from "@server/dbHelpers";
+import { Band } from "@models/band";
+import { Story } from "@models/stories";
 
 export default eventHandler(async (event) => {
 	const params = getRouterParams(event);
diff --git a/server/api/band/all.get.ts b/server/api/band/all.get.ts
index 7bbb85d..48354a7 100644
--- a/server/api/band/all.get.ts
+++ b/server/api/band/all.get.ts
@@ -1,5 +1,5 @@
-import { Band } from "~/models/band";
-import { IUser } from "~/models/user";
+import { Band } from "@models/band";
+import { IUser } from "@models/user";
 
 export default cachedEventHandler(async (ev) => {
 	let bands = await Band.find({
diff --git a/server/api/exists/email.get.ts b/server/api/exists/email.get.ts
index e5b768f..3ea078a 100644
--- a/server/api/exists/email.get.ts
+++ b/server/api/exists/email.get.ts
@@ -1,5 +1,5 @@
-import { usernameRegex } from "~/lib/server/constants";
-import { User } from "~/models/user";
+import { usernameRegex } from "@server/constants";
+import { User } from "@models/user";
 
 export default eventHandler(async (event) => {
 	const query = getQuery(event);
diff --git a/server/api/exists/username.get.ts b/server/api/exists/username.get.ts
index c2d6d3b..ac23875 100644
--- a/server/api/exists/username.get.ts
+++ b/server/api/exists/username.get.ts
@@ -1,5 +1,5 @@
-import { usernameRegex } from "~/lib/server/constants";
-import { User } from "~/models/user";
+import { usernameRegex } from "@server/constants";
+import { User } from "@models/user";
 
 export default eventHandler(async (event) => {
 	const query = getQuery(event);
diff --git a/server/api/latest.get.ts b/server/api/latest.get.ts
index 4e5bef7..258581f 100644
--- a/server/api/latest.get.ts
+++ b/server/api/latest.get.ts
@@ -1,6 +1,5 @@
-import { listQuerier } from "~/lib/server/dbHelpers";
-import { Story } from "~/models/stories";
-import { log } from "~/lib/server/logger";
+import { listQuerier } from "@server/dbHelpers";
+import { log } from "@server/logger";
 
 export default eventHandler(async (ev) => {
 	const s = await listQuerier({}, ev.context, ev, 20, {
diff --git a/server/api/review/[id]/index.delete.ts b/server/api/review/[id]/index.delete.ts
index 191bbed..806ffcc 100644
--- a/server/api/review/[id]/index.delete.ts
+++ b/server/api/review/[id]/index.delete.ts
@@ -1,7 +1,7 @@
-import { messages } from "~/lib/server/constants";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Story } from "~/models/stories";
-import { Review } from "~/models/stories/review";
+import { messages } from "@server/constants";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Story } from "@models/stories";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/review/[id]/index.put.ts b/server/api/review/[id]/index.put.ts
index f47ac4b..80edaf9 100644
--- a/server/api/review/[id]/index.put.ts
+++ b/server/api/review/[id]/index.put.ts
@@ -1,8 +1,8 @@
 import san from "sanitize-html";
-import { messages } from "~/lib/server/constants";
-import { log } from "~/lib/server/logger";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Review } from "~/models/stories/review";
+import { messages } from "@server/constants";
+import { log } from "@server/logger";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/review/[id]/reply.post.ts b/server/api/review/[id]/reply.post.ts
index 51c7d98..0f97eed 100644
--- a/server/api/review/[id]/reply.post.ts
+++ b/server/api/review/[id]/reply.post.ts
@@ -1,8 +1,8 @@
 import san from "sanitize-html";
-import { messages } from "~/lib/server/constants";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Story } from "~/models/stories";
-import { Review } from "~/models/stories/review";
+import { messages } from "@server/constants";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Story } from "@models/stories";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/sidebar/index.get.ts b/server/api/sidebar/index.get.ts
index 6c92adb..9e4d0f6 100644
--- a/server/api/sidebar/index.get.ts
+++ b/server/api/sidebar/index.get.ts
@@ -1,4 +1,4 @@
-import { SidebarItem } from "~/models/sidebarEntry";
+import { SidebarItem } from "@models/sidebarEntry";
 
 export default cachedEventHandler(async (ev) => {
 	const si = await SidebarItem.find({});
diff --git a/server/api/story/[id]/[chapter]/index.get.ts b/server/api/story/[id]/[chapter]/index.get.ts
index 0c8d522..9f3e83b 100644
--- a/server/api/story/[id]/[chapter]/index.get.ts
+++ b/server/api/story/[id]/[chapter]/index.get.ts
@@ -1,6 +1,6 @@
-import { chapterTransformer } from "~/lib/server/dbHelpers";
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import storyCheck from "~/lib/server/middlewareButNotReally/storyCheck";
+import { chapterTransformer } from "@server/dbHelpers";
+import { storyQuerier } from "@server/dbHelpers";
+import storyCheck from "@server/middlewareButNotReally/storyCheck";
 
 export default eventHandler(async (ev) => {
 	const story = await storyQuerier(ev);
diff --git a/server/api/story/[id]/[chapter]/index.put.ts b/server/api/story/[id]/[chapter]/index.put.ts
index 8ecea81..053c4d2 100644
--- a/server/api/story/[id]/[chapter]/index.put.ts
+++ b/server/api/story/[id]/[chapter]/index.put.ts
@@ -1,11 +1,11 @@
-import { FormChapter } from "~/lib/client/types/form/story";
-import { countWords } from "~/lib/functions";
-import { messages } from "~/lib/server/constants";
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { canModify } from "~/lib/server/middlewareButNotReally/storyPrivileges";
-import { replaceOrUploadContent, bodyHandler } from "~/lib/server/storyHelpers";
-import { Story } from "~/models/stories";
+import { FormChapter } from "@client/types/form/story";
+import { countWords } from "@functions";
+import { messages } from "@server/constants";
+import { storyQuerier } from "@server/dbHelpers";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { canModify } from "@server/middlewareButNotReally/storyPrivileges";
+import { replaceOrUploadContent, bodyHandler } from "@server/storyHelpers";
+import { Story } from "@models/stories";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/story/[id]/[chapter]/reviews/index.get.ts b/server/api/story/[id]/[chapter]/reviews/index.get.ts
index 2987b82..80998f0 100644
--- a/server/api/story/[id]/[chapter]/reviews/index.get.ts
+++ b/server/api/story/[id]/[chapter]/reviews/index.get.ts
@@ -1,5 +1,5 @@
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import { Review } from "~/models/stories/review";
+import { storyQuerier } from "@server/dbHelpers";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	let story = await storyQuerier(ev);
diff --git a/server/api/story/[id]/[chapter]/reviews/index.post.ts b/server/api/story/[id]/[chapter]/reviews/index.post.ts
index 1fcfc64..7e025a8 100644
--- a/server/api/story/[id]/[chapter]/reviews/index.post.ts
+++ b/server/api/story/[id]/[chapter]/reviews/index.post.ts
@@ -1,8 +1,8 @@
 import san from "sanitize-html";
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Story } from "~/models/stories";
-import { Review } from "~/models/stories/review";
+import { storyQuerier } from "@server/dbHelpers";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Story } from "@models/stories";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/story/[id]/full.get.ts b/server/api/story/[id]/full.get.ts
index 77fb26d..af06ca7 100644
--- a/server/api/story/[id]/full.get.ts
+++ b/server/api/story/[id]/full.get.ts
@@ -1,7 +1,7 @@
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import { chapterTransformer } from "~/lib/server/dbHelpers";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { messages } from "~/lib/server/constants";
+import { storyQuerier } from "@server/dbHelpers";
+import { chapterTransformer } from "@server/dbHelpers";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { messages } from "@server/constants";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/story/[id]/index.delete.ts b/server/api/story/[id]/index.delete.ts
index 2107737..ab975a1 100644
--- a/server/api/story/[id]/index.delete.ts
+++ b/server/api/story/[id]/index.delete.ts
@@ -1,7 +1,7 @@
-import { messages } from "~/lib/server/constants";
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import { canDelete } from "~/lib/server/middlewareButNotReally/storyPrivileges";
-import { Story } from "~/models/stories";
+import { messages } from "@server/constants";
+import { storyQuerier } from "@server/dbHelpers";
+import { canDelete } from "@server/middlewareButNotReally/storyPrivileges";
+import { Story } from "@models/stories";
 
 export default eventHandler(async (ev) => {
 	const tmpS = await storyQuerier(ev);
diff --git a/server/api/story/[id]/index.get.ts b/server/api/story/[id]/index.get.ts
index a98743c..33d6716 100644
--- a/server/api/story/[id]/index.get.ts
+++ b/server/api/story/[id]/index.get.ts
@@ -1,5 +1,5 @@
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import storyCheck from "~/lib/server/middlewareButNotReally/storyCheck";
+import { storyQuerier } from "@server/dbHelpers";
+import storyCheck from "@server/middlewareButNotReally/storyCheck";
 export default eventHandler(async (ev) => {
 	const story = await storyQuerier(ev);
 	let chrs = await storyCheck(ev, story, 0);
diff --git a/server/api/story/[id]/index.put.ts b/server/api/story/[id]/index.put.ts
index e5a2d18..1407938 100644
--- a/server/api/story/[id]/index.put.ts
+++ b/server/api/story/[id]/index.put.ts
@@ -1,18 +1,18 @@
 import { Readable } from "stream";
 import { Document } from "mongoose";
-import { IStory, Story } from "~/models/stories";
-import { FormStory } from "~/lib/client/types/form/story";
-import { storyQuerier } from "~/lib/server/dbHelpers";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { canModify } from "~/lib/server/middlewareButNotReally/storyPrivileges";
+import { IStory, Story } from "@models/stories";
+import { FormStory } from "@client/types/form/story";
+import { storyQuerier } from "@server/dbHelpers";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { canModify } from "@server/middlewareButNotReally/storyPrivileges";
 import {
 	bodyHandler,
 	getBucket,
 	modelFormChapter,
 	replaceOrUploadContent,
-} from "~/lib/server/storyHelpers";
-import { countWords } from "~/lib/functions";
-import { messages } from "~/lib/server/constants";
+} from "@server/storyHelpers";
+import { countWords } from "@functions";
+import { messages } from "@server/constants";
 
 export default eventHandler(async (ev) => {
 	let os:
diff --git a/server/api/story/[id]/lovers.get.ts b/server/api/story/[id]/lovers.get.ts
index 42759c0..2ba8a55 100644
--- a/server/api/story/[id]/lovers.get.ts
+++ b/server/api/story/[id]/lovers.get.ts
@@ -1,7 +1,8 @@
-import { User } from "~/models/user";
+import { User } from "@models/user";
+import isIdNan from "@server/middlewareButNotReally/isIdNan";
 
 export default eventHandler(async (ev) => {
-	const id = parseInt(getRouterParam(ev, "id") as string);
+	const id = isIdNan(ev);
 	let dat = await User.find({
 		"favs.stories": {
 			$in: [id],
diff --git a/server/api/story/new.post.ts b/server/api/story/new.post.ts
index 75180db..3f7d320 100644
--- a/server/api/story/new.post.ts
+++ b/server/api/story/new.post.ts
@@ -1,15 +1,11 @@
 import { Readable } from "stream";
 import san from "sanitize-html";
-import { FormStory } from "~/lib/client/types/form/story";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import {
-	getBucket,
-	bodyHandler,
-	modelFormChapter,
-} from "~/lib/server/storyHelpers";
-import { Story } from "~/models/stories";
-import { sanitizeConf } from "~/lib/server/constants";
-import { countWords } from "~/lib/functions";
+import { FormStory } from "@client/types/form/story";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { getBucket, bodyHandler, modelFormChapter } from "@server/storyHelpers";
+import { Story } from "@models/stories";
+import { sanitizeConf } from "@server/constants";
+import { countWords } from "@functions";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/totals.get.ts b/server/api/totals.get.ts
index ffc7ed2..a4e6a02 100644
--- a/server/api/totals.get.ts
+++ b/server/api/totals.get.ts
@@ -1,6 +1,6 @@
 import mongoose from "mongoose";
-import { Story } from "~/models/stories";
-import { User } from "~/models/user";
+import { Story } from "@models/stories";
+import { User } from "@models/user";
 
 let authorSingleton: {
 	lastRefreshed: number;
diff --git a/server/api/upload/avatar.post.ts b/server/api/upload/avatar.post.ts
index 1136b33..ad8a365 100644
--- a/server/api/upload/avatar.post.ts
+++ b/server/api/upload/avatar.post.ts
@@ -1,6 +1,6 @@
 import { v4 } from "uuid";
 import { resolve } from "path";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
 import sharp from "sharp";
 
 export default eventHandler(async (ev) => {
diff --git a/server/api/upload/content.post.ts b/server/api/upload/content.post.ts
index 92b6665..02ac9b1 100644
--- a/server/api/upload/content.post.ts
+++ b/server/api/upload/content.post.ts
@@ -1,9 +1,9 @@
 import { writeFileSync } from "fs";
 import { extname } from "path";
 import { v4 } from "uuid";
-import { ContentFilenameRegex } from "~/lib/server/constants";
-import { log } from "~/lib/server/logger";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
+import { ContentFilenameRegex } from "@server/constants";
+import { log } from "@server/logger";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
 
 export default eventHandler(async (ev) => {
 	const noMultipart = "no multipart data found!???!?";
diff --git a/server/api/user/[id]/admin.post.ts b/server/api/user/[id]/admin.post.ts
index e84ad07..44f692d 100644
--- a/server/api/user/[id]/admin.post.ts
+++ b/server/api/user/[id]/admin.post.ts
@@ -1,6 +1,6 @@
-import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import isAdmin from "@server/middlewareButNotReally/isAdmin";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/[id]/ban.post.ts b/server/api/user/[id]/ban.post.ts
index 9a0bc80..e9cc465 100644
--- a/server/api/user/[id]/ban.post.ts
+++ b/server/api/user/[id]/ban.post.ts
@@ -1,6 +1,6 @@
-import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import isAdmin from "@server/middlewareButNotReally/isAdmin";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/[id]/block.post.ts b/server/api/user/[id]/block.post.ts
index 7e59889..c4f4cec 100644
--- a/server/api/user/[id]/block.post.ts
+++ b/server/api/user/[id]/block.post.ts
@@ -1,5 +1,5 @@
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/[id]/index.get.ts b/server/api/user/[id]/index.get.ts
index 4d13231..07c40a0 100644
--- a/server/api/user/[id]/index.get.ts
+++ b/server/api/user/[id]/index.get.ts
@@ -1,7 +1,7 @@
-import { messages } from "~/lib/server/constants";
-import { Ficmas } from "~/models/challenges/ficmas";
-import { Challenge } from "~/models/challenges/gen";
-import { IUser, User } from "~/models/user";
+import { messages } from "@server/constants";
+import { Ficmas } from "@models/challenges/ficmas";
+import { Challenge } from "@models/challenges/gen";
+import { IUser, User } from "@models/user";
 
 export default cachedEventHandler(async (ev) => {
 	const id = parseInt(getRouterParam(ev, "id")!);
diff --git a/server/api/user/[id]/shared-ip.get.ts b/server/api/user/[id]/shared-ip.get.ts
index 410c287..262a4bb 100644
--- a/server/api/user/[id]/shared-ip.get.ts
+++ b/server/api/user/[id]/shared-ip.get.ts
@@ -1,7 +1,7 @@
-import { messages } from "~/lib/server/constants";
-import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import { messages } from "@server/constants";
+import isAdmin from "@server/middlewareButNotReally/isAdmin";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/[id]/stories.get.ts b/server/api/user/[id]/stories.get.ts
index b73c0d4..588a584 100644
--- a/server/api/user/[id]/stories.get.ts
+++ b/server/api/user/[id]/stories.get.ts
@@ -1,4 +1,4 @@
-import { listQuerier } from "~/lib/server/dbHelpers";
+import { listQuerier } from "@server/dbHelpers";
 
 export default cachedEventHandler(async (ev) => {
 	const id = parseInt(getRouterParam(ev, "id")!);
diff --git a/server/api/user/[id]/unblock.post.ts b/server/api/user/[id]/unblock.post.ts
index 0ca732d..274e52c 100644
--- a/server/api/user/[id]/unblock.post.ts
+++ b/server/api/user/[id]/unblock.post.ts
@@ -1,5 +1,5 @@
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/me/favs.put.ts b/server/api/user/me/favs.put.ts
index 35260ab..3912d88 100644
--- a/server/api/user/me/favs.put.ts
+++ b/server/api/user/me/favs.put.ts
@@ -1,6 +1,6 @@
-import { FavPayload, SubPayload } from "~/lib/client/types/form/favSub";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import { FavPayload, SubPayload } from "@client/types/form/favSub";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/me/hide.put.ts b/server/api/user/me/hide.put.ts
index 58a4037..d530724 100644
--- a/server/api/user/me/hide.put.ts
+++ b/server/api/user/me/hide.put.ts
@@ -1,6 +1,6 @@
-import { HidePayload } from "~/lib/client/types/form/favSub";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import { HidePayload } from "@client/types/form/favSub";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/me/index.put.ts b/server/api/user/me/index.put.ts
index 0980385..cb99373 100644
--- a/server/api/user/me/index.put.ts
+++ b/server/api/user/me/index.put.ts
@@ -1,10 +1,10 @@
 import san from "sanitize-html";
 import { weirdToNormalChars } from "weird-to-normal-chars";
-import { Profile, MyStuff } from "~/lib/client/types/form/myStuff";
-import { apiRoot, messages } from "~/lib/server/constants";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Review } from "~/models/stories/review";
-import { IUser, User } from "~/models/user";
+import { Profile, MyStuff } from "@client/types/form/myStuff";
+import { apiRoot, messages } from "@server/constants";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Review } from "@models/stories/review";
+import { IUser, User } from "@models/user";
 import axios from "axios";
 
 function emsg(arg: string): any {
diff --git a/server/api/user/me/profile.put.ts b/server/api/user/me/profile.put.ts
index d6fe683..a8aeb6c 100644
--- a/server/api/user/me/profile.put.ts
+++ b/server/api/user/me/profile.put.ts
@@ -1,10 +1,10 @@
 import san from "sanitize-html";
 import axios from "axios";
-import { Profile } from "~/lib/client/types/form/myStuff";
-import { apiRoot, h2m } from "~/lib/server/constants";
-import forumId from "~/lib/server/forumId";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import { Profile } from "@client/types/form/myStuff";
+import { apiRoot, h2m } from "@server/constants";
+import forumId from "@server/forumId";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/me/reviews.get.ts b/server/api/user/me/reviews.get.ts
index ab779f9..def87b8 100644
--- a/server/api/user/me/reviews.get.ts
+++ b/server/api/user/me/reviews.get.ts
@@ -1,6 +1,6 @@
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { Story } from "~/models/stories";
-import { Review } from "~/models/stories/review";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { Story } from "@models/stories";
+import { Review } from "@models/stories/review";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/api/user/me/subscriptions.put.ts b/server/api/user/me/subscriptions.put.ts
index 6446604..031d911 100644
--- a/server/api/user/me/subscriptions.put.ts
+++ b/server/api/user/me/subscriptions.put.ts
@@ -1,6 +1,6 @@
-import { SubPayload } from "~/lib/client/types/form/favSub";
-import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn";
-import { User } from "~/models/user";
+import { SubPayload } from "@client/types/form/favSub";
+import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn";
+import { User } from "@models/user";
 
 export default eventHandler(async (ev) => {
 	isLoggedIn(ev);
diff --git a/server/middleware/00.dbconn.ts b/server/middleware/00.dbconn.ts
index 5fe194c..a88f9ce 100644
--- a/server/middleware/00.dbconn.ts
+++ b/server/middleware/00.dbconn.ts
@@ -1,6 +1,6 @@
 import mongoose from "mongoose";
-import { log } from "~/lib/server/logger";
-import plugnplay from "~/lib/server/plugnplay";
+import { log } from "@server/logger";
+import plugnplay from "@server/plugnplay";
 
 export default eventHandler(async (event) => {
 	log.info("middleware connecting", { label: "middleware/db" });
diff --git a/server/middleware/05.currentUser.ts b/server/middleware/05.currentUser.ts
index c7d22be..38eaaff 100644
--- a/server/middleware/05.currentUser.ts
+++ b/server/middleware/05.currentUser.ts
@@ -1,6 +1,6 @@
 import jwt from "jsonwebtoken";
-import { log } from "~/lib/server/logger";
-import { User } from "~/models/user";
+import { log } from "@server/logger";
+import { User } from "@models/user";
 
 export default defineEventHandler(async (event) => {
 	let ahead = (
diff --git a/server/middleware/10.ficmasData.ts b/server/middleware/10.ficmasData.ts
index 65ae9f8..71b7767 100644
--- a/server/middleware/10.ficmasData.ts
+++ b/server/middleware/10.ficmasData.ts
@@ -1,4 +1,4 @@
-import { Ficmas } from "~/models/challenges/ficmas";
+import { Ficmas } from "@models/challenges/ficmas";
 
 export default eventHandler(async (event) => {
 	let y = new Date().getFullYear();
diff --git a/server/middleware/20.cidx.ts b/server/middleware/20.cidx.ts
index 60d2b44..49b12dd 100644
--- a/server/middleware/20.cidx.ts
+++ b/server/middleware/20.cidx.ts
@@ -1,4 +1,7 @@
+import { log } from "@server/logger";
+
 export default eventHandler((ev) => {
 	let chapParam = getRouterParams(ev).chapter;
+	log.silly(JSON.stringify(getRouterParams(ev)), { label: "sigh" });
 	ev.context.chapterIndex = !!chapParam ? parseInt(chapParam) - 1 : 0;
 });
diff --git a/server/middleware/90.log.ts b/server/middleware/90.log.ts
index 514e5e2..dec5665 100644
--- a/server/middleware/90.log.ts
+++ b/server/middleware/90.log.ts
@@ -1,4 +1,4 @@
-import { log } from "~/lib/server/logger";
+import { log } from "@server/logger";
 
 export default eventHandler(async (ev) => {
 	const p = log.startTimer();
diff --git a/server/tsconfig.json b/server/tsconfig.json
index 78394c7..cb1c48f 100644
--- a/server/tsconfig.json
+++ b/server/tsconfig.json
@@ -2,6 +2,17 @@
 	"extends": "../.nuxt/tsconfig.server.json",
 	"compilerOptions": {
 		"allowJs": true,
-		"outDir": "../out"
+		"outDir": "../out",
+		"paths": {
+			"@models/*": ["../models/*"],
+			"@client/*": ["./lib/client/*"],
+			"@server/*": ["../lib/server/*"],
+			"@models/**": ["../models/**"],
+			"@client/**": ["../lib/client/**"],
+			"@server/**": ["../lib/server/**"],
+			"@functions": ["../lib/functions.ts"],
+			"@dbconfig": ["../lib/dbconfig.ts"],
+			"@constants": ["../lib/constants.ts"]
+		}
 	}
 }
diff --git a/tsconfig.json b/tsconfig.json
index 41c5ff8..d15e716 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,7 +4,17 @@
 		"allowJs": true,
 		"noImplicitAny": false,
 		"noImplicitThis": false,
-		"verbatimModuleSyntax": false
+		"verbatimModuleSyntax": false,
+		"paths": {
+			"@models/*": ["./models/*"],
+			"@client/*": ["./lib/client/*"],
+			"@server/*": ["./lib/server/*"],
+			"@client/**": ["./lib/client/**"],
+			"@models/**": ["./models/**"],
+			"@server/**": ["./lib/server/**"],
+			"@functions": ["./lib/functions.ts"],
+			"@dbconfig": ["./lib/dbconfig.ts"]
+		}
 	},
 	"extends": "./.nuxt/tsconfig.json"
 }
diff --git a/typings/auth.d.ts b/typings/auth.d.ts
index 95ab118..460bf04 100644
--- a/typings/auth.d.ts
+++ b/typings/auth.d.ts
@@ -1,4 +1,4 @@
-import { IUser } from "~/models/user";
+import { IUser } from "@models/user";
 import { SessionData as SDI } from "#auth";
 
 declare module "#auth" {
diff --git a/typings/express.d.ts b/typings/express.d.ts
index de9bdec..d784ef8 100644
--- a/typings/express.d.ts
+++ b/typings/express.d.ts
@@ -1,6 +1,6 @@
 import { Document } from "mongoose";
-import { IStory } from "~/models/stories";
-import { IUser } from "~/models/user";
+import { IStory } from "@models/stories";
+import { IUser } from "@models/user";
 import { Request } from "express";
 
 declare global {
diff --git a/typings/fetchResult.ts b/typings/fetchResult.ts
index 2f5decf..5bf525e 100644
--- a/typings/fetchResult.ts
+++ b/typings/fetchResult.ts
@@ -1,4 +1,4 @@
-import { IStory } from "~/models/stories";
+import { IStory } from "@models/stories";
 
 export interface StoryFetchResult {
 	stories: IStory[];
diff --git a/typings/h3.d.ts b/typings/h3.d.ts
index e9fcca6..30ff45b 100644
--- a/typings/h3.d.ts
+++ b/typings/h3.d.ts
@@ -1,6 +1,6 @@
 import type { H3Event, H3EventContext } from "h3";
-import { IFicmas } from "~/models/challenges/ficmas";
-import { IUser } from "~/models/user";
+import { IFicmas } from "@models/challenges/ficmas";
+import { IUser } from "@models/user";
 declare module "h3" {
 	interface H3EventContext {
 		currentUser?: IUser;
diff --git a/typings/next.d.ts b/typings/next.d.ts
index 10599fd..fc2051a 100644
--- a/typings/next.d.ts
+++ b/typings/next.d.ts
@@ -1,6 +1,6 @@
 import { Document } from "mongoose";
-import { IStory } from "~/models/stories";
-import { IUser } from "~/models/user";
+import { IStory } from "@models/stories";
+import { IUser } from "@models/user";
 
 declare module "next" {
 	export interface NextApiRequest {