|
1 | | -# taskflow |
| 1 | +# 📖 사내 티켓관리 서비스 TaskFlow ReadME |
| 2 | + |
2 | 3 |
|
3 | | -This template should help get you started developing with Vue 3 in Vite. |
4 | 4 |
|
5 | | -## Recommended IDE Setup |
| 5 | +- 배포 URL : |
6 | 6 |
|
7 | | -[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). |
| 7 | +<br> |
8 | 8 |
|
9 | | -## Type Support for `.vue` Imports in TS |
| 9 | +## 프로젝트 소개 |
10 | 10 |
|
11 | | -TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. |
| 11 | +- TMS |
12 | 12 |
|
13 | | -## Customize configuration |
| 13 | +<br> |
14 | 14 |
|
15 | | -See [Vite Configuration Reference](https://vite.dev/config/). |
| 15 | +## 팀원 구성 |
16 | 16 |
|
17 | | -## Project Setup |
| 17 | +<div align="center"> |
18 | 18 |
|
19 | | -```sh |
20 | | -npm install |
21 | | -``` |
| 19 | +| **Chloe** | **Tony** | **Moya** | |
| 20 | +| :------: | :------: | :------: | |
| 21 | +| [<img src="https://github.com/user-attachments/assets/8d30dae3-77cb-442b-ade3-a03bb1d3d7f0" height=150 width=150> <br/> @BaekJiyeon02](https://github.com/BaekJiyeon02) | [<img src="https://github.com/user-attachments/assets/780cc5ac-6af4-46e6-8c6a-65066e180437" height=150 width=150> <br/> @seorang42](https://github.com/seorang42) | [<img src="https://github.com/user-attachments/assets/ff7197a0-85e4-41e7-a49c-3e03bf3c2a7c" height=150 width=150> <br/> @Minkyu0424](https://github.com/Minkyu0424) | |
22 | 22 |
|
23 | | -### Compile and Hot-Reload for Development |
24 | 23 |
|
25 | | -```sh |
26 | | -npm run dev |
27 | | -``` |
| 24 | +</div> |
28 | 25 |
|
29 | | -### Type-Check, Compile and Minify for Production |
| 26 | +<br> |
30 | 27 |
|
31 | | -```sh |
32 | | -npm run build |
33 | | -``` |
| 28 | +## 1. 개발 환경 |
34 | 29 |
|
35 | | -### Run Unit Tests with [Vitest](https://vitest.dev/) |
| 30 | +- Front : Vue, typescript, tanstack-query, pinia, axios, tailwind |
| 31 | +- 버전 및 이슈관리 : Github |
| 32 | +- 협업 툴 : Slack, Notion, Jira |
| 33 | +- 서비스 배포 환경 : |
| 34 | +<br> |
36 | 35 |
|
37 | | -```sh |
38 | | -npm run test:unit |
39 | | -``` |
| 36 | +## 2. 채택한 개발 기술과 브랜치 전략 |
40 | 37 |
|
41 | | -### Run End-to-End Tests with [Cypress](https://www.cypress.io/) |
| 38 | +### Vue |
42 | 39 |
|
43 | | -```sh |
44 | | -npm run test:e2e:dev |
45 | | -``` |
| 40 | +- Vue |
| 41 | + - Vue는 다른 프레임워크 대비 가볍고 빠르기에 초기 로딩시간이 빠르다는 장점이 있습니다. |
| 42 | + - 비교적 규모가 크지않고 SPA를 요하는 이번 프로젝트의 조건에 맞는 프레임워크라 생각이들어 채택했습니다. |
| 43 | + |
| 44 | +### pinia |
46 | 45 |
|
47 | | -This runs the end-to-end tests against the Vite development server. |
48 | | -It is much faster than the production build. |
| 46 | +- 최상위 컴포넌트를 만들어 props로 유저 정보를 내려주는 방식의 경우 불필요한 props 전달이 발생합니다. 따라서, 필요한 컴포넌트 내부에서만 상태 값을 가져다 사용하기 위해 상태 관리 라이브러리를 사용하기로 했습니다. |
| 47 | +- Pinia를 채택한 이유 |
| 48 | + - Pinia는 Vue 3의 Composition API를 기반으로 설계되어 코드가 간결하고 이해하기 쉬우며 팀원들이 알고있던 zustand 방식과 유사해 학습비용을 낮출 수 있었습니다. |
| 49 | + - Vuex라는 방법도 있었지만, vuex보다 더 단순한 구조로 이루어져있기에 pinia를 택했습니다. |
| 50 | + - Pinia는 TypeScript와 잘 통합되기에 타입정의도 비교적 간단한 장점들이 있었습니다. |
| 51 | + - Vue에서 제공하는 DevTools에서 기본지원되기에 상태 변화에 따른 시각적으로 확인이 가능하다는 점도 큰 장점으로 다가왔습니다. |
| 52 | +- 로그인과 최초 프로필 설정 시 유저 정보를 store에 저장해 관리하는 방식으로 사용합니다. |
49 | 53 |
|
50 | | -But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments): |
| 54 | +### eslint, prettier |
51 | 55 |
|
52 | | -```sh |
53 | | -npm run build |
54 | | -npm run test:e2e |
55 | | -``` |
| 56 | +- 정해진 규칙에 따라 자동적으로 코드 스타일을 정리해 코드의 일관성을 유지하고자 했습니다. |
| 57 | +- 코드 품질 관리는 eslint에, 코드 포맷팅은 prettier에 일임해 사용했습니다. |
| 58 | +- 기본 컨벤션을 사용하며, 예외 규칙은 팀원들과 협의했습니다. |
| 59 | +- 협업 시 매번 컨벤션을 신경 쓸 필요 없이 빠르게 개발하는 데에 목적을 두었습니다. |
| 60 | + |
| 61 | +### tailwind |
56 | 62 |
|
57 | | -### Lint with [ESLint](https://eslint.org/) |
| 63 | +- 사전 정의된 유틸리티 클래스들로 다양한 스타일을 빠르고 일관성있게 적용이 가능합니다. |
| 64 | +- css파일을 따로 작성없이 코드내에 작성해 빠른 스타일링 및 디자인 시스템을 일관되게 유지하도록 했습니다. |
| 65 | +- 커스텀 속성을 통해 지정된 스타일링 내에서 팀원들이 중복된 스타일 코드없이 사용하도록 했습니다. |
| 66 | + |
| 67 | +### 브랜치 전략 |
| 68 | + |
| 69 | +- Git-flow 전략을 기반으로 main, develop 브랜치와 feature 보조 브랜치를 운용했습니다. |
| 70 | +- main, develop, Feat 브랜치로 나누어 개발을 하였습니다. |
| 71 | + - **main** 브랜치는 배포 단계에서만 사용하는 브랜치입니다. |
| 72 | + - **develop** 브랜치는 개발 단계에서 git-flow의 master 역할을 하는 브랜치입니다. |
| 73 | + - **Feat** 브랜치는 기능 단위로 독립적인 개발 환경을 위하여 사용하고 merge 후 각 브랜치를 삭제해주었습니다. |
| 74 | + |
| 75 | +<br> |
| 76 | + |
| 77 | +## 3. 프로젝트 구조 |
58 | 78 |
|
59 | | -```sh |
60 | | -npm run lint |
61 | 79 | ``` |
| 80 | +. |
| 81 | +├── .github/ |
| 82 | +├── .vscode/ |
| 83 | +├── cypress/ |
| 84 | +├── node_modules/ |
| 85 | +├── public/ |
| 86 | +├── src/ |
| 87 | +│ ├── api/ |
| 88 | +│ ├── assets/ |
| 89 | +│ ├── components/ |
| 90 | +│ ├── router/ |
| 91 | +│ ├── stores/ |
| 92 | +│ ├── types/ |
| 93 | +│ ├── utils/ |
| 94 | +│ ├── views/ |
| 95 | +│ │ └── App.vue |
| 96 | +│ ├── main.ts |
| 97 | +│ └── labels.json |
| 98 | +├── .gitignore |
| 99 | +├── index.html |
| 100 | +├── package.json |
| 101 | +├── package-lock.json |
| 102 | +├── .editorconfig |
| 103 | +├── .prettierrc.json |
| 104 | +├── eslint.config.js |
| 105 | +├── postcss.config.js |
| 106 | +├── print-folder-structure.js |
| 107 | +├── README.md |
| 108 | +├── tailwind.config.js |
| 109 | +├── tsconfig.json |
| 110 | +└── vite.config.ts |
| 111 | +
|
| 112 | +``` |
| 113 | + |
| 114 | +<br> |
| 115 | + |
| 116 | +## 4. 역할 분담 |
| 117 | + |
| 118 | +### Chloe(백지연) |
| 119 | + |
| 120 | +- **UI** |
| 121 | + - 페이지 : 로그인, 내 정보수정, 이메일 인증 카테고리 생성 |
| 122 | + - 공통 컴포넌트 : 알림, 프로필 모달, 권한 별 사이드 바 |
| 123 | +- **기능** |
| 124 | + - |
| 125 | + |
| 126 | +<br> |
| 127 | + |
| 128 | +### Tony(윤장호) |
| 129 | + |
| 130 | +- **UI** |
| 131 | + - 페이지 : 내 요청, 승인 대기중인 요청, 전체 요청 기록, 내 작업, 작업보드 통계, 로그인 기록, 회원 관리 |
| 132 | + - 공통 컴포넌트 : |
| 133 | +- **기능** |
| 134 | + - |
| 135 | + |
| 136 | +<br> |
| 137 | + |
| 138 | +### Moya(최민규) |
| 139 | + |
| 140 | +- **UI** |
| 141 | + - 페이지 : 작업 요청, 요청 승인, 새 회원 추가, 회원 정보 수정, 작업 관리 |
| 142 | + - 공통 컴포넌트 : 요청 세부정보 |
| 143 | +- **기능** |
| 144 | + - |
| 145 | + |
| 146 | +<br> |
| 147 | + |
| 148 | +## 5. 개발 기간 및 작업 관리 |
| 149 | + |
| 150 | +### 개발 기간 |
| 151 | + |
| 152 | +- 전체 개발 기간 : 2025-01-20~ |
| 153 | +- UI 구현 : 2025-01-20~ |
| 154 | +- 기능 구현 : |
| 155 | + |
| 156 | +<br> |
| 157 | + |
| 158 | +### 작업 관리 |
| 159 | + |
| 160 | +- GitHub issue, commit PR 컨벤션을 통해 각자의 작업에 대한 진행상황을 공유하고 팀원간 코드리뷰를 주고 받습니다 |
| 161 | +- 수요일, 금요일 각자의 작업 현황과 향후 주간 일정에 대해서 이야기하는 시간을 갖습니다. |
| 162 | +- |
| 163 | + |
| 164 | +<br> |
| 165 | + |
| 166 | +## 6. 신경 쓴 부분 |
| 167 | + |
| 168 | +<br> |
| 169 | + |
| 170 | +## 7. 페이지별 기능 |
| 171 | + |
| 172 | +### [초기화면] |
| 173 | +- 서비스 초기 접속화면 |
| 174 | + |
| 175 | +| 초기화면 | |
| 176 | +|----------| |
| 177 | + |
| 178 | +<br> |
| 179 | + |
| 180 | +## 8. 트러블 슈팅 |
| 181 | + |
| 182 | +- 노션링크 |
| 183 | +<br> |
| 184 | + |
| 185 | +## 9. 개선 목표 |
| 186 | + |
| 187 | +- API 모듈화 : API를 불러오는 코드의 반복이 많아 모듈화할 예정 |
| 188 | + |
| 189 | +- **25-01-20 성능 개선 내용 (예시)** |
| 190 | + |
| 191 | + |
| 192 | +<br> |
| 193 | + |
| 194 | +## 10. 프로젝트 후기 |
| 195 | + |
| 196 | +### Chloe(백지연) |
| 197 | + |
| 198 | +<br> |
| 199 | + |
| 200 | +### Tony(윤장호) |
| 201 | + |
| 202 | +<br> |
| 203 | + |
| 204 | +### Moya(최민규 |
| 205 | + |
| 206 | +<br> |
| 207 | + |
0 commit comments