diff --git a/src/modules/NAMING.md b/src/modules/NAMING.md
new file mode 100644
index 00000000..596accf4
--- /dev/null
+++ b/src/modules/NAMING.md
@@ -0,0 +1,156 @@
+## REDUX NAMING
+
+```bash
+๐ฆ module
+โฃ ๐ _sample
+ โโฃ ๐ actions Action ํ์
, ํจ์
+ โโฃ ๐ apis Api
+ โโฃ ๐ models interface, Type
+ โโฃ ๐ reducers Reducer ํจ์
+ โโฃ ๐ sagas Saga ํจ์
+ โโฃ ๐ index.ts
+```
+
+
+
+## ๐ actions
+
+> Action ํ์
+
+- ๋๋ฌธ์์ \_๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํํ๋ก ์์ฑํ๋ค.
+- ๊ตฌ๋ถ์๋ ์๋ฌธ์๋ก ์์ฑํ๋ค.
+- ๋์ฌ๋ฅผ ๋จผ์ ์์ฑํ๋ค.
+- ๋น๋๊ธฐ ์์ฒญ ์ก์
์ด ์๋ ๋ `CLIENT_` ๋ก ์์ํ๋ค.
+ > > ๊ธฐ๋ณธ ๊ท์น
+ >
+ > - ๋ชฉ๋ก ์กฐํ `GET_[์ฃผ์ฒด]_LIST`
+ > - ์์ธ ์กฐํ `GET_[์ฃผ์ฒด]_DETAIL`
+ > - ์์ฑ/์ถ๊ฐ `CREATE_[์ฃผ์ฒด]`
+ > - ์์ /๋ณ๊ฒฝ `UPDATE_[์ฃผ์ฒด]`
+ > - ์ญ์ `DELETE_[์ฃผ์ฒด]`
+
+> > ๋์ฌ
+>
+> - SET, FIND, SEND, CHECK, REGISTER ...
+> > ๋ช
์ฌ
+> - LIST, DETAIL, LOG, APPROVAL ...
+
+```bash
+// ๋๋ก ๋ชฉ๋ก
+const GET_DRONE_LIST_REQUEST = 'sample/GET_DRONE_LIST_REQUEST';
+
+// ์ง๋ ํ์
+const CLIENT_MAPTYPE = 'sample/CLIENT_MAPTYPE';
+```
+
+
+
+> Action ํจ์
+- ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ๋ค.
+- ์์ฑํ Action ํ์
์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ๋ค.
+
+```bash
+export const getDroneList = createAsyncAction(
+ GET_DRONE_LIST_REQUEST,
+ GET_DRONE_LIST_SUCCESS,
+ GET_DRONE_LIST_FAILURE
+)();
+
+export const clientMapType = createAction(CLIENT_MAPTYPE)();
+```
+
+
+
+## ๐ apis
+
+- ๋ณ์๋ช
์ [์ฃผ์ฒด] + API๋ก ์์ฑํ๋ค.
+- api๋ Action ํจ์๋ช
๊ณผ ๋์ผํ๊ฒ ์์ฑํ๋ค.
+- ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด return์ ์ฆ์ ํด์ค๋ค.
+
+```bash
+export const sampleAPI = {
+ getDroneList: async () => {
+ return await axios.get('api/bas/dron/list....');
+ }
+}
+```
+
+
+
+## ๐ models
+
+- ๋ชจ๋ interface๋ ํ์ค์นผ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ๋ผ, ์ฝ์์ธ I๋ฅผ ๋ถ์ฌ์ ์์ฑํ๋ค.
+- Rq, Rs interface์ ๊ฒฝ์ฐ I + Action๋ช
+ Rq or Rs๋ก ์์ฑํ๋ค.
+- ์ด๊ธฐ๊ฐ์ ๊ฒฝ์ฐ ๋ณ์๋ช
์ init + [์ฃผ์ฒด]๋ก ์์ฑํ๋ค.
+- ์ด๊ธฐ๊ฐ์ interface๋ State๋ก ๋๋๋๋ก ์์ฑํ๋ค.
+
+```bash
+export const initSample: ISampleState = {
+ droneList: undefined,
+ droneCount: 0
+}
+
+export interface ISampleState {
+ droneList: IDrone[] | undefined;
+ droneCount: number | 0;
+}
+
+export interface IDrone {
+ groupId: string;
+ arcrftSno: number;
+ ....
+}
+
+export interface IUpdateDroneRq {
+ ...
+}
+```
+
+
+
+## ๐ reducers
+
+- Reducer ํจ์๋ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ [์ฃผ์ฒด] + Reducer ๋ก ์์ฑํ๋ค.
+
+```bash
+export const sampleReducer = createReducer(
+ initSample
+).handleAction(Actions.getDroneList.success, (state, action) =>
+ produce(state, draft => {})
+);
+```
+
+
+
+## ๐ sagas
+
+- Saga ํจ์๋ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ Action ํจ์ + Saga ๋ก ์์ฑํ๋ค.
+
+```bash
+function* getDroneListSaga(
+ action: ActionType
+) {
+ try {
+ } catch (error: any) {}
+}
+```
+
+- export ํจ์๋ ์นด๋ฉ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ [์ฃผ์ฒด] + Saga ๋ก ์์ฑํ๋ค.
+
+```bash
+export function* sampleSaga() {
+ yield takeEvery(Actions.getDroneList.request, getDroneListSaga);
+}
+```
+
+
+
+## ๐ index
+
+```bash
+export * from './actions';
+export * from './apis';
+export * from './models';
+export * from './reducers';
+export * from './sagas';
+```