project structure 개선

soo's·2025년 1월 2일
0

Flutter

목록 보기
1/2
post-thumbnail

프로젝트 규모는 중소
현재 트리

as-is

📦lib
 ┣ 📂api
 ┃ ┣ 📂dto
 ┃ ┗ 📂services
 ┣ 📂auth
 ┃ ┣ 📂services
 ┃ ┣ 📂view
 ┃ ┃ ┣ 📂widgets
 ┃ ┗ 📂view_model
 ┣ 📂common
 ┣ 📂community
 ┣ 📂content
 ┣ 📂datasource
 ┃ ┣ 📂remote
 ┃ ┗ 📜dio_client.dart
 ┣ 📂enums
 ┣ 📂insight
 ┣ 📂models
 ┣ 📂mypage
 ┣ 📂onboarding
 ┣ 📂portfolio
 ┣ 📂profile_setup
 ┣ 📂thoughts
 ┣ 📜main.dart
 ┣ 📜root_page.dart
 ┗ 📜splash_screen.dart

이 구조에서
datasource와 services의 역할이 혼재되어잇음
datasource는 데이터 소스(API, 로컬 DB) 호출 담당, services는 비즈니스 로직을 포함한 API 추상화 계층으로 분리해서 사용해야함

  • auth 폴더
    api/에서 이미 인증 관련 서비스(auth_datasource.dart, auth_service.dart)를 관리하고 있으므로 중복 코드가 발생하지 않도록 조정해야함
    인증 로직은 api/에서 처리하고, auth/에는 UI와 상태 관리만 포함하도록 해야함

  • models 폴더
    현재 models 내부에 너무 많은 도메인 모델이 평면적으로 나열되어 있음
    도메인별 하위 폴더로 구분

to-be

📦lib/
├── api/                # API 관련 코드
│   ├── datasource/     # 원격 및 로컬 데이터 소스 (기존 datasource)
│   │   ├── remote/
│   ├── dto/            # dto
│   └── services/       # API 호출 추상화 계층
├── auth/               # 인증 관련 모든 코드
│   ├── services/
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── common/             # 공통 코드
│   ├── constants/
│   ├── helper/         # 앱 전체 헬퍼 함수
│   ├── utils/          # 공통 유틸리티 함수
│   ├── view_model/     # 공통 뷰모델
│   └── widgets/        # 공통 위젯
├── community/          # 커뮤니티 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── content/            # 콘텐츠 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── enums/              # Enum 관련 코드
├── insight/            # 인사이트 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── models/             # 도메인 모델
├── mypage/             # 마이페이지 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── onboarding/         # 온보딩 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── profile_setup/      # 프로필 설정 관련 코드
│   ├── view/
│   ├── view_model/
│   └── widgets/
├── thoughts/           # 생각 관련 코드
│   ├── view/
│   ├── view_model/
│   ├── widgets/
│   └── func/           # 특정 기능별 유틸리티 (필요시 유지)
├── portfolio/          # 포트폴리오 관련 코드
│   ├── view/
│   ├── view_model/
│   ├── widgets/
│   └── models/         # 포트폴리오와 관련된 도메인 모델
├── splash/             # 스플래시 스크린
├── main.dart           # 앱의 엔트리 포인트
├── root_page.dart      # 루트 페이지

0개의 댓글