diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000000000000000000000000000000000000..d1c68cc447c7a66006a78bdacd3608facee777ee
--- /dev/null
+++ b/.env.development
@@ -0,0 +1 @@
+VUE_APP_API_HOST=http://localhost:3000
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000000000000000000000000000000000000..4ea9aeeefd07ca950225eb465118f3c7ab777d6d
--- /dev/null
+++ b/.env.production
@@ -0,0 +1 @@
+VUE_APP_API_HOST=https://api.fitmin.xyz
diff --git a/.gitignore b/.gitignore
index 4d7a7944771448bdd49d69195d74d718fabe699b..b686085ba50ea1f8e114bcdc13907914d8c4d43c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,3 +65,5 @@ typings/
 
 # macOS
 .DS_Store
+
+dist/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0b4e410750c56497c8393c7fb8654acb7b83a05e..98d23a447c034b80a355194f3d41f1ba7bc4ba14 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,28 +1,43 @@
-image: node:latest
+default:
+  image: node:latest
+  cache:
+    paths:
+      - node_modules/
+  before_script:
+    - npm install
 
 stages:
   - lint
   - test
   - build
+  - deploy
 
-cache:
-  paths:
-    - node_modules/
-
-before_script:
-  - npm install
-
-job-lint:
+lint:
   stage: lint
   script:
     - npm run lint
 
-job-test:
+test:
   stage: test
   script:
     - npm run test:unit
 
-job-build:
+build:
   stage: build
   script:
     - npm run build
+
+deployToS3:
+  stage: deploy
+  dependencies:
+    - job-build
+  before_script:
+    - curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
+    - unzip awscliv2.zip
+    - sudo ./aws/install
+  script:
+    - aws2 s3 rm s3://$S3_BUCKET_NAME/ --recursive
+    - aws2 s3 cp dist s3://$S3_BUCKET_NAME/ --recursive --acl public-read
+  when: manual
+  only:
+    - master
diff --git a/src/router/index.js b/src/router/index.js
index 02a5598926e42595eaaab6af2c7f0fd401e6105a..1acfeba0e428997c1c0a9de3e267dfc49cff5470 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -4,6 +4,24 @@ import VueRouter from 'vue-router';
 import Store from '@/store/index';
 import APISetting from '@/settings/api';
 import Login from '@/views/Login.vue';
+import Main from '@/views/Main.vue';
+import DietList from '@/views/DietList.vue';
+import ProgramList from '@/views/ProgramList.vue';
+import ProgramCreate from '@/views/ProgramCreate.vue';
+import ProgramDetail from '@/views/ProgramDetail.vue';
+import ScheduleList from '@/views/ScheduleList.vue';
+import ScheduleCreate from '@/views/ScheduleCreate.vue';
+import ScheduleDetail from '@/views/ScheduleDetail.vue';
+import TraineeList from '@/views/TraineeList.vue';
+import TraineeCreate from '@/views/TraineeCreate.vue';
+import TraineeDetail from '@/views/TraineeDetail.vue';
+import TrainerList from '@/views/TrainerList.vue';
+import TrainerCreate from '@/views/TrainerCreate.vue';
+import TrainerDetail from '@/views/TrainerDetail.vue';
+import VoucherList from '@/views/VoucherList.vue';
+import VoucherCreate from '@/views/VoucherCreate.vue';
+import VoucherDetail from '@/views/VoucherDetail.vue';
+
 
 Vue.use(VueRouter);
 
@@ -16,77 +34,87 @@ const routes = [
   {
     path: '/main',
     name: 'Main',
-    component: () => import('@/views/Main.vue'),
+    component: Main,
+  },
+  {
+    path: '/diet',
+    name: 'DietList',
+    component: DietList,
   },
   {
     path: '/program',
     name: 'ProgramList',
-    component: () => import('@/views/ProgramList.vue'),
+    component: ProgramList,
   },
   {
     path: '/program/create',
     name: 'ProgramCreate',
-    component: () => import('@/views/ProgramCreate.vue'),
+    component: ProgramCreate,
   },
   {
     path: '/program/:id',
     name: 'ProgramDetail',
-    component: () => import('@/views/ProgramDetail.vue'),
+    component: ProgramDetail,
   },
   {
     path: '/schedule',
     name: 'ScheduleList',
-    component: () => import('@/views/ScheduleList.vue'),
+    component: ScheduleList,
   },
   {
     path: '/schedule/create',
     name: 'ScheduleCreate',
-    component: () => import('../views/ScheduleCreate.vue'),
+    component: ScheduleCreate,
   },
   {
     path: '/schedule/:id',
     name: 'ScheduleDetail',
-    component: () => import('@/views/ScheduleDetail.vue'),
+    component: ScheduleDetail,
   },
   {
     path: '/trainee',
     name: 'TraineeList',
-    component: () => import('@/views/TraineeList.vue'),
+    component: TraineeList,
   },
   {
     path: '/trainee/create',
     name: 'TraineeCreate',
-    component: () => import('@/views/TraineeCreate.vue'),
+    component: TraineeCreate,
   },
   {
     path: '/trainee/:id',
     name: 'TraineeDetail',
-    component: () => import('@/views/TraineeDetail.vue'),
+    component: TraineeDetail,
   },
   {
     path: '/trainer',
     name: 'TrainerList',
-    component: () => import('@/views/TrainerList.vue'),
+    component: TrainerList,
+  },
+  {
+    path: '/trainer/create',
+    name: 'TrainerCreate',
+    component: TrainerCreate,
   },
   {
     path: '/trainer/:id',
     name: 'TrainerDetail',
-    component: () => import('@/views/TrainerDetail.vue'),
+    component: TrainerDetail,
   },
   {
     path: '/voucher',
     name: 'VoucherList',
-    component: () => import('@/views/VoucherList.vue'),
+    component: VoucherList,
   },
   {
     path: '/voucher/create',
     name: 'VoucherCreate',
-    component: () => import('@/views/VoucherCreate.vue'),
+    component: VoucherCreate,
   },
   {
     path: '/voucher/:id',
     name: 'VoucherDetail',
-    component: () => import('@/views/VoucherDetail.vue'),
+    component: VoucherDetail,
   },
 ];
 
diff --git a/src/settings/api.js b/src/settings/api.js
index df8a2ad7109002b5acfb10feea4e2130f5a0c2e3..a0b1dcd9198fb9d0f1aa99aefba8b52cfb708199 100644
--- a/src/settings/api.js
+++ b/src/settings/api.js
@@ -1,4 +1,4 @@
-const host = 'http://localhost:3000';
+const host = process.env.VUE_APP_API_HOST;
 
 export default {
   endpoints: {
@@ -10,6 +10,10 @@ export default {
       },
       logout: `${host}/auth/logout`,
     },
+    diet: {
+      list: `${host}/diet`,
+      detail: id => (`${host}/diet/${id}`),
+    },
     program: {
       list: `${host}/program`,
       detail: id => (`${host}/program/${id}`),