diff --git a/server/src/controllers/categoryController/index.ts b/server/src/controllers/categoryController/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6d9d91a1d812ac99c00af092a9ed2928a80d678f
--- /dev/null
+++ b/server/src/controllers/categoryController/index.ts
@@ -0,0 +1,65 @@
+import { Response, Request } from "express";
+import query from '../../services/db_query';
+import express from 'express';
+import Category from '../../models/category';
+
+const router = express.Router();
+const category = new Category();
+// routes Kategori
+// - hente alle kategorier (get)
+// SELECT * FROM category;
+// - hente et bestemt kategori (get)
+// SELECT * FROM category WHERE categoryid = #num;
+// - remove specific cateogry (post)
+// INSERT INTO `jonnynl_tdt4140`.`category` (`categoryid`, `navn`) VALUES ('4', 'ad');
+// - add category (post)
+// DELETE FROM `jonnynl_tdt4140`.`category` WHERE (`categoryid` = '3');
+
+/* ============================= CREATE ============================= */
+// Create category `/api/category/`
+router.route('/').post(async (request: Request, response: Response) => {
+	const {category} = request.body;
+	try {
+		const input = (` INSERT INTO category(navn) VALUES (?);`)
+		return response.status(200).json(
+            await query(input,[category])
+        );
+	} catch (error) {
+		return response.status(400).send("Bad Request");
+	}
+});
+
+/* ============================= READ ============================= */
+// Get category `/api/category/`
+router.route('/').get(async (_: Request, response: Response) => {
+	try {
+		response.status(200).json(await query("SELECT * FROM category;",""));
+	} catch (error) {
+		response.status(400).send("Bad Request");
+	}
+});
+
+// Get category from id `/api/category/:categoryid`
+router.route('/:categoryid').get(async (request: Request, response: Response) => {
+    const categoryid = request.params.categoryid;
+	try {
+		response.status(200).json(await query("SELECT * FROM category WHERE categoryid = ?",[categoryid]));
+	} catch (error) {
+		response.status(400).send("Bad Request");
+	}
+});
+
+/* ============================= UPDATE ============================= */
+
+/* ============================= DELETE ============================= */
+// remove category with id `/api/category/#categoryid`
+router.route('/').delete(async (request: Request, response: Response) => {
+    const categoryid = request.params.categoryid;
+	try {
+		response.status(200).json(await query("DELETE FROM category WHERE categoryid = ?",[categoryid]));
+	} catch (error) {
+		response.status(400).send("Bad Request");
+	}
+});
+
+export default router;
\ No newline at end of file
diff --git a/server/src/controllers/postController.ts b/server/src/controllers/postcontroller/index.ts
similarity index 74%
rename from server/src/controllers/postController.ts
rename to server/src/controllers/postcontroller/index.ts
index 99fa90a1c77d0205dab5fc18c547dd1eed345236..c437f2c608dd9d3087ecc1099a3544a4585f5a7b 100644
--- a/server/src/controllers/postController.ts
+++ b/server/src/controllers/postcontroller/index.ts
@@ -1,16 +1,12 @@
 import { Response, Request } from "express";
-import query from '../services/db_query';
+import query from '../../services/db_query';
 import express from 'express';
+import IPost from '../../models/post';
+import Category from '../../models/category';
+
 const router = express.Router();
+const category = new Category();
 
-interface IPost {
-	title: string;
-	description: string;
-	timestamp: number;
-	owner: string;
-	category: string;
-	imageUrl: string;
-}
 /* ============================= CREATE ============================= */
 // Create posts `/api/post/`
 //'{"title":"test3","description":"test3","timestamp":123123,"owner":"test3","category":"test3","imageUrl":"test3"}'
@@ -39,7 +35,11 @@ router.route('/').post(async (request: Request, response: Response) => {
 // Get all posts `/api/post/`
 router.route('/').get(async (_: Request, response: Response) => {
 	try {
-		response.status(200).json(await query("SELECT * FROM post;",""));
+		//response.status(200).json(await query("SELECT * FROM post;",""));
+		const input = `SELECT p.id, p.title, p.description, p.timestamp, p.owner, category.navn, p.imageUrl 
+		FROM post as p
+		INNER JOIN category ON category.categoryid = p.categoryid;`
+		response.status(200).json(await query(input,""));
 	} catch (error) {
 		response.status(400).send("Bad Request");
 	}
@@ -49,7 +49,11 @@ router.route('/').get(async (_: Request, response: Response) => {
 router.route('/:id').get(async (request: Request, response: Response) => {
 	const postId = request.params.id;
 	try {
-		response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId]));
+		//response.status(200).json(await query("SELECT * FROM post WHERE id=?;",[postId]));
+		const input = `SELECT p.id, p.title, p.description, p.timestamp, p.owner, category.navn, p.imageUrl 
+		FROM post as p
+		INNER JOIN category ON category.categoryid = p.categoryid WHERE p.id=?;`
+		response.status(200).json(await query(input,[postId]));
 	} catch (error) {
 		response.status(400).send("Bad Request");
 	}
diff --git a/server/src/index.ts b/server/src/index.ts
index 8d875a0e68cc187dc3a09d3cdc5de1ad52772847..d4ba8b032e3765eeacf7f072c4be828e38f69275 100644
--- a/server/src/index.ts
+++ b/server/src/index.ts
@@ -20,4 +20,4 @@ app.use("/api", routes);
 
 app.listen(port, () => {
 	console.log(`Listening on port ${port}!`)
-});
+});
\ No newline at end of file
diff --git a/server/src/models/category.ts b/server/src/models/category.ts
new file mode 100644
index 0000000000000000000000000000000000000000..be930c47a7b34d318dc14240ab7ffcb3534039ea
--- /dev/null
+++ b/server/src/models/category.ts
@@ -0,0 +1,26 @@
+class Category {
+    private list: string[] = [
+        
+    ]
+
+    // add a category to the category list
+    addToList(category: string) {
+        this.list.push(category);
+    }
+    
+    // remove a category from the category list
+    removeFromList(category: string) {
+        try {
+            delete this.list[this.list.indexOf(category)];
+        } catch(e) {
+            throw new Error("Couldnt delete category");
+        }
+    }
+
+    // return the list of categories.
+    getList() {
+        return this.list;
+    }
+}
+
+export default Category;
\ No newline at end of file
diff --git a/server/src/models/post.ts b/server/src/models/post.ts
new file mode 100644
index 0000000000000000000000000000000000000000..146bf71067332d191d975514b24837200d3d3706
--- /dev/null
+++ b/server/src/models/post.ts
@@ -0,0 +1,12 @@
+// Post modell, med typene:
+interface IPost {
+	title: string;
+	description: string;
+	timestamp: number;
+	owner: string;
+	category: string;
+	imageUrl: string;
+}
+
+// Eksporterer IPost til bruk i andre filer.
+export default IPost;
\ No newline at end of file
diff --git a/server/src/routes/routes.ts b/server/src/routes/routes.ts
index 49efb2c37e47305c88c0a75208a7f526e2746528..aec88f548f1ea10d2c42f362a6d057ba586f0fdd 100644
--- a/server/src/routes/routes.ts
+++ b/server/src/routes/routes.ts
@@ -1,11 +1,12 @@
-//import { example1, example2 } from '../controllers/example';
-import postController from '../controllers/postController'
+import postController from '../controllers/postcontroller';
+import categoryController from '../controllers/categoryController';
 import express from 'express';
 
 const router = express.Router();
 
 // Endpoints
-router.use("/post", postController); 
+router.use("/post", postController);
+router.use("/category", categoryController);
 
 
 export default router;