Skip to content

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

Notifications You must be signed in to change notification settings

TaskFlow-CLAP/TaskFlow-Server

Repository files navigation

🔎 TaskFlow

Coming Soon...

💁‍♂️ Team Member

서주원 (PL) 나은비(BE) 박재학(BE) 양시훈(BE) 이규동(BE) 최효성(BE & INFRA)
Github Github Github Github Github Github

⚒️ Stack

Back-end

SpringBootspring_data_JPAspring_security

Gradle junit5

JWT Flyway

Infra

GitHub ActionsDockerKubernetes

Database

MySQLRedisElastic Search

🏗️ Architecture

Coming Soon...

📍ERD

taskflow-erd.png

Task Flow 아키텍쳐

taskflow-architecture.png

🔴 Domain

  • 애플리케이션의 핵심 비즈니스 로직을 구현하는 계층입니다.
  • 모델과 비즈니스 규칙을 정의하여, 애플리케이션의 주요 기능을 수행하며 외부와 의존성이 없습니다.

🟢Application

  • 비지니스 로직 액션을 담당하는 서비스 계층입니다.
➡️ Inbound Port
  • 외부에서 입력을 받는 인커밍 역할 Usecase를 담당합니다.
  • Inbound adapter로 부터 입력받습니다.
  • 입력 유효성 검증을 하지 않고 그 책임은 오직 웹 계층에서 진행합니다.
➡️ Outbound Port
  • adapter의 outbound로 가는 포트의 엳할을 합니다
  • Port 인터페이스를 통해 영속성 계층과 의존성 역전을 통해서 데이터를 저장, 조회, 목록조회 등 역할을 수행합니다.

---

🔵 Adapter

  • 외부 요청을 내부로 전달하는 Inbound 어댑터와 내부 요청을 외부로 전달하는 Outbound 어댑터로 나뉩니다.
  • 애플리케이션의 핵심 로직과 외부 시스템 간의 통신을 중개하는 역할을 합니다.
➡️ Inbound Port
  • Security
    • 외부 요청의 보안 처리 및 인증과 인가를 담당
  • Web
    • 사용자 인터페이스 또는 REST API를 처리하는 컨트롤러
    • 입력 유효성 검증을 진행
◀️ Outbound Port
  • Persistence
    • 데이터베이스와의 상호작용을 위한 orm 데이터베이스 매핑 및 repository
  • Api
    • 외부 서비스와의 통신을 위한 클라이언트
  • Infrastructure
    • 데이터베이스, 외부 API, 파일 시스템 등 외부 세계와의 연결을 처리
    • 다른 레이어에 대해 의존하지 않습니다.
  • JWT
    • JWT 토큰 생성 및 토큰의 유효성을 검증

🗂️ Package

├── 💽 TaskflowApplication
├── 🗂️ adapter
│   ├── 🗂️ inbound
│   │   ├── 📂 security
│   │   │   ├── filter
│   │   │   ├── handler

│   │   ├── 📂 web
│   │   │   ├── admin
│   │   │   ├── auth
│   │   │   ├── dto
│   │   │   └── ...
│   ├── 🗂️ outbound
│   │   ├── 📂 api
│   │   │   ├── agit
│   │   │   ├── data
│   │   │   ├── email
│   │   │   └── kakaoWork
│   │   ├── 📂 infrastructure
│   │   │   ├── elastic
│   │   │   ├── redis
│   │   │   ├── s3
│   │   │   └── sse
│   │   ├── 📂 jwt
│   │   │   ├── access
│   │   │   └── refresh
│   │   └── 📂 persistence
│   │       ├── entity
│   │       ├── mapper
│   │       └── repository
├── 🗂️ application
│   ├── 🗂️ mapper
│   │   └── response
│   ├── 🗂️ port
│   │   ├── 📂 inbound
│   │   ├── 📂 outbound
│   ├── 🗂️ service
│   │   ├── admin
│   │   ├── auth
│   │   ├── history
│   │   ├── label
│   │   ├── log
│   │   ├── member
│   │   ├── notification
│   │   ├── statistics
│   │   ├── task
│   │   └── webhook
├── 🗂️ common
│   ├── 📂 annotation
│   │   ├── architecture
│   │   ├── jwt
│   │   ├── log
│   │   ├── swagger
│   │   └── validation
│   ├── 📂 constants
│   └── 📂 utils
├── 🗂️ config
├── 🗂️ domain
│   ├── 📂 model
│   │   ├── auth
│   │   ├── common
│   │   ├── log
│   │   ├── member
│   │   ├── notification
│   │   └── task
│   └── 📂 policy
│       ├── member
│       └── task
└── 🗂️ exception
    └── 📂 code

📜 Covention

Code Convetion

Type Naming Convention
Class PascalCase
Function camelCase
Variable camelCase
DB Table snake_case
ENUM, Constant PascalCase


Prefix

Prefix Description
feat 새로운 기능 구현
fix 버그 수정
refactor 코드 리팩토링
chore 프로젝트 설정 수정
docs 문서 수정
infra 인프라 관련 작업
hotfix 긴급 수정 작업

Branch Naming

<Jira_Issue_Number>

Commit Message

<Jira_Issue_Number> [Prefix] :