Skip to content

Latest commit

Β 

History

History
209 lines (170 loc) Β· 12.2 KB

File metadata and controls

209 lines (170 loc) Β· 12.2 KB
drawee


πŸ“– ν”„λ‘œμ νŠΈ μ†Œκ°œ

λ°©ν•™μˆ™μ œλ‘œ κ·Έλ¦Ό 일기 κ·Έλ €μ„œ μ œμΆœν–ˆλ˜ 것 κΈ°μ–΅ν•˜μ‹œλ‚˜μš”? draweeλŠ” κ·Έλ¦Ό 일기λ₯Ό κ³΅μœ ν•˜λŠ” SNS μž…λ‹ˆλ‹€.

draweeλŠ” μ‚¬μš©μžκ°€ 맀일 μ£Όμ–΄μ§€λŠ” 곡톡 μ£Όμ œμ— 따라 κ·Έλ¦Όκ³Ό κΈ€λ‘œ 개인적인 기얡을 κΈ°λ‘ν•˜κ³ , 이λ₯Ό κΎΈλ―Έκ³  κ³΅μœ ν•  수 μžˆλŠ” μ†Œμ…œ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. μ‚¬μš©μžλ“€μ€ μžμ‹ λ§Œμ˜ 창의적인 λ°©μ‹μœΌλ‘œ 이야기λ₯Ό ν’€μ–΄λ‚˜κ°€λ©°, μ„œλ‘œμ˜ 그림일기에 μ’‹μ•„μš”λ₯Ό λ³΄λ‚΄κ±°λ‚˜, λŒ“κΈ€μ„ λ‚¨κΈ°λŠ” λ“±μ˜ λ°©μ‹μœΌλ‘œ ꡐλ₯˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


πŸ“‚ ν”„λ‘œμ νŠΈ κΈ°λŠ₯

  • ꡬ글 둜그인: ꡬ글 κ³„μ •μœΌλ‘œ κ°„νŽΈν•˜κ²Œ νšŒμ›κ°€μž… 및 λ‘œκ·ΈμΈμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 곡톡 주제 제곡: 맀일 μƒˆλ‘­κ²Œ μ œκ³΅λ˜λŠ” μ£Όμ œμ— λ§žμΆ”μ–΄ κΈ€κ³Ό 그림을 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • 날씨별 그림일기: μ„œλ‘œ λ‹€λ₯Έ μœ μ €κ°€ μž‘μ„±ν•œ 그림일기듀 쀑 같은 날씨끼리 λͺ¨μ•„μ„œ 확인해 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ£Όμ œλ³„ 그림일기: 맀일 μƒˆλ‘­κ²Œ μ œκ³΅λ˜λŠ” 주제 뿐만 μ•„λ‹ˆλΌ, 아카이빙 λ˜μ–΄ μžˆλŠ” κΈ°μ‘΄ μ£Όμ œλ³„λ‘œ 그림일기λ₯Ό λͺ¨μ•„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 검색 κΈ°λŠ₯을 ν™œμš©ν•©λ‹ˆλ‹€.

  • κ·Έλ¦Ό κΎΈλ―ΈκΈ°: μ‚¬μš©μžκ°€ 직접 κ·Έλ¦° 그림에 λ‚™μ„œ, νŽ˜μΈνŒ…, 이λͺ¨μ§€ μŠ€ν‹°μ»€ 등등을 ν™œμš©ν•΄ κΎΈλ―ΈκΈ°κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • 기둝 및 곡유: μ™„μ„±λœ κ·Έλ¦Ό 일기λ₯Ό μ €μž₯ν•˜κ³  λ‹€λ₯Έ μ‚¬μš©μžλ“€κ³Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ†Œμ…œ λ„€νŠΈμ›Œν¬ κΈ°λŠ₯: λ‹€λ₯Έ μ‚¬μš©μžμ˜ μž‘ν’ˆμ„ κ°μƒν•˜κ³ , λŒ“κΈ€μ΄λ‚˜ μ’‹μ•„μš”λ₯Ό 톡해 μ†Œν†΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


πŸš€ ν”„λ‘œμ νŠΈμ— μ‚¬μš©ν•œ 기술

Technologies Tools
μ–Έμ–΄
ν”„λ ˆμž„μ›Œν¬
λ°μ΄ν„°λ² μ΄μŠ€
에디터
ν˜‘μ—…
μ£Όμš” 라이브러리

πŸ›οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

(Click!)디렉토리 ꡬ쑰

β”œβ”€β”€ add_mock_data.dart # μ•± ꡬ동 ν…ŒμŠ€νŠΈ μœ„ν•œ κ°€μ§œ 데이터 생성
β”œβ”€β”€ constant # μ•± 컬러 μ½”λ“œ 등을 μ„€μ •
β”‚Β Β  β”œβ”€β”€ colors.dart
β”‚Β Β  └── text_pattern.dart
β”œβ”€β”€ core # νŒŒμ΄μ–΄λ² μ΄μŠ€ μ„€μ •
β”‚Β Β  └── utils
β”‚Β Β  └── firestore_utils.dart
β”œβ”€β”€ data # 데이터
β”‚Β Β  β”œβ”€β”€ data_sources # data/data_sources
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ algolia_subject_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ auth_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ firebase_auth_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ firebase_post_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ firebase_recommend_subject_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ firebase_user_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ post_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ recommend_subject_data_source.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ subject_data_source.dart
β”‚Β Β  β”‚Β Β  └── user_data_source.dart
β”‚Β Β  β”œβ”€β”€ dto # data/dto
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ post_dto.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ recommend_subject_dto.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ subject_dto.dart
β”‚Β Β  β”‚Β Β  └── user_dto.dart
β”‚Β Β  └── repositories # data/repositories
β”‚Β Β  β”œβ”€β”€ auth_repository_impl.dart
β”‚Β Β  β”œβ”€β”€ post_repository_impl.dart
β”‚Β Β  β”œβ”€β”€ recommend_subject_repository_impl.dart
β”‚Β Β  β”œβ”€β”€ subject_repository_impl.dart
β”‚Β Β  └── user_repository_impl.dart
β”œβ”€β”€ domain # 도메인
β”‚Β Β  β”œβ”€β”€ entities # domain/entities
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ post.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ recommend_subject.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ subject.dart
β”‚Β Β  β”‚Β Β  └── user.dart
β”‚Β Β  β”œβ”€β”€ repositories # domain/repositories
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ auth_repository.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ post_repository.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ recommend_subject_repository.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ subject_repository.dart
β”‚Β Β  β”‚Β Β  └── user_repository.dart
β”‚Β Β  └── usecases # domain/usecases
β”‚Β Β  β”œβ”€β”€ auth # auth μ‚¬μš©μž 인증
β”‚Β Β  β”‚Β Β  └── sign_in_google_usecase.dart
β”‚Β Β  β”œβ”€β”€ post # post 그림일기 포슀트
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ create_post_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ delete_post_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_post_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_posts_by_subject_id_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_posts_by_user_id_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_posts_by_weather_usecase.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_posts_usecase.dart
β”‚Β Β  β”‚Β Β  └── update_post_usecase.dart
β”‚Β Β  β”œβ”€β”€ recommend_subject # μΆ”μ²œ 주제
β”‚Β Β  β”‚Β Β  └── get_recommend_subject_usecase.dart
β”‚Β Β  β”œβ”€β”€ subject # 주제 κ΄€λ ¨
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ get_subject_usecase.dart
β”‚Β Β  β”‚Β Β  └── get_subjects_usecase.dart
β”‚Β Β  └── user # μœ μ € κ΄€λ ¨
β”‚Β Β  β”œβ”€β”€ create_user_usecase.dart
β”‚Β Β  β”œβ”€β”€ delete_user_usecase.dart
β”‚Β Β  β”œβ”€β”€ get_user_usecase.dart
β”‚Β Β  └── update_user_usecase.dart
β”œβ”€β”€ firebase_options.dart
β”œβ”€β”€ main.dart
└── presentation # ν”„λ ˆμ  ν…Œμ΄μ…˜ λ ˆμ΄μ–΄
β”œβ”€β”€ providers # ν”„λ‘œλ°”μ΄λ” λͺ¨μŒ
β”‚Β Β  β”œβ”€β”€ auth_providers.dart
β”‚Β Β  β”œβ”€β”€ post_providers.dart
β”‚Β Β  β”œβ”€β”€ recommend_subject_providers.dart
β”‚Β Β  β”œβ”€β”€ subject_providers.dart
β”‚Β Β  └── user_providers.dart
β”œβ”€β”€ ui # ui ν™”λ©΄
β”‚Β Β  β”œβ”€β”€ home # μ•±μ˜ 첫 μ§„μž…μ , ν™ˆν™”λ©΄
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ home_page.dart
β”‚Β Β  β”‚Β Β  └── widgets
β”‚Β Β  β”‚Β Β  └── weather_box.dart
β”‚Β Β  β”œβ”€β”€ layout
β”‚Β Β  β”‚Β Β  └── main_layout.dart
β”‚Β Β  β”œβ”€β”€ login # 둜그인 ν™”λ©΄
β”‚Β Β  β”‚Β Β  └── login_page.dart
β”‚Β Β  β”œβ”€β”€ mypage # λ§ˆμ΄νŽ˜μ΄μ§€
β”‚Β Β  β”‚Β Β  └── mypage_page.dart
β”‚Β Β  β”œβ”€β”€ register # νšŒμ› κ°€μž…
β”‚Β Β  β”‚Β Β  └── register_page.dart
β”‚Β Β  β”œβ”€β”€ splash # μŠ€ν”Œλž˜μ‰¬ ν™”λ©΄
β”‚Β Β  β”‚Β Β  └── splash_page.dart
β”‚Β Β  β”œβ”€β”€ subject_post # μ£Όμ œλ³„ λ Œλ”λ§
β”‚Β Β  β”‚Β Β  └── subject_post_page.dart
β”‚Β Β  β”œβ”€β”€ subject_search # 주제 검색
β”‚Β Β  β”‚Β Β  └── subject_search_page.dart
β”‚Β Β  β”œβ”€β”€ weather_post # 날씨별 λ Œλ”λ§
β”‚Β Β  β”‚Β Β  └── weather_post_page.dart
β”‚Β Β  β”œβ”€β”€ widgets
β”‚Β Β  β”‚Β Β  └── post_card.dart
β”‚Β Β  └── write_post # 그림일기 μž‘μ„±
β”‚Β Β  β”œβ”€β”€ widgets
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ diary_input_field.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ hint_text.dart
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ section_title.dart
β”‚Β Β  β”‚Β Β  └── weather_button.dart
β”‚Β Β  β”œβ”€β”€ write_post_page.dart
β”‚Β Β  └── write_post_view_model.dart
└── viewmodels # λ·°λͺ¨λΈ λͺ¨μŒ
β”œβ”€β”€ auth_view_model.dart
β”œβ”€β”€ post_view_model.dart
β”œβ”€β”€ recommend_subject_view_model.dart
β”œβ”€β”€ subject_view_model.dart
└── user_view_model.dart

πŸ› οΈ ν”„λ‘œμ νŠΈ μ„€μΉ˜ 및 μ‹€ν–‰ 방법

Git μ €μž₯μ†Œ 클둠

$ git clone https://github.com/5GHS/drawee.git
$ cd drawee

μ˜μ‘΄μ„± μ„€μΉ˜

$ flutter pub get

Algolia 검색 κΈ°λŠ₯을 μœ„ν•œ .env 파일 생성

루트 λ””λ ‰ν† λ¦¬μ—μ„œ .env 파일 생성 ν›„, μ•„λž˜ λ‚΄μš©μ„ λΆ™μ—¬λ„£κ³  각각의 값을 μž…λ ₯ν•˜μ„Έμš”.

ALGOLIA_APP_ID=여기에 IDλ₯Ό μž…λ ₯ν•˜μ„Έμš”.
ALGOLIA_API_KEY=μ—¬κΈ°μ—λŠ” Key 값을 μž…λ ₯ν•˜μ„Έμš”.

Firebase μ„€μ •

νŒŒμ΄μ–΄λ² μ΄μŠ€ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³ , Firestoreλ₯Ό ν™œμ„±ν™”ν•©λ‹ˆλ‹€. Storage도 ν•„μš”ν•©λ‹ˆλ‹€.

  1. Firebase μ½˜μ†”μ—μ„œ GoogleService-Info.plistλ₯Ό λ‹€μš΄λ°›μ•„μ„œ ios/Runner/ μ•„λž˜μ— μΆ”κ°€ν•©λ‹ˆλ‹€.
  2. google-services.json νŒŒμΌμ€ android/app/ μ•„λž˜μ— μΆ”κ°€ν•©λ‹ˆλ‹€.

πŸ“Έ μ•± ꡬ동 μ˜μƒ

ꡬ글 둜그인

ꡬ글 둜그인


κ·Έλ¦Ό 일기 μ—…λ‘œλ“œ 및 날씨별 κ²Œμ‹œκΈ€ 확인

그림일기 μž‘μ„± 및 날씨별 κ²Œμ‹œκΈ€