diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
index d710d7e08179685c958312a24612ffe819329809..f77ba504a0d4f42e039efdf98df0dd3fbd865502 100644
--- a/build/webpack.dev.conf.js
+++ b/build/webpack.dev.conf.js
@@ -10,6 +10,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin')
 const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
 const portfinder = require('portfinder')
 const { VueLoaderPlugin } = require('vue-loader')
+const VueAutoRoutingPlugin = require('vue-auto-routing/lib/webpack-plugin')
 
 const HOST = process.env.HOST
 const PORT = process.env.PORT && Number(process.env.PORT)
@@ -66,7 +67,14 @@ const devWebpackConfig = merge(baseWebpackConfig, {
 				ignore: ['.*']
 			}
 		]),
-		new VueLoaderPlugin()
+		new VueLoaderPlugin(),
+		new VueAutoRoutingPlugin({
+			// Path to the directory that contains your page components.
+			pages: 'src/components',
+
+			// A string that will be added to importing component path (default @/pages/).
+			importPrefix: '@/components/'
+		})
 	]
 })
 
diff --git a/package-lock.json b/package-lock.json
index 7ed6dc734f41a989d8e7803d257876b92a6eb6fc..cacebe7f8d84f385e5ca37ca75d00a7632b7c018 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,5 +1,5 @@
 {
-	"name": "openpharma",
+	"name": "openPharma-ui",
 	"version": "0.1.1",
 	"lockfileVersion": 1,
 	"requires": true,
@@ -166,6 +166,32 @@
 				}
 			}
 		},
+		"@nodelib/fs.scandir": {
+			"version": "2.1.3",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
+			"integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
+			"dev": true,
+			"requires": {
+				"@nodelib/fs.stat": "2.0.3",
+				"run-parallel": "^1.1.9"
+			}
+		},
+		"@nodelib/fs.stat": {
+			"version": "2.0.3",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
+			"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
+			"dev": true
+		},
+		"@nodelib/fs.walk": {
+			"version": "1.2.4",
+			"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
+			"integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
+			"dev": true,
+			"requires": {
+				"@nodelib/fs.scandir": "2.1.3",
+				"fastq": "^1.6.0"
+			}
+		},
 		"@types/glob": {
 			"version": "7.1.3",
 			"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
@@ -5860,6 +5886,89 @@
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
+		"fast-glob": {
+			"version": "3.2.4",
+			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz",
+			"integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==",
+			"dev": true,
+			"requires": {
+				"@nodelib/fs.stat": "^2.0.2",
+				"@nodelib/fs.walk": "^1.2.3",
+				"glob-parent": "^5.1.0",
+				"merge2": "^1.3.0",
+				"micromatch": "^4.0.2",
+				"picomatch": "^2.2.1"
+			},
+			"dependencies": {
+				"braces": {
+					"version": "3.0.2",
+					"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+					"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+					"dev": true,
+					"requires": {
+						"fill-range": "^7.0.1"
+					}
+				},
+				"fill-range": {
+					"version": "7.0.1",
+					"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+					"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+					"dev": true,
+					"requires": {
+						"to-regex-range": "^5.0.1"
+					}
+				},
+				"glob-parent": {
+					"version": "5.1.1",
+					"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+					"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+					"dev": true,
+					"requires": {
+						"is-glob": "^4.0.1"
+					}
+				},
+				"is-extglob": {
+					"version": "2.1.1",
+					"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+					"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+					"dev": true
+				},
+				"is-glob": {
+					"version": "4.0.1",
+					"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+					"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+					"dev": true,
+					"requires": {
+						"is-extglob": "^2.1.1"
+					}
+				},
+				"is-number": {
+					"version": "7.0.0",
+					"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+					"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+					"dev": true
+				},
+				"micromatch": {
+					"version": "4.0.2",
+					"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+					"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+					"dev": true,
+					"requires": {
+						"braces": "^3.0.1",
+						"picomatch": "^2.0.5"
+					}
+				},
+				"to-regex-range": {
+					"version": "5.0.1",
+					"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+					"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+					"dev": true,
+					"requires": {
+						"is-number": "^7.0.0"
+					}
+				}
+			}
+		},
 		"fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -5878,6 +5987,15 @@
 			"integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
 			"dev": true
 		},
+		"fastq": {
+			"version": "1.8.0",
+			"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz",
+			"integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==",
+			"dev": true,
+			"requires": {
+				"reusify": "^1.0.4"
+			}
+		},
 		"faye-websocket": {
 			"version": "0.10.0",
 			"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
@@ -9298,6 +9416,12 @@
 				"readable-stream": "^2.0.1"
 			}
 		},
+		"merge2": {
+			"version": "1.4.1",
+			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+			"dev": true
+		},
 		"methods": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -10471,8 +10595,7 @@
 			"version": "2.2.2",
 			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
 			"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
-			"dev": true,
-			"optional": true
+			"dev": true
 		},
 		"pify": {
 			"version": "2.3.0",
@@ -13503,6 +13626,12 @@
 			"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
 			"dev": true
 		},
+		"reusify": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+			"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+			"dev": true
+		},
 		"rgb-regex": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
@@ -13546,6 +13675,12 @@
 			"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
 			"dev": true
 		},
+		"run-parallel": {
+			"version": "1.1.9",
+			"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+			"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+			"dev": true
+		},
 		"run-queue": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
@@ -15836,6 +15971,15 @@
 			"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
 			"integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
 		},
+		"vue-auto-routing": {
+			"version": "0.5.0",
+			"resolved": "https://registry.npmjs.org/vue-auto-routing/-/vue-auto-routing-0.5.0.tgz",
+			"integrity": "sha512-b6QTZ/GZTFZt4qAt5KGmkUvCRHxtueIGbcOSGiFAkgcUxDAMgSDSbv5zEqnV2DYs35Q1jEGBAmC1Ox/wXbQQZQ==",
+			"dev": true,
+			"requires": {
+				"vue-route-generator": "^0.5.0"
+			}
+		},
 		"vue-eslint-parser": {
 			"version": "2.0.3",
 			"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
@@ -15929,6 +16073,24 @@
 				}
 			}
 		},
+		"vue-route-generator": {
+			"version": "0.5.0",
+			"resolved": "https://registry.npmjs.org/vue-route-generator/-/vue-route-generator-0.5.0.tgz",
+			"integrity": "sha512-RYMurrQZsXi94QJ9RwPPrKXg8cAlPWSt3eLM2haieTOxjpQG8tMhIKIFo2rmCeA0lNEJfHE4+HRzK9eji7BTtw==",
+			"dev": true,
+			"requires": {
+				"fast-glob": "^3.0.4",
+				"prettier": "2.0.5"
+			},
+			"dependencies": {
+				"prettier": {
+					"version": "2.0.5",
+					"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz",
+					"integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==",
+					"dev": true
+				}
+			}
+		},
 		"vue-router": {
 			"version": "3.3.4",
 			"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz",
diff --git a/package.json b/package.json
index 15a6a2235bb75a51fd07f91752ecf1f9a525e80d..45f65ba94b2d16e56168d1008c1e5c039c1e9bf3 100644
--- a/package.json
+++ b/package.json
@@ -69,6 +69,7 @@
 		"shelljs": "^0.7.6",
 		"uglifyjs-webpack-plugin": "^1.1.1",
 		"url-loader": "^0.5.8",
+		"vue-auto-routing": "^0.5.0",
 		"vue-jest": "^1.0.2",
 		"vue-loader": "^15.9.3",
 		"vue-style-loader": "^3.0.1",
diff --git a/src/App.vue b/src/App.vue
index e14ec8b8dadb70e7aba2bc25586fb875709bedca..497eaec2be84ac62509804712fee840a4356f3cb 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -2,7 +2,7 @@
 <div id="app">
 	<nav class="navbar navbar-expand navbar-dark bg-dark">
 		<!-- <a href="#" class="navbar-brand">{{ $t('global.openPharma') }}</a> -->
-		<a href="/" class="navbar-brand" style="font-family:'Ubuntu Medium"><img src="@/assets/logo.png" style="margin-right: 8px; width:41px">{{ $t('global.openPharma') }}</a>
+		<a href="/Home" class="navbar-brand" style="font-family:'Ubuntu Medium"><img src="@/assets/logo.png" style="margin-right: 8px; width:41px">{{ $t('global.openPharma') }}</a>
 		<div class="navbar-nav mr-auto">
 			<li class="nav-item">
 				<a href="/Clients" class="nav-link">{{ $t('global.viewsHome.clients.title') }}</a>
diff --git a/src/components/Client.vue b/src/components/Client.vue
index 7c0438877ef770dc7611d17915a45e945fe78390..7f489d067e2652de5a447c6b8341928768ce66e4 100644
--- a/src/components/Client.vue
+++ b/src/components/Client.vue
@@ -73,22 +73,22 @@ export default {
 		return {
 			uuid: '',
 			client: {
-				// uuid: undefined,
-				// numSS: '',
-				// cleSS: '',
-				// lastName: '',
-				// firstName: '',
-				// birthDate: '',
-				// address: '',
-				// address2: '',
-				// city: '',
-				// zipcode: '',
-				// cellphone: '',
-				// phone: '',
-				// center: '',
-				// viewAt: '',
-				// active: false,
-				// isEdit: false
+				uuid: undefined,
+				numSS: '',
+				cleSS: '',
+				lastName: '',
+				firstName: '',
+				birthDate: '',
+				address: '',
+				address2: '',
+				city: '',
+				zipcode: '',
+				cellphone: '',
+				phone: '',
+				center: '',
+				viewAt: '',
+				active: false,
+				isEdit: false
 			}
 		}
 	},
@@ -103,45 +103,43 @@ export default {
 	methods: {
 		getClient (uuid) {
 			var url = '/api/clients/' + uuid
-			axios.get(url)
+
+			axios.get(url)		// Call API GET
 				.then(result => {
 					this.mapClient(result.data)
-				},
-				error => { console.error(error) }
-				)
+				}, error => { console.error(error) })
 		},
 		mapClient (pClient) {
-			debugger
-			console.log(pClient.birthDate)
+			// debugger
+			// console.log(pClient.birthDate)
 			this.client = pClient
+			// this.client.isEdit = true
 			var viewAt = new Date()
-			this.client.viewAt = viewAt
+			this.client['viewAt'] = viewAt
 		},
 		addClient () {
 			this.client.active = true
 
-			axios
-				.post('api/clients', this.client).then(res => {
+			axios.post('api/clients', this.client)
+				.then(res => {
 					this.client = {}
 					this.client.isEdit = false
-					this.getClients()
+					this.getClient(this.client.uuid)
 				}).catch(err => { console.log(err) })
 		},
 		updateClient () {
-			axios
-				.put(`/api/clients/${this.client.uuid}`, this.client).then(res => {
+			axios.put(`/api/clients/${this.client.uuid}`, this.client)
+				.then(res => {
 					this.client = {}
 					this.client.isEdit = false
-					this.getTasks()
+					this.getClient(this.client.uuid)
 					console.log(res)
-				})
-				.catch(err => { console.log(err) })
+				}).catch(err => { console.log(err) })
 		},
 		deleteClient (uuid) {
-			axios
-				.delete(`/api/clients/${uuid}`).then(res => {
+			axios.delete(`/api/clients/${uuid}`)
+				.then(res => {
 					this.client = {}
-					this.getTasks()
 					console.log(res)
 				}).catch(err => { console.log(err) })
 		}
diff --git a/src/router/index.js b/src/router/index.js
index 013668f03973df307be41dc268ccc5444c8f14e7..7e7dedfc3b65b2a033e52bdcfd2d83d8b6623432 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,56 +1,83 @@
+import routes from 'vue-auto-routing'
+
 import Vue from 'vue'
 import Router from 'vue-router'
 // import upperFirst from 'lodash/upperFirst'
 // import camelCase from 'lodash/camelCase'
-import Home from '@/components/Home'
-import Clients from '@/components/Clients'
-import Client from '@/components/Client'
-import Products from '@/components/Products'
-import Updates from '@/components/Updates'
+// import Home from '@/components/Home'
+// import Clients from '@/components/Clients'
+// import Client from '@/components/Client'
+// import Products from '@/components/Products'
+// import Updates from '@/components/Updates'
+// import Settings from '@/components/Settings'
 
 Vue.use(Router)
 
+// var requireComponent = function () {
+// 	const components = require.context('@/components', true, /Base[A-Z]\w+\.(vue|js)$/)
+// 	console.log(components)
+// 	const routes = [{ path: '/', name: 'Home', component: Home }]
+// 	components.keys().forEach(key => {
+// 		const matched = key.match(/Base[A-Z]\w+\.(vue|js)$/)
+// 		if (matched && matched.length > 1) {
+// 			console.log(components(key))
+// 			// const route = matched[1]
+// 			var path = '@/components/' + components(key)
+// 			var Component = require(path)
+// 			routes.push({ path: '/' + components(key), name: components(key), component: Component })
+// 			// components(key)
+// 		}
+// 	})
+// 	return routes
+// }
+
+export default new Router({
+	mode: 'history',
+	routes
+})
+
+// export default new Router({
+// 	mode: 'history',
+// 	routes: [
+// 		{ path: '/', name: 'Home', component: Home },
+// 		{ path: '/Clients', name: 'Clients', component: Clients },
+// 		{ path: '/Client/:uuid', name: 'Client', component: Client, props: { uuid: '' } },
+// 		{ path: '/Products', name: 'Products', component: Products },
+// 		{ path: '/Updates', name: 'Updates', component: Updates },
+// 		{ path: '/Settings', name: 'Settings', component: Settings }
+// 	]
+// })
+
 // const requireComponent = require.context(
-//   // Le chemin relatif du dossier composants
-//   './components',
-//   // Suivre ou non les sous-dossiers
-//   false,
-//   // L'expression régulière utilisée pour faire concorder les noms de fichiers de composant de base
-//   /Base[A-Z]\w+\.(vue|js)$/
+// 	// Le chemin relatif du dossier composants
+// 	'./components',
+// 	// Suivre ou non les sous-dossiers
+// 	false,
+// 	// L'expression régulière utilisée pour faire concorder les noms de fichiers de composant de base
+// 	/Base[A-Z]\w+\.(vue|js)$/
 // )
 
 // requireComponent.keys().forEach(fileName => {
-//   // Récupérer la configuration du composant
-//   const componentConfig = requireComponent(fileName)
-
-//   // Récupérer le nom du composant en PascalCase
-//   const componentName = upperFirst(
-//     camelCase(
-//       // Retrouver le nom du fichier indépendemment de la profondeur de dossier
-//       fileName
-//         .split('/')
-//         .pop()
-//         .replace(/\.\w+$/, '')
-//     )
-//   )
-
-//   // Créer un composant global
-//   Vue.component(
-//     componentName,
-//     // Chercher les options du composant dans `.default`, qui
-//     // existera si le composant a été exporté avec `export default`,
-//     // sinon revenez à la racine du module.
-//     componentConfig.default || componentConfig
-//   )
-// })
+// // 	// Récupérer la configuration du composant
+// // const componentConfig = requireComponent(fileName)
 
-export default new Router({
-	mode: 'history',
-	routes: [
-		{ path: '/', name: 'Home', component: Home },
-		{ path: '/Clients', name: 'Clients', component: Clients },
-		{ path: '/Client/:uuid', name: 'Client', component: Client, props: { uuid: '' } },
-		{ path: '/Products', name: 'Products', component: Products },
-		{ path: '/Updates', name: 'Updates', component: Updates }
-	]
-})
\ No newline at end of file
+// // 	// Récupérer le nom du composant en PascalCase
+// // 	const componentName = upperFirst(
+// // 		camelCase(
+// // 			// Retrouver le nom du fichier indépendemment de la profondeur de dossier
+// // 			fileName
+// // 				.split('/')
+// // 				.pop()
+// // 				.replace(/\.\w+$/, '')
+// // 		)
+// // 	)
+
+// // 	// Créer un composant global
+// // 	Vue.component(
+// // 		componentName,
+// // 		// Chercher les options du composant dans `.default`, qui
+// // 		// existera si le composant a été exporté avec `export default`,
+// // 		// sinon revenez à la racine du module.
+// // 		componentConfig.default || componentConfig
+// // 	)
+// })
\ No newline at end of file