diff --git a/hwe/ts/PageFront.vue b/hwe/ts/PageFront.vue
new file mode 100644
index 00000000..392d471f
--- /dev/null
+++ b/hwe/ts/PageFront.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+ 툴바?
+ 시나리오
+ 토너먼트/설문
+ 접속중인
+ 국방
+ 접속자
+
+ 지도
+ 예턴
+ 도시 정보
+ 국가 정보
+ 장수 정보
+ 국가 툴바
+ 갱신/로비 버튼
+ 장수 동향
+ 개인 기록
+ 중원 정세
+ 툴바?
+ 메시지 입력
+ 전체 메시지
+ 국가 메시지
+ 개인 메시지
+ 외교 메시지
+ 툴바?
+
+
+
+ 서버 갱신 중입니다.
+
+
+
+
+
+
+
+
diff --git a/hwe/ts/SammoAPI.ts b/hwe/ts/SammoAPI.ts
index d13390e4..5e984e57 100644
--- a/hwe/ts/SammoAPI.ts
+++ b/hwe/ts/SammoAPI.ts
@@ -22,7 +22,7 @@ import type { SetBlockWarResponse, GeneralListResponse as NationGeneralListRespo
import type { UploadImageResponse } from "./defs/API/Misc";
import type { GeneralLogType, GetGeneralLogResponse, JoinArgs } from "./defs/API/General";
import type {
-ExecuteResponse,
+ ExecuteResponse,
GetConstResponse,
GetCurrentHistoryResponse,
GetDiplomacyResponse,
diff --git a/hwe/ts/build_exports.json b/hwe/ts/build_exports.json
index 555bbde0..3db70d2b 100644
--- a/hwe/ts/build_exports.json
+++ b/hwe/ts/build_exports.json
@@ -37,6 +37,7 @@
"v_nationGeneral": "v_nationGeneral.ts",
"v_globalDiplomacy": "v_globalDiplomacy",
"v_troop": "v_troop.ts",
- "v_vote": "v_vote.ts"
+ "v_vote": "v_vote.ts",
+ "v_front": "v_front.ts"
}
}
\ No newline at end of file
diff --git a/hwe/ts/defs/API/Global.ts b/hwe/ts/defs/API/Global.ts
index 7b51ea32..7eb9039d 100644
--- a/hwe/ts/defs/API/Global.ts
+++ b/hwe/ts/defs/API/Global.ts
@@ -83,7 +83,7 @@ export type ExecuteResponse = {
updated: boolean;
locked: boolean;
lastExecuted: string;
-};
+}
export type GetRecentRecordResponse = {
result: true;
diff --git a/hwe/ts/v_front.ts b/hwe/ts/v_front.ts
new file mode 100644
index 00000000..26fff4d2
--- /dev/null
+++ b/hwe/ts/v_front.ts
@@ -0,0 +1,12 @@
+import { createApp } from 'vue'
+import { BootstrapVue3, BToastPlugin } from 'bootstrap-vue-3'
+import { auto500px } from './util/auto500px';
+import { htmlReady } from './util/htmlReady';
+import { insertCustomCSS } from './util/customCSS';
+import PageFront from './PageFront.vue';
+auto500px();
+
+htmlReady(() => {
+ insertCustomCSS();
+});
+createApp(PageFront).use(BootstrapVue3).use(BToastPlugin).mount('#app');
diff --git a/hwe/v_front.php b/hwe/v_front.php
new file mode 100644
index 00000000..5d8ce371
--- /dev/null
+++ b/hwe/v_front.php
@@ -0,0 +1,56 @@
+setReadOnly();
+$userID = Session::getUserID();
+
+//턴 실행 대기 및 갱신 증가는 API에서
+
+//TODO: 내 정보도 API에서, 사망 여부도
+
+//TODO: 설문 및 메시지 여부도 API에서
+
+//TODO: lock 정보도 API에서(턴실행대기에서 받아오기)
+
+//TODO: 국가정보 받아오기
+
+//TODO: 시나리오 정보는 gameConst 받아올때 가져오기
+
+$db = DB::db();
+$gameStor = KVStorage::getStorage($db, 'game_env');
+
+$generalID = $session->generalID;
+?>
+
+
+
+
+
+
+
+ = UniqueConst::$serverName ?>: 메인
+ = WebUtil::printStaticValues([
+ 'staticValues' => [
+ 'serverName' => $serverName,
+ 'serverCnt' => $serverCnt,
+ 'serverNick' => DB::prefix(),
+ 'serverID' => UniqueConst::$serverID,
+ 'mapName' => GameConst::$mapName,
+ 'unitSet' => GameConst::$unitSet,
+ ]
+ ], false) ?>
+ = WebUtil::printJS('../d_shared/common_path.js') ?>
+ = WebUtil::printCSS('../d_shared/common.css') ?>
+
+ = WebUtil::printDist('vue', 'v_front', true) ?>
+
+
+
+
+
+
+
\ No newline at end of file