diff --git a/Backend/Middleware/multer.js b/Backend/Middleware/multer.js
index c9a5593813389d95ead76f1cfd160a75dc802bba..fd71c5ccb6232ebff55ac1e738e522e0e6e7459a 100644
--- a/Backend/Middleware/multer.js
+++ b/Backend/Middleware/multer.js
@@ -2,7 +2,7 @@ const multer  = require('multer')
 
 const storage = multer.diskStorage({
     destination: function (req, file, cb) {
-      cb(null, 'uploads')
+      cb(null, '/uploads')
     },
     filename: function (req, file, cb) {
       
diff --git a/Backend/Middleware/validator.js b/Backend/Middleware/validator.js
index 263f3a03c3461d9eff0d8d0b43ddc150ea2f8cfa..d65a15b98f7de0ddef4ff9b06dcd7003449941a9 100644
--- a/Backend/Middleware/validator.js
+++ b/Backend/Middleware/validator.js
@@ -18,8 +18,7 @@ exports.eventValidator = [
     body('startTime').isLength({min: 5}).withMessage("Event date must be 5 characters long"),
     body('endTime').not().isEmpty().trim().withMessage("End time is required"),
     body('ticketPrice').not().isEmpty().trim().withMessage("Ticket price is required"),
-    body('ticketQty').isEmail().normalizeEmail().withMessage("Ticket quantity is required"),
-    body('eventImage').not().isEmpty().trim().withMessage("Image is required"),
+    body('ticketQty').not().isEmpty().trim().withMessage("Ticket quantity is required"),
     body('eventDescription').isLength({min: 6}).withMessage("Description is required"),
 ]
 
@@ -28,6 +27,10 @@ exports.signinValidator = [
     body('password').isLength({min: 6}).withMessage("Password must be at least 6 characters long"),
 ]
 
+exports.imageValidator = [
+    body('eventImage').not().isEmpty().trim().withMessage("Image is required"),
+]
+
 exports.validatorResult = (req, res, next) => {
     const result = validationResult(req);
     const hasErrors = !result.isEmpty();
diff --git a/Backend/controllers/eventControllers.js b/Backend/controllers/eventControllers.js
index 87d43ec517e1de7d4307d8eacf6fdce58703b957..2315e532acd6214b8adca6f2c3b71b47cb42fa80 100644
--- a/Backend/controllers/eventControllers.js
+++ b/Backend/controllers/eventControllers.js
@@ -1,19 +1,67 @@
 import mongoose from 'mongoose'; 
-import { EventSchema } from '../models/eventModel';
+import Event from '../models/eventModel';
+import Image from "../models/userModel";
 
-// Creating event object
-const Event = mongoose.model('Event', EventSchema);
+// export vs module exports (which works) - fix refactor later
+exports.eventController = async (req, res) => {
+    console.log("inside controller", req.body);
+  
+    try{
+        // Destructuring sign up post request body into seperate variables for ref
+        const {
+            eventTitle,
+            organiser,
+            venueName,
+            venueAddress,
+            eventGenre,
+            startDate,
+            endDate,
+            startTime,
+            endTime,
+            ticketPrice,
+            ticketQty,
+            eventImage,
+            eventDescription,
+            errorMsg
+        } = req.body;
 
-exports.addNewEvent = async (req, res) => {
+        // Creating new instance of user from model
+        // const newImage = new Image();
+        // newImage.image = eventImage;
 
-    console.log("req", req)
-    console.log("server request body:", req.body)
-    console.log("server request file:", req.file)
-    console.log("server request user:", req.user)
+        const newEvent = new Event();
+        newEvent.eventTitle = eventTitle;
+        newEvent.organiser = organiser;
+        newEvent.venueName = venueName;
+        newEvent.venueAddress = venueAddress;
+        newEvent.eventGenre = eventGenre;
+        newEvent.startDate = startDate;
+        newEvent.endDate = endDate;
+        newEvent.startTime = startTime;
+        newEvent.endTime = endTime;
+        newEvent.ticketPrice = ticketPrice;
+        newEvent.ticketQty = ticketQty;
+        newEvent.eventImageId = "newImage";
+        newEvent.eventDescription = eventDescription;
 
-    res.json({
-        message: "Inside create event fucntion in controller"
-    })
+        console.log("req", req)
+        console.log("server request body:", req.body)
+        console.log("server request file:", req.file)
+        console.log("server request user:", req.user)
+
+        res.json({
+            message: "Inside create event fucntion in controller"
+        })
+        // await newImage.save();
+        await newEvent.save();
+    } catch (err){
+        console.log("event controller error:", err)
+
+        res.status(500).json({
+            errorMessage: "Server error"
+        })
+    }
+    
 
 
     // let newEvent = new Event(req.body);
diff --git a/Backend/controllers/imageControllers.js b/Backend/controllers/imageControllers.js
new file mode 100644
index 0000000000000000000000000000000000000000..5b026294f1c04aef06883ceab168d071497f67fa
--- /dev/null
+++ b/Backend/controllers/imageControllers.js
@@ -0,0 +1,88 @@
+import mongoose from 'mongoose'; 
+import Event from '../models/eventModel';
+import Image from "../models/userModel";
+
+// export vs module exports (which works) - fix refactor later
+exports.imageController = async (req, res) => {
+    console.log("inside controller", req.body);
+  
+    try{
+        // Destructuring sign up post request body into seperate variables for ref
+        const {
+            eventTitle,
+            organiser,
+            venueName,
+            venueAddress,
+            eventGenre,
+            startDate,
+            endDate,
+            startTime,
+            endTime,
+            ticketPrice,
+            ticketQty,
+            eventImage,
+            eventDescription,
+            errorMsg
+        } = req.body;
+
+        // Creating new instance of user from model
+        // const newImage = new Image();
+        // newImage.image = eventImage;
+
+        const newEvent = new Event();
+        newEvent.eventTitle = eventTitle;
+        newEvent.organiser = organiser;
+        newEvent.venueName = venueName;
+        newEvent.venueAddress = venueAddress;
+        newEvent.eventGenre = eventGenre;
+        newEvent.startDate = startDate;
+        newEvent.endDate = endDate;
+        newEvent.startTime = startTime;
+        newEvent.endTime = endTime;
+        newEvent.ticketPrice = ticketPrice;
+        newEvent.ticketQty = ticketQty;
+        newEvent.eventImageId = "newImage";
+        newEvent.eventDescription = eventDescription;
+
+        console.log("req", req)
+        console.log("server request body:", req.body)
+        console.log("server request file:", req.file)
+        console.log("server request user:", req.user)
+
+        res.json({
+            message: "Inside create event fucntion in controller"
+        })
+        // await newImage.save();
+        await newEvent.save();
+    } catch (err){
+        console.log("event controller error:", err)
+
+        res.status(500).json({
+            errorMessage: "Server error"
+        })
+    }
+    
+
+
+    // let newEvent = new Event(req.body);
+    // newEvent.save((err, Event) => {
+    //     if (err) {
+    //         res.send(err);
+    //     }
+    //     res.json(Event)
+    // }); 
+};
+
+export const getEvents = (req, res) => {
+    Event.find({}, (err, Event) => {
+        if (err) {
+            res.send(err);
+        }
+        res.json(Event)
+    }); 
+};
+
+
+
+
+
diff --git a/Backend/index.js b/Backend/index.js
index d70a9ac9100a41c582ebdc652a55bc6935246fb7..aac441846bbaf9d6020c3f17eaabfef2a65cf755 100644
--- a/Backend/index.js
+++ b/Backend/index.js
@@ -10,6 +10,10 @@ const app = express();
 const PORT = 4000; 
 var bodyParser = require('body-parser')
 
+//Multer 
+const multer = require('multer');
+const upload = multer({dest: 'uploads/'});
+
 // MongoDB connection 
 mongoose.Promise = global.Promise; 
 mongoose.connect('mongodb://localhost/TickcryptDB', {
@@ -42,9 +46,27 @@ authRoutes(app)
 
 app.get('/', (req, res) => 
     res.send(`Tickcrypt app is running on ${PORT}`)
-
 );
 
+app.post('/image', upload.single('file'), (req, res) => {
+    if (!req.file) {
+      console.log("No file received");
+
+      //Get file name to save to db
+      const host = req.host;
+      const filePath = req.protocol + "://" + host + '/' + req.file.path;
+      return res.send({
+        success: false
+      });
+  
+    } else {
+      console.log('file received');
+      return res.send({
+        success: true
+      })
+    }
+  });
+
 app.listen(PORT, () =>      
     console.log(`Your app server is running on port ${PORT}`)
 );
diff --git a/Backend/models/eventModel.js b/Backend/models/eventModel.js
index 2efdff7b98a873272c664c52ec98448e0168f081..407548e4b6003c253ac70bec377a1d4712f0bf88 100644
--- a/Backend/models/eventModel.js
+++ b/Backend/models/eventModel.js
@@ -51,6 +51,10 @@ export const EventSchema = new Schema({
         type: String, 
         // required: true
     },
+    eventImageId: {
+        type: String,
+        required: true
+    },
     eventDescription: {
         type: String,
         required: true
@@ -61,3 +65,7 @@ export const EventSchema = new Schema({
     }
 })
 
+
+const Event = mongoose.model('Event', EventSchema);
+
+module.exports = Event
\ No newline at end of file
diff --git a/Backend/models/imageModel.js b/Backend/models/imageModel.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed3d021ede19e604d06611c41098923078d42c91
--- /dev/null
+++ b/Backend/models/imageModel.js
@@ -0,0 +1,15 @@
+import mongoose from 'mongoose'; 
+
+const Schema = mongoose.Schema
+
+export const ImageSchema = new Schema({
+    img:
+    {
+        data: Buffer,
+        contentType: String
+    }
+})
+
+const Image = mongoose.model('Image', ImageSchema);
+
+module.exports = Image
\ No newline at end of file
diff --git a/Backend/package-lock.json b/Backend/package-lock.json
index ac64276cb0e1197d6b2158bbf7fb66ba0f639a0f..5ca64dc2b8b812ffa763674dc03932578c41fdeb 100644
--- a/Backend/package-lock.json
+++ b/Backend/package-lock.json
@@ -18,6 +18,7 @@
         "express-validator": "^6.14.0",
         "jsonwebtoken": "^8.5.1",
         "mongoose": "^6.0.13",
+        "multer": "^1.4.4",
         "nodemon": "^2.0.15"
       },
       "devDependencies": {
@@ -124,6 +125,11 @@
         "node": ">= 8"
       }
     },
+    "node_modules/append-field": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+      "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
+    },
     "node_modules/arr-diff": {
       "version": "4.0.0",
       "dev": true,
@@ -1676,6 +1682,39 @@
       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
     },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
+    "node_modules/busboy": {
+      "version": "0.2.14",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
+      "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
+      "dependencies": {
+        "dicer": "0.2.5",
+        "readable-stream": "1.1.x"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/busboy/node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+    },
+    "node_modules/busboy/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
     "node_modules/bytes": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -1972,6 +2011,20 @@
       "version": "0.0.1",
       "license": "MIT"
     },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "node_modules/configstore": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -2059,9 +2112,7 @@
     },
     "node_modules/core-util-is": {
       "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
+      "license": "MIT"
     },
     "node_modules/cors": {
       "version": "2.8.5",
@@ -2240,6 +2291,34 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/dicer": {
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
+      "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
+      "dependencies": {
+        "readable-stream": "1.1.x",
+        "streamsearch": "0.1.2"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/dicer/node_modules/isarray": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+    },
+    "node_modules/dicer/node_modules/readable-stream": {
+      "version": "1.1.14",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+      "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.1",
+        "isarray": "0.0.1",
+        "string_decoder": "~0.10.x"
+      }
+    },
     "node_modules/dot-prop": {
       "version": "5.3.0",
       "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
@@ -2947,7 +3026,6 @@
     },
     "node_modules/inherits": {
       "version": "2.0.4",
-      "dev": true,
       "license": "ISC"
     },
     "node_modules/ini": {
@@ -3247,9 +3325,7 @@
     },
     "node_modules/isarray": {
       "version": "1.0.0",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
+      "license": "MIT"
     },
     "node_modules/isobject": {
       "version": "3.0.1",
@@ -3576,7 +3652,6 @@
     },
     "node_modules/mkdirp": {
       "version": "0.5.5",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "minimist": "^1.2.5"
@@ -3710,6 +3785,24 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
+    "node_modules/multer": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz",
+      "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==",
+      "dependencies": {
+        "append-field": "^1.0.0",
+        "busboy": "^0.2.11",
+        "concat-stream": "^1.5.2",
+        "mkdirp": "^0.5.4",
+        "object-assign": "^4.1.1",
+        "on-finished": "^2.3.0",
+        "type-is": "^1.6.4",
+        "xtend": "^4.0.0"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
     "node_modules/nan": {
       "version": "2.14.2",
       "dev": true,
@@ -4127,9 +4220,7 @@
     },
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
+      "license": "MIT"
     },
     "node_modules/proxy-addr": {
       "version": "2.0.7",
@@ -4262,9 +4353,7 @@
     },
     "node_modules/readable-stream": {
       "version": "2.3.7",
-      "dev": true,
       "license": "MIT",
-      "optional": true,
       "dependencies": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -4277,9 +4366,7 @@
     },
     "node_modules/readable-stream/node_modules/string_decoder": {
       "version": "1.1.1",
-      "dev": true,
       "license": "MIT",
-      "optional": true,
       "dependencies": {
         "safe-buffer": "~5.1.0"
       }
@@ -4797,6 +4884,19 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/streamsearch": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "0.10.31",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+    },
     "node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -4988,6 +5088,11 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
     "node_modules/typedarray-to-buffer": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -5164,9 +5269,7 @@
     },
     "node_modules/util-deprecate": {
       "version": "1.0.2",
-      "dev": true,
-      "license": "MIT",
-      "optional": true
+      "license": "MIT"
     },
     "node_modules/utils-merge": {
       "version": "1.0.1",
@@ -5274,6 +5377,14 @@
         "node": ">=8"
       }
     },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
     "node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -5357,6 +5468,11 @@
         "picomatch": "^2.0.4"
       }
     },
+    "append-field": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+      "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
+    },
     "arr-diff": {
       "version": "4.0.0",
       "dev": true,
@@ -6740,6 +6856,38 @@
       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
     },
+    "buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
+    "busboy": {
+      "version": "0.2.14",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
+      "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
+      "requires": {
+        "dicer": "0.2.5",
+        "readable-stream": "1.1.x"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        }
+      }
+    },
     "bytes": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -6955,6 +7103,17 @@
     "concat-map": {
       "version": "0.0.1"
     },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "configstore": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -7020,9 +7179,7 @@
       "optional": true
     },
     "core-util-is": {
-      "version": "1.0.2",
-      "dev": true,
-      "optional": true
+      "version": "1.0.2"
     },
     "cors": {
       "version": "2.8.5",
@@ -7154,6 +7311,33 @@
         "repeating": "^2.0.0"
       }
     },
+    "dicer": {
+      "version": "0.2.5",
+      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
+      "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
+      "requires": {
+        "readable-stream": "1.1.x",
+        "streamsearch": "0.1.2"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        }
+      }
+    },
     "dot-prop": {
       "version": "5.3.0",
       "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
@@ -7682,8 +7866,7 @@
       }
     },
     "inherits": {
-      "version": "2.0.4",
-      "dev": true
+      "version": "2.0.4"
     },
     "ini": {
       "version": "2.0.0",
@@ -7888,9 +8071,7 @@
       "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw=="
     },
     "isarray": {
-      "version": "1.0.0",
-      "dev": true,
-      "optional": true
+      "version": "1.0.0"
     },
     "isobject": {
       "version": "3.0.1",
@@ -8145,7 +8326,6 @@
     },
     "mkdirp": {
       "version": "0.5.5",
-      "dev": true,
       "requires": {
         "minimist": "^1.2.5"
       }
@@ -8249,6 +8429,21 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
+    "multer": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz",
+      "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==",
+      "requires": {
+        "append-field": "^1.0.0",
+        "busboy": "^0.2.11",
+        "concat-stream": "^1.5.2",
+        "mkdirp": "^0.5.4",
+        "object-assign": "^4.1.1",
+        "on-finished": "^2.3.0",
+        "type-is": "^1.6.4",
+        "xtend": "^4.0.0"
+      }
+    },
     "nan": {
       "version": "2.14.2",
       "dev": true,
@@ -8546,9 +8741,7 @@
       "dev": true
     },
     "process-nextick-args": {
-      "version": "2.0.1",
-      "dev": true,
-      "optional": true
+      "version": "2.0.1"
     },
     "proxy-addr": {
       "version": "2.0.7",
@@ -8655,8 +8848,6 @@
     },
     "readable-stream": {
       "version": "2.3.7",
-      "dev": true,
-      "optional": true,
       "requires": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -8669,8 +8860,6 @@
       "dependencies": {
         "string_decoder": {
           "version": "1.1.1",
-          "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "~5.1.0"
           }
@@ -9075,6 +9264,16 @@
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
     },
+    "streamsearch": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
+    },
+    "string_decoder": {
+      "version": "0.10.31",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+    },
     "string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -9208,6 +9407,11 @@
         "mime-types": "~2.1.24"
       }
     },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
     "typedarray-to-buffer": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -9337,9 +9541,7 @@
       "dev": true
     },
     "util-deprecate": {
-      "version": "1.0.2",
-      "dev": true,
-      "optional": true
+      "version": "1.0.2"
     },
     "utils-merge": {
       "version": "1.0.1",
@@ -9416,6 +9618,11 @@
       "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
       "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
     },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+    },
     "yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
diff --git a/Backend/package.json b/Backend/package.json
index 21765661af3c98912bf6fda1ddfe5286395dd349..af6d1d7489d0558717d20268305d54dae26e1d9c 100644
--- a/Backend/package.json
+++ b/Backend/package.json
@@ -24,6 +24,7 @@
     "express-validator": "^6.14.0",
     "jsonwebtoken": "^8.5.1",
     "mongoose": "^6.0.13",
+    "multer": "^1.4.4",
     "nodemon": "^2.0.15"
   }
 }
diff --git a/Backend/routes/eventRoutes.js b/Backend/routes/eventRoutes.js
index f7c30a672beec2a5078ca80011777c452460dc86..17936472f5c3dad0799a776a7e69a5d1291286a5 100644
--- a/Backend/routes/eventRoutes.js
+++ b/Backend/routes/eventRoutes.js
@@ -1,5 +1,5 @@
 // Import controllers to connect to routes so the req can call the controller function based on the URL route
-import {addNewEvent, getEvents} from "../controllers/eventControllers"
+import {eventController, getEvents} from "../controllers/eventControllers"
 import {authenticateJWT} from "../middleware/authenticator"
 import {upload} from "../middleware/multer"
 import {eventValidator, validatorResult} from "../middleware/validator";
@@ -8,7 +8,7 @@ import {eventValidator, validatorResult} from "../middleware/validator";
 
 const eventRoutes = (app) => {
     app.route('/api/event')
-        .post(eventValidator, validatorResult, addNewEvent) 
+        .post(eventValidator, validatorResult, eventController)
         .get(getEvents)
     
 };
diff --git a/Backend/routes/imageRoutes.js b/Backend/routes/imageRoutes.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d4b78d80563db719cedf5a2e96a6c4b58d09c00
--- /dev/null
+++ b/Backend/routes/imageRoutes.js
@@ -0,0 +1,15 @@
+// Import controllers to connect to routes so the req can call the controller function based on the URL route
+import {eventController, getEvents} from "../controllers/eventControllers"
+import {authenticateJWT} from "../middleware/authenticator"
+import {upload} from "../middleware/multer"
+import {imageValidator, validatorResult} from "../middleware/validator";
+
+// upload.single("eventImage")
+
+const imageRoutes = (app) => {
+    app.route('/api/event')
+        .post(imageValidator, validatorResult, eventController)
+    
+};
+
+export default eventRoutes;
\ No newline at end of file
diff --git a/frontend/src/Components/CreateEventForm.js b/frontend/src/Components/CreateEventForm.js
index 67056b5be32d99c8dfea40289b33a16c73c939ef..be00829adc25acb595e6fd648e1980b06edc8658 100644
--- a/frontend/src/Components/CreateEventForm.js
+++ b/frontend/src/Components/CreateEventForm.js
@@ -2,6 +2,7 @@ import React, { useState } from "react";
 import errorAlert from "../Helpers/errorAlert";
 import isEmpty from 'validator/lib/isEmpty';
 import {createEvent} from '../api/event';
+import {createImage} from '../api/images';
 
 
 const CreateEventForm = () => {
@@ -72,31 +73,33 @@ const CreateEventForm = () => {
           }) 
        } else {         
 
-          const formData = {eventTitle, organiser, venueName, venueAddress, eventGenre, startDate, endDate, startTime, endTime, ticketPrice, ticketQty, eventImage, eventDescription }
+          const formData = {eventTitle, organiser, venueName, venueAddress, eventGenre, startDate, endDate, startTime, endTime, ticketPrice, ticketQty, eventDescription }
 
           //   for (var pair of formData.entries()) {
           //     console.log("axios got it", pair[0]+ ', ' + pair[1]); 
           // }
 
-          console.log(formData)
-          createEvent(formData)
-            .then(response => {
-                console.log("Server response", response)
-            })
-            .catch((err) => {
-                console.log("error", err)
-                setEventData({
-                  ...eventData,
-                  errorMsg: err.response.data.errorMessage
+          console.log("FD: ", formData)
+          createImage({eventImage})
+            .then((reponse) => {
+              createEvent(formData)
+                .then((inner_response) => {
+                    console.log("Server response", inner_response)
                 })
+                .catch((err) => {
+                    console.log("error", err)
+                    setEventData({
+                      ...eventData,
+                      errorMsg: err.response.data.errorMessage
+                    })
+            })
             })
-
       }
 
   }
 
   return (
-    <form onSubmit={handleEventSubmit} encType="multipart/form-data">
+    <form onSubmit={handleEventSubmit} encType="multipart/form-data" noValidate>
       <div className="mt-16 mx-20">
         <div className="px-2">
           <div className="flex -mx-2">
diff --git a/frontend/src/api/event.js b/frontend/src/api/event.js
index 2d5a4eeeea9b705cea8fa241f663777c6ef2dbe0..2ed927b39e13c9d4c61bb5d9e095ed35c29e2160 100644
--- a/frontend/src/api/event.js
+++ b/frontend/src/api/event.js
@@ -4,8 +4,7 @@ export const createEvent =  async (formData) => {
 
   const config = {
     headers: {
-        'Content-Type': 'multipart/form-data',
-        'Accept': 'application/json'
+      'Content-Type': 'application/json'
     }
 }
   console.log("FORM DATA", formData)
diff --git a/frontend/src/api/images.js b/frontend/src/api/images.js
new file mode 100644
index 0000000000000000000000000000000000000000..f474a9a2b48ad11b1fe0a1818d73aee19571c0b4
--- /dev/null
+++ b/frontend/src/api/images.js
@@ -0,0 +1,27 @@
+import axios from 'axios'
+
+export const createImage = async (data) => {
+    
+    const config = {
+        headers: {
+            'Content-Type': 'application/json'
+        }
+    }
+
+    const response = await axios.post('/images', data, config)
+
+    return response  
+};
+
+export const signIn = async (data) => {
+    
+    const config = {
+        headers: {
+            'Content-Type': 'application/json'
+        }
+    }
+
+    const response = await axios.post('/api/auth/signin', data, config)
+
+    return response  
+};