회원가입
UserAuth, UserProfile
회원 가입 - 성공
Widget/ViewModel
user_auths
Firebase
1. 회원가입 요청
Presentation
Domain
Data
Api
UseCase
2. 회원가입 요청
Repository/DataSource
login_session
Hive
3. 이메일 확인
4. 가입 승인
7. 계정 정보 저장
8. 저장 완료
9. 회원가입 완료
5. 프로필 저장
6. 저장 완료
UserAuth, UserProfile
UserAuth
UserProfile
user_profiles
UserProfile
10. 회원가입 완료
bool
bool
bool
bool
회원 정보 입력
스낵바�홈화면 이동
Remote
Local
UserAuth (
email,
pw
)
UserAuth, UserProfile
회원 가입 – 실패 (이미 가입된 이메일 or 네트워크 문제)
Widget/ViewModel
user_auths
Firebase
1. 회원가입 요청
Presentation
Domain
Data
Api
UseCase
2. 회원가입 요청
Repository/DataSource
3. 이메일 확인
4. 가입 실패
5. 가입 실패
UserAuth, UserProfile
UserAuth
6. 회원가입 실패
bool
bool
회원 정보 입력
스낵바�(TextFiled 에러)
Remote
Local
UserAuth (
email,
pw
)
계정 탈퇴
회원 탈퇴
앱 설정 화면
login_session
Hive
1. 탈퇴 요청
Presentation
Domain
Data
Api
UseCase
2. 탈퇴 요청
Repository/DataSource
3. 회원 탈퇴 요청
4. 회원 탈퇴 완료
7. 회원 탈퇴 완료
bool
8. 탈퇴 완료
bool
bool
계정 탈퇴
Remote
Local
UserAuth (
email,
pw
)
로그인 화면
user_auths
Firebase
5. 계정 정보 삭제
6. 삭제 완료
bool
UserAuth
UserAuth
UserAuth
로그인
로그인 - 성공
Widget/ViewModel
user_auths
Firebase
1. 로그인 요청
Presentation
Domain
Data
Api
UseCase
Repository/DataSource
login_session
Hive
3. 계정 확인
4. 계정 확인 완료
7. 계정 정보 저장
8. 저장 완료
9. 로그인 완료
5. 프로필 요청
6. 프로필 반환
UserAuth
UserAuth
user_profiles
LoginSession
10. 로그인 완료
UserProfile
bool
bool
bool
로그인 정보 입력
홈화면 이동
Remote
Local
UserAuth (
email,
pw
)
Firebase
UserProfile�->�LoginSession
UserAuth
UserAuth
로그인 – 실패 (계정 정보 불일치 or 네트워크 문제)
Widget/ViewModel
user_auths
Firebase
1. 로그인 요청
Presentation
Domain
Data
Api
UseCase
2. 로그인 요청
Repository/DataSource
3. 계정 확인
4. 계정 확인 실패
5. 로그인 실패
UserAuth
UserAuth
6. 로그인 실패
bool
bool
로그인 정보 입력
스낵바
Remote
Local
UserAuth (
email,
pw
)
로그아웃
로그아웃
앱 설정 화면
1. 로그아웃 요청
Presentation
Domain
Data
Api
UseCase
2. 로그아웃 요청
Repository/DataSource
5. 로그아웃 완료
6. 로그아웃 완료
bool
bool
로그인 정보 입력
Remote
Local
login_session
Hive
3. 로그인 정보 삭제
4. 로그아웃 완료
bool
로그인 화면
오늘 날씨 예보 (DailyLocationWeather)
날씨 예보 최신화 요청 – 성공
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
daily_location_weather
Hive
3. 좌표 요청
4. 좌표 반환
9. 예보 저장
10. 저장 완료, 예보 반환
11. 날씨 예보 반환
5. 도시 요청
6. 도시 반환
lat, lng
좌표 -> 도시
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
lat, lng
미정
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
날씨 예보
미정
7. 예보 요청
8. 예보 반환
Location
Json
DailyLocationWeather
DailyLocationWeather
날씨 예보 최신화 요청 – 실패 (좌표 요청(GPS) 실패)�기존의 위치로 날씨만 업데이트 하는 경우
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
daily_location_weather
Hive
3. 좌표 요청
4. 요청 실패
9. 예보 저장
10. 저장 완료, 예보 반환
11. 날씨 예보 반환
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
날씨 예보
미정
7. 예보 요청
8. 예보 반환
Location
Json
DailyLocationWeather
DailyLocationWeather
daily_location_weather
Hive
5. 위치 찾기
6. 위치 반환
Location
날씨 예보 최신화 요청 – 실패 (좌표 요청(GPS) 실패 + 저장된 값 없음)�기존의 위치로 날씨만 업데이트 하는 경우
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
daily_location_weather
Hive
3. 좌표 요청
4. 요청 실패
9. 예보 저장
10. 저장 완료, 예보 반환
11. 날씨 예보 반환
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
Default Location 위치 = 강릉
날씨 예보
미정
7. 예보 요청
8. 예보 반환
Default Location
Json
DailyLocationWeather
DailyLocationWeather
daily_location_weather
Hive
5. 위치 요청
6. 저장 값 없음
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
daily_location_weather
Hive
3. 좌표 요청
4. 좌표 반환
9. 예보 저장
10. 저장 완료, 예보 반환
11. 날씨 예보 반환
5. 도시 요청
6. 요청 실패
lat, lng
좌표 -> 도시
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
lat, lng
미정
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
날씨 예보
미정
7. 예보 요청
8. 예보 반환
Location
Json
DailyLocationWeather
DailyLocationWeather
날씨 예보 최신화 요청 – 실패 (위치 요청(도시) 실패)�기존의 위치로 날씨만 업데이트 하는 경우
daily_location_weather
Hive
5. 위치 요청
6. 위치 반환
Location
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
daily_location_weather
Hive
3. 좌표 요청
4. 좌표 반환
9. 예보 저장
10. 저장 완료, 예보 반환
11. 날씨 예보 반환
5. 도시 요청
6. 요청 실패
lat, lng
좌표 -> 도시
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
lat, lng
미정
날씨 예보
미정
7. 예보 요청
8. 예보 반환
Default�Location
Json
DailyLocationWeather
DailyLocationWeather
날씨 예보 최신화 요청 – 실패 (위치 요청(도시) 실패 + 기존 저장 값 없음)�기존의 위치로 날씨만 업데이트 하는 경우
daily_location_weather
Hive
5. 위치 요청
6. 저장 값 없음
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
Default Location 위치 = 강릉
기존 날씨 예보 요청 – 예보 요청 실패
Widget/ViewModel
GPS
Device
1. 날씨 예보 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 예보 요청
Repository/DataSource
3. 좌표 요청
4. 요청 실패
11. 날씨 예보 반환
12. 날씨 예보 반환
DailyLocationWeather
DailyLocationWeather
날씨 예보�정보 표시
Remote
Local
DailyLocationWeather (
Weather(날씨, 계절, 온도),�Location(좌표, 도시)
)
날씨 예보
미정
7. 예보 요청
8. 요청 실패
Location
daily_location_weather
Hive
5. 위치 요청
6. 위치 반환
Location
선택지
1. 기존 저장된 예보와 위치 동일하면 기존 예보 보여주기
2. 날씨 정보 요청 실패 표시
기존 날씨 예보 요청 – 갱신 시간 전 (기능 확장으로..)
OOTD 사진 선택 후 �크롭 화면 이동
List<int>
이미지 크롭 from 촬영 -> 원본 이미지 저장
사진 선택 과정
Cache Dir
7. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 이미지 저장 요청
Repository/DataSource
3. 이미지 저장 요청
4. 저장 완료
5. 저장 완료
List<int>
List<int>
6. 저장 완료
bool
bool
사진 촬영
Remote
Local
bool
사진 크롭 화면
사진 크롭
1. 이미지 저장 요청
이미지 크롭 from 앨범 -> 원본 이미지 저장
사진 선택 과정
8. 화면 이동
Presentation
사진 선택
사진 크롭 화면
사진 크롭
Image_Picker
List<int>
Cache Dir
Domain
Data
Api
UseCase
3. 이미지 저장 요청
Repository/DataSource
4. 이미지 저장 요청
5. 저장 완료
6. 저장 완료
List<int>
List<int>
7. 저장 완료
bool
bool
Remote
Local
bool
2. 이미지 저장 요청
사진 크롭 화면에서 �뒤로가기�이건 그냥 pop해서 카메라/피커 원래로 gogo
사진 크롭 후
작성 화면 이동
List<int>
이미지 크롭 완료 후 이동
사진 크롭 화면
Cache Dir
7. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 이미지 저장 요청
Repository/DataSource
3. 이미지 저장 요청
4. 저장 완료
5. 저장 완료
List<int>
List<int>
6. 저장 완료
bool
bool
사진 크롭 완료
Remote
Local
bool
피드 작성 화면
피드 작성
1. 이미지 저장 요청
이미지 크롭 완료 후 이동
피드 작성 화면
Cache Dir
Presentation
Domain
Data
Api
UseCase
2. 크롭 이미지 요청
Repository/DataSource
3. 크롭 이미지 요청
4. 이미지 반환
5. 이미지 반환
6. 이미지 반환
List<int>
List<Int>
피드 작성
Remote
Local
List<int>
1. 크롭 이미지 요청
작성 화면에서�뒤로 가기
이미지 크롭 from 촬영
피드 작성 화면
Cache Dir
1 or 7. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 원본 이미지 요청
Repository/DataSource
3. 원본 이미지 요청
4. 이미지 반환
5. 이미지 반환
6. 이미지 반환
List<int>
List<int>
피드 작성
Remote
Local
List<int>
사진 크롭 화면
사진 크롭
1. 원본 이미지 요청
OOTD 피드 작성
피드 작성 성공
피드 작성 화면
Cache Dir
11. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 피드 작성 요청
Repository/DataSource
3. 크롭 이미지 요청
4. 이미지 반환
9. 업로드 완료
10. 업로드 완료
bool
bool
피드 작성
Remote
Local
List<int>
이전 화면
피드 작성 탭 �선택 이전 화면
1. 피드 작성 요청
Feed
Cloud_storage
Firebase
5. 이미지 업로드 요청
6. 업로드 완료
Path
??
feeds
Firebase
7. 피드 업로드 요청
8. 업로드 완료
bool
Feed
Feed
피드 작성 실패
OOTD 피드 상세
피드 데이터 요청
피드 추천 or 검색
Presentation
Domain
Data
Api
피드 썸네일
피드 상세 화면
피드 상세�정보 표시
id
Firebase
0. 화면 이동
UseCase
2. 피드 데이터 요청
Repository/DataSource
3. 피드 데이터 요청
4. 피드 데이터 반환
5. 피드 데이터 반환
id
id
6. 피드 데이터 반환
Feed
Feed
Remote
Json
1. 피드 데이터 요청
id
feeds
OOTD 피드 상세에서 �편집 화면 이동
피드 데이터 전달
피드 상세 화면
Presentation
Domain
Data
Api
피드 상세
피드 작성 화면
피드 편집
0. 화면 이동
Feed
OOTD 피드 편집 취소 후�피드 상세 화면으로 이동�이건 그냥 pop
OOTD 피드 편집 완료 후�피드 상세 화면으로 이동
피드 업로드 요청 후 피드 상세 화면으로 이동
피드 편집 화면
7. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 피드 작성 요청
Repository/DataSource
5. 업로드 완료
6. 업로드 완료
bool
bool
피드 작성
Remote
피드 상세 화면
수정 내용 반영
1. 피드 작성 요청
Feed
feeds
Firebase
3. 피드 업로드 요청
4. 업로드 완료
bool
Feed
Feed
Text
유저 페이지 �(아래 두개의 시나리오가 동시에)
email을 통한 피드 요청
Widget/ViewModel
feeds
Firebase
1. 피드 요청
Presentation
Domain
Data
Api
UseCase
2. 피드 요청
Repository/DataSource
3. 피드 요청
4. 피드 반환
5. 피드 반환
6. 피드 반환
List<Feed>
List<Feed>
피드
Remote
List<Feed>
email을 통한 프로필 요청
Widget/ViewModel
user_profiles
Firebase
1. 프로필 요청
Presentation
Domain
Data
Api
UseCase
2. 프로필 요청
Repository/DataSource
3. 프로필 요청
4. 프로필 반환
5. 프로필 반환
6. 프로필 반환
UserProfile
UserProfile
유저 프로필
Remote
UserProfile
마이 페이지 �(아래 두개의 시나리오가 동시에)
email을 통한 프로필 요청
Widget/ViewModel
1. 프로필 요청
Presentation
Domain
UseCase
2. 프로필 요청
7. 프로필 반환
8. 프로필 반환
UserProfile
UserProfile
유저 프로필
user_profiles
Firebase
Data
Api
UserProfileRepository/�UserProfileDataSource
5. 프로필 요청
6. 프로필 반환
List<Feed>
FirebaseAuthRepository
3. 이메일 요청
4. 이메일 반환
Remote
email을 통한 피드 요청
Widget/ViewModel
feeds
Firebase
1. 피드 요청
Presentation
Domain
Data
Api
UseCase
2. 피드 요청
FeedRepository/�FeedDataSource
5. 피드 요청
6. 피드 반환
7. 피드 반환
8. 피드 반환
List<Feed>
List<Feed>
피드
List<Feed>
FirebaseAuthDataSource
3. 이메일 요청
4. 이메일 반환
마이페이지 �피드 삭제
Id, email
피드 삭제
Widget/ViewModel
feeds
Firebase
1. 삭제 요청
Presentation
Domain
Data
Api
UseCase
2. 삭제 요청
Repository/DataSource
3. 삭제 요청
4. 삭제 완료
7. 삭제 완료
Id, email
id
8. 삭제 완료
bool
bool
피드
Remote
bool
해당 피드�리스트에서 제거�카운트도 - 1
user_profiles
Firebase
5. 카운트 수정
6. 수정 완료
bool
마이페이지에서 �편집 화면 이동
피드 데이터 요청
마이페이지 화면
Presentation
Domain
Data
Api
피드 상세
피드 작성 화면
피드 편집
화면 이동
Feed
OOTD 피드 편집 취소 후�마이페이지로 이동�이건 그냥 pop
OOTD 피드 편집 완료 후�마이페이지로 이동
피드 업로드 요청 후 마이페이지 화면으로 이동
피드 편집 화면
7. 화면 이동
Presentation
Domain
Data
Api
UseCase
2. 피드 작성 요청
Repository/DataSource
5. 업로드 완료
6. 업로드 완료
bool
bool
피드 작성
Remote
Local
마이페이지 화면
썸네일 이미지 �그리드 뷰 표시
1. 피드 작성 요청
Feed
feeds
Firebase
3. 피드 업데이트 요청
4. 업로드 완료
bool
Feed
Feed
홈 하단 OOTD 추천�최초 이동
현재 위치, 날씨 기준으로 추천 피드 요청
Widget/ViewModel
1. 날씨 요청
Presentation
Domain
Data
Api
UseCase
2. 날씨 요청
Repository/DataSource
8. 피드 반환
9. 피드 반환
Weather
Weather
날씨 정보 갱신이 트리거
Remote
Local
daily_location_weather
Hive
3.날씨 예보 요청
4. 날씨 예보 반환
DailyLocationWeather
홈 하단 OOTD 추천�피드 조회
현재 위치, 날씨 기준으로 추천 피드 요청
Widget/ViewModel
1. 피드 요청
Presentation
Domain
Data
Api
UseCase
2. 피드 요청
Repository/DataSource
8. 피드 반환
9. 피드 반환
List<Feed>
List<Feed>
피드 조회 요청
Remote
Feeds
Firebase
6. 피드 요청
7. 피드 반환
계절, 날씨, 온도
List<Feed>
Weather
Weather
OOTD 피드 카드 뷰
현재 위치, 날씨 기준으로 추천 피드 요청
Widget/ViewModel
1. 피드 요청
Presentation
Domain
Data
Api
UseCase
2. 피드 요청
Repository/DataSource
8. 피드 반환
List<Feed>
피드 카드 뷰
Remote
Local
daily_location_weather
Hive
3.날씨 예보 요청
4. 날씨 예보 반환
DailyLocationWeather
5. 현재 시간 기준 날씨, 위치만 추출
Feeds
Firebase
6. 예보 요청
7. 예보 반환
계절, 날씨, 온도
List<Feed>
9. 피드 반환
List<Feed>
OOTD 피드 검색
위치, 날씨 필터 조건을 기준으로 추천 피드 요청
Widget/ViewModel
1. 피드 요청
Presentation
Domain
Data
UseCase
2. 피드 요청
Repository/DataSource
5. 피드 반환
6. 피드 반환
List<Feed>
List<Feed>
필터 선택
Remote
Local
Feeds
Firebase
3. 피드 요청
4. 피드 반환
List<Feed>
계절, 날씨, 온도
계절, 날씨, 온도
계절, 날씨, 온도
그리드뷰 업데이트