Skip to content

TaskFlow-CLAP/TaskFlow-FE

Repository files navigation

📖 사내 티켓관리 서비스 TaskFlow ReadME

TaskFlow 소개 배너

배포주소 : 현재는 서비스가 중단되었습니다. 다음에 만나요👋


프로젝트 소개

다음과 같은 요구사항을 반영했습니다

  • 효율적인 요청 처리 체계 구축
  • 사용자와 담당자를 위한 가시성있는 화면 제공
  • 티켓 추적을 위한 알림 시스템
  • 부서 운영 위한 업무 및 담당자 분석 통계 기능
  • 관리자의 카테고리 관리를 통한 작업 관리

팀원 구성

CLAP의 FE팀원들


1. 개발 환경

분류 기술 스택

Environment

Development

Communication


2.개발 기술

Vue

  • Vue는 다른 프레임워크 대비 가볍고 빠르기에 초기 로딩시간이 빠르다는 장점이 있습니다.
  • 비교적 규모가 크지않고 SPA를 요하는 이번 프로젝트의 조건에 맞는 프레임워크라 생각이들어 채택했습니다.
  • 커뮤니티도 크고, 활성화 되었기에 개발 중 우리팀이 잘 모르거나 필요한 정보들에 대해 보다 쉬운 접근 가능하다 생각했습니다.

pinia

  • 최상위 컴포넌트를 만들어 props로 유저 정보를 내려주는 방식의 경우 불필요한 props 전달이 발생합니다. 따라서, 필요한 컴포넌트 내부에서만 상태 값을 가져다 사용하기 위해 상태 관리 라이브러리를 사용하기로 했습니다.
  • Pinia를 채택한 이유
    • Pinia는 Vue 3의 Composition API를 기반으로 설계되어 코드가 간결하고 이해하기 쉬우며 팀원들이 알고있던 zustand 방식과 유사해 학습비용을 낮출 수 있었습니다.
    • Vuex라는 방법도 있었지만, vuex보다 더 단순한 구조로 이루어져있기에 pinia를 택했습니다.
    • Pinia는 TypeScript와 잘 통합되기에 타입정의도 비교적 간단한 장점들이 있었습니다.
    • Vue에서 제공하는 DevTools에서 기본지원되기에 상태 변화에 따른 시각적으로 확인이 가능하다는 점도 큰 장점으로 다가왔습니다.
  • 로그인과 최초 프로필 설정 시 유저 정보를 store에 저장해 관리하는 방식으로 사용합니다.
  • 작업 목록에 관한 필터링 시 필터링 params에 대한 요소들을 관리하는 방식으로 사용합니다.

eslint, prettier

  • 정해진 규칙에 따라 자동적으로 코드 스타일을 정리해 코드의 일관성을 유지하고자 했습니다.
  • 코드 품질 관리는 eslint에, 코드 포맷팅은 prettier에 일임해 사용했습니다.
  • 기본 컨벤션을 사용하며, 예외 규칙은 팀원들과 협의했습니다.
  • 협업 시 매번 컨벤션을 신경 쓸 필요 없이 빠르게 개발하는 데에 목적을 두었습니다.

tailwind

  • 사전 정의된 유틸리티 클래스들로 다양한 스타일을 빠르고 일관성있게 적용이 가능합니다.
  • css파일을 따로 작성없이 코드내에 작성해 빠른 스타일링 및 디자인 시스템을 일관되게 유지하도록 했습니다.
  • 커스텀 속성을 통해 지정된 스타일링 내에서 팀원들이 중복된 스타일 코드없이 사용하도록 했습니다.

typescript

  • 사전 정의된 유틸리티 클래스들로 다양한 스타일을 빠르고 일관성있게 적용이 가능합니다.
  • css파일을 따로 작성없이 코드내에 작성해 빠른 스타일링 및 디자인 시스템을 일관되게 유지하도록 했습니다.
  • 커스텀 속성을 통해 지정된 스타일링 내에서 팀원들이 중복된 스타일 코드없이 사용하도록 했습니다.

Vite

  • 번들링 후 서버를 띄우는 다른 번들링 도구와 다르게 ES모듈 기반으로 동작해 빠른 로딩속도 제공
  • 빠른 HMR(Hot Module Replacement)을 지원함 개발의 편리함 향상
    • Vite는 영향받는 모듈만 리로드해 성능이 유지됨
  • 최적화된 빌드 제공(Rollup)
    • 트리 쉐이킹, 코드 분한, 최적화 번들링이 자동 적용됨

3.브랜치 전략

  • Git-flow 전략을 기반으로 release, develop 브랜치와 feature 보조 브랜치를 운용했습니다.
  • release, develop, Feat 브랜치로 나누어 개발을 하였습니다.
  • 새로운 기능을 분류하는 feature 브랜치
  • 새로운 기능이 합쳐져 테스트와 QA가 이루어지는 develop 브랜치
  • 검증된 코드들이 합쳐지는 release 브랜치로 분류


3. 프로젝트 구조

src/
├── api/                     # axios Instance를 통한 API 관련 로직
├── assets/                  # 정적 파일 (이미지, 폰트, 아이콘 등)
│   ├── fonts/               # 폰트 파일
│   └── icons/               # 아이콘 파일
├── components/              # 컴포넌트 파일 폴더
│   ├── api-logs/            # 관리자 API 로그 관련 컴포넌트
│   ├── charts/              # 차트 컴포넌트
│   ├── common/              # 공용 컴포넌트
│   ├── filters/             # 검색창 필터 관련 컴포넌트
│   ├── lists/               # 리스트 목록 관련 컴포넌트
│   ├── login-logs/          # 관리자 로그인 로그 관련 컴포넌트
│   ├── member-management/   # 관리자 멤버 관리 컴포넌트
│   ├── my-request/          # 내 요청 관리 컴포넌트
│   ├── my-task/             # 내 작업 관리 컴포넌트
│   ├── request-approve/     # 요청 승인 관련 컴포넌트
│   ├── request-history/     # 요청 히스토리 컴포넌트
│   ├── request-task/        # 작업 요청 관련 컴포넌트
│   ├── requested/           # 승인 대기중인 요청관련 컴포넌트
│   ├── statistics/          # 통계 관련 컴포넌트
│   ├── task-board/          # 작업 보드 컴포넌트
│   ├── task-detail/         # 작업 상세 정보 컴포넌트
│   ├── task-management/     # 관리자 작업 관리 컴포넌트
│   ├── team-board/          # 팀 보드 컴포넌트
│   ├── top-bar/             # 상단 바 컴포넌트
│   └── user-manage/         # 관리자 회원 관리 컴포넌트
├── constants/               # 상수 파일 정의
├── hooks/                   # Vue 커스텀 훅
├── layout/                  # Vue 페이지 레이아웃 컴포넌트
├── router/                  # 라우팅 관련 설정
├── stores/                  # Pinia 상태 관리
├── types/                   # TypeScript 타입 정의
├── utils/                   # 유틸리티 함수
└── views/                   # 주요 페이지 컴포넌트

4. 역할 분담

Chloe(백지연)

  • 기능
    • 페이지 : 로그인, 비밀번호 재인증, 이메일 인증, 비밀번호 재설정, 내 정보수정
    • 공통 컴포넌트 : 알림, 프로필 모달, 권한 별 사이드 바, 헤더

Tony(윤장호)

  • 기능
    • 페이지 : 내 요청, 승인 대기중인 요청, 전체 요청 기록, 내 작업, 작업보드, 팀 현황, 통계, 로그인 기록, 작업 기록 회원 관리

Moya(최민규)

  • 기능
    • 페이지 : 작업 요청, 요청 승인, 요청 수정, 요청 세부정보, 새 회원 추가, 회원 정보 수정, 작업 관리
    • 공통 컴포넌트 : 아이콘

5. 시작가이드

Requirements

  • Node.js v22.13.0
  • npm v10.9.2

Installation

$ git clone https://github.com/TaskFlow-CLAP/TaskFlow-FE.git 

$ cd TaskFlow-FE
$ npm install
$ npm run dev
// 로컬로 실행하는 경우 http://localhost:5173 포트번호로 실행

// 프로젝트 최상단 폴더에 .env생성 후 다음을 기입
VITE_API_BASE_URL=http://210.109.14.132:9090/

6. 페이지별 기능

[초기화면]

  • 서비스 초기 접속화면 및 인증 인가
로그인 화면 비밀번호 재설정 화면
image image
내 정보 수정
image

[사용자 화면]

  • 사용자 권한 화면
내 요청 작업 요청
image image
요청 상세 조회 요청 수정
image image

[담당자 화면]

  • 담당자 권한 화면
내 작업 작업 보드
image image
팀 작업 현황 통계
image image
전체 요청 기록 승인 대기 중인 요청
image image
요청 승인(승인 권한O) 요청 반려(승인 권한O)
image image
요청 상세 조회(담당자)
image

[관리자 화면]

  • 관리자 권한 화면
회원 관리 작업 보드
image image
새 회원 추가 회원 정보 수정
image image
1차 카테고리 추가 2차 카테고리 추가
image image

7. 트러블 슈팅


About

스마트한 업무 관리를 위한 업무 통합관리 솔루션, TaskFlow

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •