졸업프로젝트 1학기 기말고사

기억을 심다.

위치 기반 감정 일기 앱, Pinlog

지금 체험하기 더 알아보기
6단계
핀 생성 위자드
12가지
감정 타입
3D
지구본 뷰
실시간
소셜 연결
SCROLL
01 / 기존 내용 리마인드

기억은 흐릿해지고,
기록은 파편화된다

01
기억이 사라진다
여행지에서 찍은 사진은 수백 장이지만, 언제 어디서 어떤 감정을 느꼈는지는 금방 흐릿해진다. 시간이 지나면 어느 식당이었는지조차 기억나지 않는다.
02
기록이 파편화된다
사진은 카메라 롤, 감상은 메모앱, 위치는 지도앱에 따로 흩어져 있다. 나중에 돌아보려 해도 전체 그림을 한눈에 볼 수 없다.
03
함께 나누기 어렵다
같은 여행을 한 친구와 기억을 공유하거나, 추천 장소를 위치와 함께 자연스럽게 전달하는 방법이 마땅치 않다.

경쟁사 대비
Pinlog의 차별점

기존 서비스들은 위치·감정·소셜을 통합해서 다루지 못한다.

기능 Pinlog 여행일기 / 트립픽 인스타그램 AMOU
02 / 개발 스택

개발 스택 &
아키텍처

단일 코드베이스로 iOS를 타겟하되, 지도·서버·알림 각 영역에 최적의 도구를 선택했습니다.

F
Flutter + Dart
크로스플랫폼 네이티브 앱 프레임워크. Dart SDK ^3.11.4, 현재 iOS 배포
단일 Dart 코드베이스로 iOS 타겟 · Android 확장 용이
M
Mapbox Maps Flutter
3D 지구본 Globe Projection, 커스텀 마커 Canvas 렌더링, 클러스터링
Google Maps 대비 3D 지구본 + 자유로운 커스텀
S
Supabase
PostgreSQL DB + Auth + Storage + Realtime + Edge Functions
RLS 기반 복잡한 소셜 쿼리에 유리
상태 · 알림 · AI · 서버
Riverpod v2 + Hive
타입 안전 상태관리 · 오프라인 로컬 캐시 — 서버 없이도 핀 조회 가능
FCM + TypeScript (Deno)
Supabase Edge Function으로 FCM HTTP v1 API 직접 호출. JWT 자체 발급
Gemini 1.5 Flash
사진 + 카테고리 분석 → 핀 제목 AI 자동 추천 (Google AI Studio)
03 / Problem & Solution

맞닥뜨린 문제들,
해결한 방법들

개발 과정에서 발생한 핵심 기술 문제와 그 해결 과정입니다.

01 / Mapbox
지도 핀 마커
잔상 버그
map_screen.dart
deleteAll() → createMulti(
opacity: 0.0
)
⚠ ghost marker on real device
Solution
opacity 페이드인 제거. createMulti(opacity:1.0) 직접 호출. 뮤텍스 지연도 제거.
02 / Auth
OAuth 로그인
콜백 누락
auth_provider.dart
// Safari → App 전환 후
❌ supabase.auth.session == null
// URL Scheme 미등록
Solution
Info.plist에 io.supabase.pinlog URL Scheme 추가. isOAuthWaiting guard 적용.
03 / FCM
Firebase Admin SDK
미지원 환경
send-fcm/index.ts (Deno)
// Firebase Admin SDK
❌ not supported on Deno
// FCM HTTP v1 needs JWT
Solution
Service Account JSON → crypto.subtle.sign으로 JWT 직접 발급. FCM HTTP v1 API 직접 호출.
Step 01

지도를 길게 눌러
핀을 심을 곳을 고르세요

Mapbox 기반 고해상도 지도 위 어디서든 핀을 심을 수 있습니다. 현재 위치는 자동으로 감지되고, 원하는 장소를 직접 선택해도 됩니다.

Mapbox GL 현재 위치 자동 감지 핀 클러스터링
Step 02

감정·사진·동행자를
한 번에 기록하세요

6단계 위자드로 카테고리, 감정 강도, 날씨, 동행자, 사진까지 완성합니다. AI가 카테고리에 맞는 제목을 자동으로 추천해 드립니다.

12가지 감정 사진 최대 5장 AI 제목 추천
Step 03

핀이 지도 위에
영원히 새겨집니다

저장 즉시 지도 위에 핀이 심어집니다. 핀이 쌓일수록 칭호가 오르고 특별한 뱃지를 수집하며, 친구와도 공유할 수 있습니다.

지도에 영구 저장 칭호 · 뱃지 수집 친구 공유
Q&A

궁금한 점이 있으시면
편하게 질문해 주세요.

PIN LOG — 기억을 심다.

팀 구성 &
역할

최다울
팀장 · 총괄
FlutteriOSSupabase
조혜연
UX/UI 디자인 · 기획
FigmaUX 리서치기획
추형우
풀스택 엔지니어
FlutterBackendDB
정원
자료조사 & 문서화
기획QA문서화