- 제목: ShareLingo
- 목적: 언어교류로 언어학습. 사용자들이 서로 다른 언어로 게시글을 주고받고 자연스럽게 언어를 교환할 수 있는 SNS 앱
- 프로젝트 기간: 2025년 05월 16일
- 앱 로딩 시 초기 스플래시 화면
- 홈탭
- 글 작성 탭
- 나의 프로필 탭
- 게시글 리스트: 사용자 프로필 이미지, 사용자 이름, 모국어 ↔ 배우고 싶은 언어, 글, 사진 코멘트 버튼, 태그 표시, 무한 스크롤
- 내용 TextField
- 사진 업로드 버튼
- 태그 선택 (태그 페이지로 이동)
- 게시 버튼
- 태그 리스트 표시
- 게시글 상세: 프로필, 이름, 내용, 사진
- 댓글 리스트: 댓글내용, 작성일
- 하단 댓글 입력창 및 아이콘
- Google 로그인 버튼
- 이름, 프로필 사진, 모국어, 배우고 싶은 언어, 자기소개 수정
- 이름, 프로필 사진, 모국어 ↔ 배우고 싶은 언어, 자기소개
- yolo 적용으로 사람이미지 선택시 사람이미지 업로드 못하게 막는 기능
lib/
├── app/ # 앱 전역 설정 (테마 등)
├── core/ # 예외, 확장, Provider, 유틸 등 공통 기능
├── data/ # 데이터 소스, DTO, Repository 구현
├── domain/ # Entity, Repository 추상화, Usecase
├── presentation/ # UI 계층
│ └── pages/ # 페이지별 UI 및 ViewModel
├── widgets/ # 공용 위젯
└── main.dart
- feature 브랜치 전략: 각자 main에서 feature/기능명 브랜치를 파서 작업 → PR 후 merge → 슬랙 단톡방 공유
- Clean Architecture: 데이터소스, Repository, Usecase, Entity, Presentation 레이어 분리
- Repository 패턴, 의존성 주입
- Riverpod 상태관리 (auto-dispose로 메모리 최적화)
- Firebase 백엔드 (Firestore, Storage, Auth)
- Google 로그인 (google_sign_in)
- 인증 상태에 따른 자동 리디렉션
- 사용자 프로필 (이름, 이메일, 사진, 자기소개, 위치 등)
- Cloud Functions로 사용자 데이터 변경 시 동기화
- 다단계 온보딩 (이름, 언어, 자기소개, 위치 등)
- 위치 기반 VWorld API 연동
- 프로필 유효성 검사 (연령, 언어, 폼 유효성)
- 리치 텍스트 입력, 이미지 다중 업로드 (Firebase Storage)
- YOLO 기반 사람 포함 사진 업로드 차단
- 태그 시스템, 게시물 수정/삭제
- 무한 스크롤, 당겨서 새로고침
- 추천/동급생/근처 탭
- 위치 기반 추천 (읍면동 기반)
- cached_network_image, easy_image_viewer, shimmer
- 이미지 압축 및 최적화
- 좋아요/댓글 시스템 (실시간 업데이트)
- 댓글 수정/삭제
- 사용자 프로필 연동
- 게시물 내 투표 생성, 관리, 결과 표시
- Firestore 트랜잭션으로 투표 무결성 보장
- 사용자 프로필 변경 시 게시물/댓글 동기화
- 댓글 수 자동 업데이트
- 데이터 정리 및 무결성
- 단위 테스트, 통합 테스트
- mocktail 사용한 Mock 데이터 관리
- GitHub Actions 통한 CI/CD
- GitHub Secrets로 민감정보 보호
- Material Design, 반응형 레이아웃
- 애니메이션, 키보드 대응
- 스켈레톤 로더, 진행률 표시
- mounted 체크, use_build_context_synchronously 처리
- Firestore 쿼리 인덱싱
- auto-dispose로 상태관리 최적화
- Firestore 보안 규칙, 인증 토큰 관리
- 위치 권한 처리
- settings_ui로 설정 페이지 구축
- 개발자 연락 기능, Crashlytics로 모니터링
- 사용자별 Firebase Storage 폴더 구조
- 효율적인 이미지 파일 관리
- Riverpod, flutter_dotenv, Firebase (Firestore, Auth, Storage, Crashlytics)
- google_sign_in, geolocator, country_flags, tflite_flutter, yolo_helper
- image_picker, url_launcher, emoji_picker_flutter 등
- 기능 개발은 feature/브랜치에서 진행 후 PR
- main에 merge 후, 슬랙 단톡방에 공유
- main 최신화:
git pull origin main