Skip to content

MASEOKJAE/AppDev_MyProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š μ—΄λžŒμ‹€ 사석화 λ°©μ§€ μ‹œμŠ€ν…œ (Hot Spot)

Flutter 기반으둜 개발된 μ‹€μ‹œκ°„ μ’Œμ„ 정보 제곡 & 사석화 λ°©μ§€ μ•±

Firebase 기반의 인증 및 데이터 관리, λ‹€μ–‘ν•œ μœ ν‹Έλ¦¬ν‹° κΈ°λŠ₯ νƒ‘μž¬

image

1️⃣ 문제 μ •μ˜

μ‹œν—˜ κΈ°κ°„λ§ˆλ‹€ λ°˜λ³΅λ˜λŠ” μ—΄λžŒμ‹€ "사석화" λ¬Έμ œλŠ” ν•™μƒλ“€μ˜ ν•™μŠ΅ νš¨μœ¨μ„ μ‹¬κ°ν•˜κ²Œ μ €ν•΄ν•©λ‹ˆλ‹€. 자리λ₯Ό 차지해놓고 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ’Œμ„μœΌλ‘œ 인해 μ‹€μ œ μžλ¦¬κ°€ λΆ€μ‘±ν•΄μ§€λŠ” 문제λ₯Ό ν•΄κ²°ν•˜κ³ μž λ³Έ 앱을 κΈ°νšν–ˆμŠ΅λ‹ˆλ‹€.

  • μ‹€μ‹œκ°„ μ—΄λžŒμ‹€ μ’Œμ„ 정보 제곡
  • μ‚¬μš©μž μ’Œμ„ 점유 μ—¬λΆ€ 확인 및 곡유
  • λ‹€μ–‘ν•œ ν•™μŠ΅ 지원 κΈ°λŠ₯ λ‚΄μž₯ (동기뢀여 μ˜μƒ, λ‚˜μΉ¨λ°˜ μ•ˆλ‚΄ λ“±)

2️⃣ 초기 ν™”λ©΄ 섀계

  • ꡬ글 둜그인과 AppBar μ‚¬μš©

    image image

  • μ‚¬μš©μž 정보 및 업적 관리

    image image

  • λ„μ„œκ΄€ 자리 μ˜ˆμ•½ 및 정보 확인

    image image


3️⃣ μƒνƒœ 관리 섀계 (provider)

πŸ”— Provider 곡식 λ¬Έμ„œ

providerλŠ” μ•± μ „μ²΄μ—μ„œ μ—΄λžŒμ‹€ μ’Œμ„ 데이터λ₯Ό 효율적으둜 κ³΅μœ ν•˜κ³ , μ‹€μ‹œκ°„ 변경사항을 λ°˜μ˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. Firebaseλ₯Ό 반볡 μ‘°νšŒν•˜μ§€ μ•Šκ³ , λ©”λͺ¨λ¦¬μ— μ €μž₯된 μƒνƒœλ‘œ μ•± μ„±λŠ₯κ³Ό λ°˜μ‘μ„±μ„ ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.


4️⃣ Firebase Database 섀계

β”œβ”€β”€ users/
β”‚   └── {uid}/
β”‚       β”œβ”€β”€ email, name, message, uid
β”‚       └── favorite/
β”‚           └── {room_name}/
β”‚               └── {seat_index}: true
β”œβ”€β”€ rooms/
β”‚   └── {room_name}/
β”‚       └── seats/
β”‚           └── {seat_index}/
β”‚               β”œβ”€β”€ email: user_email
β”‚               └── status: occupied | available

πŸ“ users Collection

image
  • 각 μ‚¬μš©μž 계정 정보λ₯Ό μ €μž₯ν•˜λŠ” μ΅œμƒμœ„ μ»¬λ ‰μ…˜μž…λ‹ˆλ‹€.
  • {uid}λ₯Ό λ¬Έμ„œ ID둜 μ‚¬μš©ν•˜λ©°, ν•΄λ‹Ή μ‚¬μš©μžμ— λŒ€ν•œ email, name, message, uid λ“±μ˜ 둜그인 정보가 μ €μž₯λ©λ‹ˆλ‹€.

⭐ favorite Subcollection

image
  • 각 μ‚¬μš©μž({uid}) λ¬Έμ„œ 내에 μ‘΄μž¬ν•˜λŠ” μ„œλΈŒμ»¬λ ‰μ…˜μž…λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ μ¦κ²¨μ°ΎκΈ°ν•œ μ’Œμ„ 정보λ₯Ό room_name β†’ seat_index ν˜•μ‹μœΌλ‘œ 트리 ꡬ쑰처럼 μ €μž₯ν•©λ‹ˆλ‹€.
  • μ¦κ²¨μ°ΎλŠ” μ’Œμ„μ„ 효율적으둜 λΉ λ₯΄κ²Œ 뢈러였기 μœ„ν•΄ μ΅œμ ν™”λœ ν˜•νƒœλ‘œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

πŸ“ rooms Collection

image
  • μ—΄λžŒμ‹€ 정보λ₯Ό μ €μž₯ν•˜λŠ” μ»¬λ ‰μ…˜μž…λ‹ˆλ‹€.
  • 각 room_name 별 λ¬Έμ„œκ°€ μ‘΄μž¬ν•˜λ©°, κ·Έ 내뢀에 seats μ»¬λ ‰μ…˜μ΄ ν¬ν•¨λ©λ‹ˆλ‹€.

πŸ’Ί seats Subcollection

image
  • μ‹€μ œ μ—΄λžŒμ‹€ λ‚΄ 각 μ’Œμ„μ— λŒ€ν•œ 정보가 λ¬Έμ„œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 각 seat_indexλŠ” λ¬Έμ„œ ID둜 μ‚¬μš©λ˜λ©°, email ν•„λ“œλŠ” ν•΄λ‹Ή μ’Œμ„μ„ μ‚¬μš© 쀑인 ν•™μƒμ˜ 이메일을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • status ν•„λ“œλŠ” μ’Œμ„μ˜ ν˜„μž¬ μƒνƒœ (occupied, available)λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

πŸ”„ 이 ꡬ쑰λ₯Ό 기반으둜 μ•±μ—μ„œλŠ” μ‹€μ‹œκ°„ μ’Œμ„ μƒνƒœ 쑰회, μƒνƒœ λ³€κ²½, 즐겨찾기 κΈ°λŠ₯ 등을 효율적으둜 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


5️⃣ ν”„λ‘œμ νŠΈ λ‚΄ μ‚¬μš©λœ μ£Όμš” νŒ¨ν‚€μ§€ & API 정리

πŸ” 둜그인 / UI κ΄€λ ¨

image
νŒ¨ν‚€μ§€ μ„€λͺ… 링크
google_sign_in Google 계정 둜그인 λ°”λ‘œκ°€κΈ°
firebase_auth Firebase 인증 κΈ°λŠ₯ λ°”λ‘œκ°€κΈ°
firebase_core Firebase SDK μ΄ˆκΈ°ν™” λ°”λ‘œκ°€κΈ°
cached_network_image λ„€νŠΈμ›Œν¬ 이미지 캐싱 λ°”λ‘œκ°€κΈ°
flutter_svg SVG 이미지 λ Œλ”λ§ λ°”λ‘œκ°€κΈ°

☁️ λ°μ΄ν„°λ² μ΄μŠ€ 및 μƒνƒœκ΄€λ¦¬

image
νŒ¨ν‚€μ§€ μ„€λͺ… 링크
cloud_firestore Firebase μ‹€μ‹œκ°„ NoSQL DB λ°”λ‘œκ°€κΈ°
provider μƒνƒœκ΄€λ¦¬ 도ꡬ λ°”λ‘œκ°€κΈ°
shared_preferences 둜컬 데이터 μ €μž₯ λ°”λ‘œκ°€κΈ°
rxdart 슀트림 기반 λ°˜μ‘ν˜• 처리 λ°”λ‘œκ°€κΈ°

⏰ μ•Œλ¦Ό 및 타이머

image
νŒ¨ν‚€μ§€ μ„€λͺ… 링크
flutter_local_notifications 둜컬 μ•Œλ¦Ό κΈ°λŠ₯ λ°”λ‘œκ°€κΈ°
timezone μ‹œκ°„λŒ€ 관리 κΈ°λŠ₯ λ°”λ‘œκ°€κΈ°

πŸ“Ί λ™μ˜μƒ 및 μ™ΈλΆ€ API

image
νŒ¨ν‚€μ§€ μ„€λͺ… 링크
youtube_player_flutter YouTube μ˜μƒ μž¬μƒ λ°”λ‘œκ°€κΈ°
http HTTP μš”μ²­ 처리 (YouTube Data API) λ°”λ‘œκ°€κΈ°

πŸ“ μœ„μΉ˜ / λ‚˜μΉ¨λ°˜

image
νŒ¨ν‚€μ§€ μ„€λͺ… 링크
location μœ„μΉ˜ 정보 μ ‘κ·Ό λ°”λ‘œκ°€κΈ°
permission_handler κΆŒν•œ μš”μ²­ 처리 λ°”λ‘œκ°€κΈ°
flutter_compass λ‚˜μΉ¨λ°˜ λ°©ν–₯ 감지 λ°”λ‘œκ°€κΈ°
math μˆ˜ν•™ 계산 (λ‚˜μΉ¨λ°˜ νšŒμ „) λ°”λ‘œκ°€κΈ°

6️⃣ μ£Όμš” κ²°κ³Όλ¬Ό & κΈ°λŠ₯ μ†Œκ°œ

πŸ” Login Page

image

Google 둜그인 β†’ Home Page 이동, SVG 둜고 λ Œλ”λ§ 적용

μ‚¬μš© API: google_sign_in, firebase_auth, flutter_svg

🏠 Home Page

image

전체 μ—΄λžŒμ‹€ μš”μ•½ + Drawer μ ‘κ·Ό

μ‚¬μš© API: provider, cloud_firestore

πŸ” Drawer Menu

image

κΈ°λŠ₯별 νŽ˜μ΄μ§€ λΌμš°νŒ… (ν™ˆ / 즐겨찾기 / ν”„λ‘œν•„ / 동기뢀여 / μ„€μ •)

⭐ Favorites Page

image

μ¦κ²¨μ°ΎκΈ°ν•œ μ’Œμ„ 리슀트뷰 ν‘œμ‹œ

μ‚¬μš© API: cloud_firestore, provider

πŸͺ‘ μ—΄λžŒμ‹€ 상세 Page

image image image image image

μ’Œμ„ μƒνƒœ μ‹€μ‹œκ°„ 확인 (πŸŸ₯ μ‚¬μš© 쀑 / 🟩 μ‚¬μš© κ°€λŠ₯), μƒνƒœ λ³€κ²½ λ²„νŠΌ λ…ΈμΆœ

μ‚¬μš© API: cloud_firestore, provider

πŸ‘€ My Page

image

μœ μ € ν”„λ‘œν•„ 및 GPS λ²„νŠΌ, μ„€μ • μ§„μž…

μ‚¬μš© API: shared_preferences, location

🧭 Location Tracker

image

μ‚¬μš©μž μœ„μΉ˜ β†’ μ˜€μ„κ΄€ λ°©ν–₯ μ•ˆλ‚΄, λ‚˜μΉ¨λ°˜ νšŒμ „

μ‚¬μš© API: location, flutter_compass, math, permission_handler

⏱ Motivation Page (1)

image

곡뢀 μ‹œκ°„ μ˜ˆμ•½ β†’ μ•Œλ¦Ό & μŠ€ν†±μ›ŒμΉ˜ κΈ°λŠ₯

μ‚¬μš© API: flutter_local_notifications, timezone, shared_preferences

πŸ“Ί Motivation Page (2)

image

μ‹€μ‹œκ°„ 유튜브 λ™μ˜μƒ 쑰회 및 μž¬μƒ

μ‚¬μš© API: http, youtube_player_flutter

βš™οΈ Setting Page

image

λ‘œκ·Έμ•„μ›ƒ 및 이용 μ•½κ΄€ 확인 κΈ°λŠ₯


7️⃣ 개발 λ‘œλ“œλ§΅

버전 κΈ°λŠ₯
v1.5 UI κ°œμ„ , 닀크 λͺ¨λ“œ, μ•½κ΄€ μΆ”κ°€
v2.0 업적 / κ²½κ³  κΈ°λŠ₯, μ’Œμ„ 이λ ₯ 쑰회
v3.0 QR μ’Œμ„ 체크 κΈ°λŠ₯, 버그 리포트 μ‹œμŠ€ν…œ

8️⃣ νŒ€μ› & μ†Œκ°

이름 μ—­ν• 
λ§ˆμ„μž¬ νŒ€μž₯, 전체 둜직 & UI, Firebase ꡬ쑰 섀계, Provider μƒνƒœκ΄€λ¦¬, μ•Œλ¦Ό κ΅¬ν˜„
이희쀀 YouTube API, GPS + λ‚˜μΉ¨λ°˜ κΈ°λŠ₯ κ΅¬ν˜„

πŸ’¬ λ§ˆμ„μž¬

λ‹€μ–‘ν•œ API와 μ™ΈλΆ€ νŒ¨ν‚€μ§€μ˜ ν™œμš©μ„ 톡해 Flutter 개발 μ ‘κ·Όλ²•μ˜ 폭을 λ„“ν˜”μŠ΅λ‹ˆλ‹€. ν˜‘μ—… κ³Όμ •μ—μ„œμ˜ μ†Œν†΅ λŠ₯λ ₯, ꡬ쑰 섀계 μ—­λŸ‰μ„ μ„±μž₯μ‹œν‚¨ λœ»κΉŠμ€ ν”„λ‘œμ νŠΈμ˜€μŠ΅λ‹ˆλ‹€.

πŸ’¬ 이희쀀

Flutter의 ν™•μž₯μ„±κ³Ό 도전 μ˜μ‹μ„ 체득할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.


πŸ“Ί μ‹œμ—° μ˜μƒ

▢️ YouTube μ‹œμ—° μ˜μƒ 보기


πŸ“œ μ°Έκ³  κ³ μ§€

  • λ‚˜μΉ¨λ°˜ κΈ°λŠ₯ κ΅¬ν˜„μ€ flutter_compass 예제 μ½”λ“œλ₯Ό 기반으둜 μˆ˜μ •ν•˜μ—¬ μ‚¬μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
    참고 링크

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published