generated from ttipo/project-base
468a4377ee
확정된 디자인(docs/design/webmail)을 기준으로 만든 웹메일 화면이다. - 앞으로 붙일 사내 모듈(캘린더·파일·ERP 등)을 위한 전역 앱 레일과 셸, Pretendard 자체 호스팅, 바다 청록 브랜드 토큰과 콘텐츠 열 토큰 - 로그인과 세션 처리: 401 이면 한 번 갱신한 뒤 다시 보내고, 실패하면 세션 만료 대화상자를 띄운다. 로그아웃은 다른 탭에도 알리고, 로그아웃 뒤에 늦게 온 갱신 결과는 버린다 - 메일함(분할·목록 보기), 읽기(외부 HTML 은 sandbox iframe 으로만 그린다), 쓰기(발송 키 규칙, 첨부 형식·크기·합계·개수 사전 검사, 답장·전달 초안 길이 맞춤) - 오류는 코드로만 분기하고, 문구는 생성된 에러 사전에서 가져온다 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.2 KiB
JSON
49 lines
1.2 KiB
JSON
{
|
|
"name": "frontend",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "run-p type-check \"build-only {@}\" --",
|
|
"preview": "vite preview",
|
|
"test:unit": "vitest",
|
|
"build-only": "vite build",
|
|
"type-check": "vue-tsc --build",
|
|
"lint": "eslint . --max-warnings 0",
|
|
"lint:fix": "eslint . --fix",
|
|
"format": "oxfmt src/"
|
|
},
|
|
"dependencies": {
|
|
"axios": "^1.14.0",
|
|
"dompurify": "^3.4.17",
|
|
"pinia": "^3.0.4",
|
|
"pretendard": "^1.3.9",
|
|
"vue": "^3.5.43",
|
|
"vue-router": "^4.4.5"
|
|
},
|
|
"devDependencies": {
|
|
"@tsconfig/node24": "^24.0.4",
|
|
"@types/jsdom": "^28.0.1",
|
|
"@types/node": "^24.12.0",
|
|
"@vitejs/plugin-vue": "^6.0.5",
|
|
"@vitejs/plugin-vue-jsx": "^5.1.5",
|
|
"@vue/eslint-config-typescript": "^14.2.0",
|
|
"@vue/test-utils": "^2.4.6",
|
|
"@vue/tsconfig": "^0.9.1",
|
|
"eslint": "^9.18.0",
|
|
"eslint-plugin-vue": "^9.32.0",
|
|
"jsdom": "^29.0.1",
|
|
"npm-run-all2": "^8.0.4",
|
|
"oxfmt": "^0.72.0",
|
|
"typescript": "~6.0.0",
|
|
"vite": "^8.3.4",
|
|
"vite-plugin-vue-devtools": "^8.1.1",
|
|
"vitest": "^4.1.2",
|
|
"vue-tsc": "^3.2.6"
|
|
},
|
|
"engines": {
|
|
"node": "^20.19.0 || >=22.12.0"
|
|
}
|
|
}
|