diff --git a/elevate-survey/constants/routes.js b/elevate-survey/constants/routes.js
new file mode 100644
index 00000000..cb69d287
--- /dev/null
+++ b/elevate-survey/constants/routes.js
@@ -0,0 +1,73 @@
+module.exports = {
+	routes: [
+		{
+			sourceRoute: '/samiksha/v1/admin/createIndex/solutions',
+			type: 'POST',
+			inSequence: false,
+			orchestrated: false,
+			targetRoute: {
+				path: '/samiksha/v1/admin/createIndex/solutions',
+				type: 'POST'
+			},
+		},
+		{
+			sourceRoute: '/samiksha/v1/polls/create',
+			type: 'POST',
+			inSequence: false,
+			orchestrated: false,
+			targetRoute: {
+				path: '/samiksha/v1/polls/create',
+				type: 'POST'
+			},
+		},
+		{
+			sourceRoute: '/samiksha/v1/polls/list',
+			type: 'GET',
+			inSequence: false,
+			orchestrated: false,
+			targetRoute: {
+				path: '/samiksha/v1/polls/list',
+				type: 'GET'
+			},
+		},
+		{
+			sourceRoute: '/samiksha/v1/polls/getPollQuestions',
+			type: 'GET',
+			inSequence: false,
+			orchestrated: false,
+			targetRoute: {
+				path: '/samiksha/v1/polls/getPollQuestions',
+				type: 'GET'
+			},
+		},
+		{
+			sourceRoute: '/samiksha/v1/pollSubmissions/make',
+			type: 'POST',
+			inSequence: false,
+			orchestrated: false,
+			targetRoute: {
+				path: '/samiksha/v1/pollSubmissions/make',
+				type: 'POST'
+			},
+		},
+	
+	],
+}
+
+/* const fs = require('fs')
+const modifiedArray = [].map((item) => ({
+	...item,
+	targetRoute: {
+		path: item.sourceRoute,
+		type: item.type,
+	},
+}))
+const modifiedArrayJSON = JSON.stringify(modifiedArray, null, 2)
+const filePath = 'modifiedArray.json'
+fs.writeFile(filePath, modifiedArrayJSON, 'utf8', (err) => {
+	if (err) {
+		console.error('Error writing to file:', err)
+	} else {
+		console.log('Modified array has been written to', filePath)
+	}
+}) */
diff --git a/elevate-survey/controllers/orchestrationController.js b/elevate-survey/controllers/orchestrationController.js
new file mode 100644
index 00000000..e9513d94
--- /dev/null
+++ b/elevate-survey/controllers/orchestrationController.js
@@ -0,0 +1,13 @@
+const routesConfig = require('../constants/routes')
+const samikshaController = require('./project')
+const orchestrationHandler = async (req, res, responses) => {
+	console.log(req.targetPackages, req.inSequence, req.orchestrated, req.sourceRoute, responses)
+	console.log(req.body)
+	const selectedRouteConfig = routesConfig.routes.find((obj) => obj.sourceRoute === req.sourceRoute)
+	return await samikshaController[selectedRouteConfig.targetRoute.functionName](req, res, responses)
+}
+
+const orchestrationController = {
+	orchestrationHandler,
+}
+module.exports = orchestrationController
diff --git a/elevate-survey/controllers/project.js b/elevate-survey/controllers/project.js
new file mode 100644
index 00000000..31bcf882
--- /dev/null
+++ b/elevate-survey/controllers/project.js
@@ -0,0 +1,29 @@
+// const routeConfigs = require('../constants/routes')
+// const requesters = require('../utils/requester')
+// const requestParser = require('../utils/requestParser')
+
+// const createUser = async (req, res, responses) => {
+// 	const selectedConfig = routeConfigs.routes.find((obj) => obj.sourceRoute === req.sourceRoute)
+// 	return await requesters.post(req.baseUrl, selectedConfig.targetRoute.path, req.body)
+// }
+// const updateUser = async (req, res, responses) => {
+// 	const selectedConfig = routeConfigs.routes.find((obj) => obj.sourceRoute === req.sourceRoute)
+
+// 	//const filteredRequestBody = requestParser.transformUpdateUserBody(req.body)
+// 	return await requesters.patch(req.baseUrl, selectedConfig.targetRoute.path, req.body, req.headers)
+// }
+
+// const entityTypeRead = async (req, res, responses) => {
+// 	const selectedConfig = routeConfigs.routes.find((obj) => obj.sourceRoute === req.sourceRoute)
+// 	return await requesters.post(req.baseUrl, selectedConfig.targetRoute.path, req.body, {
+// 		'X-auth-token': req.headers['x-auth-token'],
+// 	})
+// }
+
+const userController = {
+	// createUser,
+	// updateUser,
+	// entityTypeRead,
+}
+
+module.exports = userController
diff --git a/elevate-survey/index.js b/elevate-survey/index.js
new file mode 100644
index 00000000..7dde7460
--- /dev/null
+++ b/elevate-survey/index.js
@@ -0,0 +1,37 @@
+const express = require('express')
+const router = express.Router()
+const routes = require('./constants/routes')
+const packageRouter = require('./router')
+
+const getDependencies = () => {
+	return ['kafka', 'kafka-connect']
+}
+
+const getPackageMeta = () => {
+	return {
+		basePackageName: 'samiksha',
+		packageName: 'elevate-survey',
+	}
+}
+
+const createPackage = (options) => {
+	return {
+		router: () => {
+			console.log('router')
+		},
+		endpoints: [],
+		dependencies: [],
+	}
+}
+
+router.get('/', (req, res) => {
+	res.send('Hello, world! From Elevate Survey')
+})
+
+module.exports = {
+	dependencies: getDependencies(),
+	routes,
+	createPackage,
+	packageMeta: getPackageMeta(),
+	packageRouter,
+}
diff --git a/elevate-survey/package.json b/elevate-survey/package.json
new file mode 100644
index 00000000..6160308a
--- /dev/null
+++ b/elevate-survey/package.json
@@ -0,0 +1,18 @@
+{
+	"name": "elevate-survey",
+	"version": "1.0.1",
+	"description": "Npm package for Elevate-survey service integration with Interface service",
+	"main": "index.js",
+	"scripts": {
+		"test": "echo \"Error: no test specified\" && exit 1"
+	},
+	"author": "Ankit Shahu",
+	"license": "ISC",
+	"dependencies": {
+		"axios": "^1.4.0",
+		"express": "^4.18.2",
+		"lodash": "^4.17.21",
+		"node-fetch": "^2.7.0",
+		"path-to-regexp": "^6.2.1"
+	}
+}
diff --git a/elevate-survey/router/index.js b/elevate-survey/router/index.js
new file mode 100644
index 00000000..a8b43a85
--- /dev/null
+++ b/elevate-survey/router/index.js
@@ -0,0 +1,10 @@
+const { passThroughRequester } = require('../utils/requester')
+const { orchestrationHandler } = require('../controllers/orchestrationController')
+const packageRouter = async (req, res, responses) => {
+	const response = req.orchestrated
+		? await orchestrationHandler(req, res, responses)
+		: await passThroughRequester(req, res)
+	return response
+}
+
+module.exports = packageRouter
diff --git a/elevate-survey/utils/pathParamSetter.js b/elevate-survey/utils/pathParamSetter.js
new file mode 100644
index 00000000..130b1fe5
--- /dev/null
+++ b/elevate-survey/utils/pathParamSetter.js
@@ -0,0 +1,6 @@
+exports.pathParamSetter = (targetPath, params) => {
+	return targetPath.replace(/:\w+/g, (match) => {
+		const fieldName = match.substring(1)
+		return params[fieldName] || match
+	})
+}
diff --git a/elevate-survey/utils/patternMatcher.js b/elevate-survey/utils/patternMatcher.js
new file mode 100644
index 00000000..f35cd53f
--- /dev/null
+++ b/elevate-survey/utils/patternMatcher.js
@@ -0,0 +1,16 @@
+exports.matchPathsAndExtractParams = (pattern, url) => {
+	const paramNames = []
+	const regexPattern = new RegExp(
+		pattern.replace(/:(\w+)/g, (_, paramName) => {
+			paramNames.push(paramName)
+			return '([a-zA-Z0-9]+)'
+		})
+	)
+	const matchResult = url.match(regexPattern)
+	if (!matchResult) return false
+	const params = {}
+	for (let i = 0; i < paramNames.length; i++) {
+		params[paramNames[i]] = matchResult[i + 1]
+	}
+	return params
+}
\ No newline at end of file
diff --git a/elevate-survey/utils/requestParser.js b/elevate-survey/utils/requestParser.js
new file mode 100644
index 00000000..ecd12e5a
--- /dev/null
+++ b/elevate-survey/utils/requestParser.js
@@ -0,0 +1,6 @@
+const _ = require('lodash')
+
+// exports.transformUpdateUserBody = (requestBody) => {
+// 	const allowedKeys = ['name', 'email', 'image', 'location', 'about', 'preferred_language']
+// 	return _.pick(requestBody, allowedKeys)
+// }
diff --git a/elevate-survey/utils/requester.js b/elevate-survey/utils/requester.js
new file mode 100644
index 00000000..2f732e14
--- /dev/null
+++ b/elevate-survey/utils/requester.js
@@ -0,0 +1,121 @@
+const http = require('http')
+const https = require('https')
+const { matchPathsAndExtractParams } = require('./patternMatcher')
+const routesConfig = require('../constants/routes')
+const { pathParamSetter } = require('./pathParamSetter')
+const axios = require('axios')
+const fetch = require('node-fetch')
+
+const handleInterfaceError = (res, err) => {
+	console.log('Error: ', err)
+	res.writeHead(500, { 'Content-Type': 'text/plain' })
+	res.end('Interface Server Error')
+}
+
+const passThroughRequester = async (req, res) => {
+	try {
+		const sourceBaseUrl = req.protocol + '://' + req.headers.host + '/'
+		const sourceUrl = new URL(req.originalUrl, sourceBaseUrl)
+		const route = routesConfig.routes.find((route) => route.sourceRoute === req.sourceRoute)
+		const params = matchPathsAndExtractParams(route.sourceRoute, req.originalUrl)
+		console.log(params,'params')
+		const targetRoute = pathParamSetter(route.targetRoute.path, params)
+		console.log(route.targetRoute.path, params,'route.targetRoute.path, params')
+		console.log(targetRoute,'targetRoute')
+		console.log(req.baseUrl,'req.baseUrl')
+		const parsedUrl = new URL(targetRoute, req.baseUrl)
+		const options = {
+			method: req.method,
+			headers: req.headers,
+			hostname: parsedUrl.hostname,
+			port: parsedUrl.port,
+			path: parsedUrl.pathname + sourceUrl.search,
+		}
+		console.log({
+			sourceBaseUrl,
+			sourceUrl,
+			route,
+			params,
+			targetRoute,
+			parsedUrl,
+			options,
+		})
+		const proxyReq = (parsedUrl.protocol === 'https:' ? https : http).request(options, (proxyRes) => {
+			res.writeHead(proxyRes.statusCode, proxyRes.headers)
+			proxyRes.pipe(res, { end: true })
+		})
+		proxyReq.on('error', (err) => {
+			handleInterfaceError(res, err)
+		})
+		req.pipe(proxyReq, { end: true })
+	} catch (err) {
+		handleInterfaceError(res, err)
+	}
+}
+
+const post = (baseUrl, route, requestBody, headers) => {
+	const url = baseUrl + route
+	return axios
+		.post(url, requestBody, { headers })
+		.then((response) => response.data)
+		.catch((error) => {
+			if (error.response) {
+				return error.response
+			}
+			return error
+		})
+}
+const patch = async (baseUrl, route, requestBody, headers) => {
+	try {
+		const url = baseUrl + route
+
+		const options = {
+			method: 'PATCH',
+			headers: headers,
+			body: JSON.stringify(requestBody),
+		}
+
+		const response = await fetch(url, options)
+
+		const data = await response.json()
+		return data
+	} catch (error) {
+		console.error(error)
+		throw error
+	}
+}
+const axiosPatch = async (baseUrl, route, requestBody, headers) => {
+	try {
+		const url = baseUrl + route
+		console.log(url, requestBody)
+		const config = {
+			headers: headers,
+		}
+		axios
+			.patch(url, requestBody, config)
+			.then((response) => {
+				// Handle the successful response here
+				console.log('PATCH request successful:', response.data)
+				return response.data
+			})
+			.catch((error) => {
+				// Handle any errors that occurred during the PATCH request
+				console.error('Error making PATCH request:', error)
+				if (error.response) {
+					return error.response
+				}
+				return error
+			})
+	} catch (error) {
+		console.error('Error making PATCH request:', error)
+	}
+}
+
+const requesters = {
+	passThroughRequester,
+	post,
+	patch,
+	axiosPatch,
+}
+
+module.exports = requesters
\ No newline at end of file
