수영장(Sooyoung Archive)
홈개발일지이번캠App소개
전체보기
프로젝트
기술 & 개발

© 2026 수영장 (Sooyoung Archive). All rights reserved.

개인정보처리방침연락처

직접 만든 캠핑 서비스 · 웹 / iOS / Android

이번캠 MyCamp

캠핑 갈 곳을 고르고, 후보를 비교하고, 다녀온 기억을 남기는 개인 서비스입니다. 캠핑장 탐색·후기·방문 기록·플랜을 연결하고, 질문·정보·이야기는 별도 커뮤니티로 다룹니다.

이번캠 열기 App Store Google Play

직접 기획·개발·배포하며 사용자 피드백, 페이지 이동과 콘텐츠 운영을 개선하고 있습니다. iOS·Android 앱은 운영 웹을 로드하는 Capacitor 앱 셸이며, React Native나 전체 네이티브 UI로 만든 앱은 아닙니다.

검색부터 기록까지

이번캠의 실제 스토어 제출용 화면입니다. 표시된 후기·사진·건수는 캡처 당시의 예시이며 현재 데이터와 다를 수 있습니다.

이번캠 캠핑장 검색 실제 화면
클릭하여 확대

01캠핑장 검색

캠핑장 이름과 지역으로 후보를 찾습니다. 검색 결과에서 주소와 사진을 확인하고 상세 화면으로 이동합니다.

이번캠 상세 정보와 저장 실제 화면
클릭하여 확대

02상세 정보와 저장

주소, 지도와 외부 홈페이지를 확인한 뒤 관심 장소로 저장하거나 플랜에 담습니다. 예약 버튼은 캠핑장 측의 외부 안내로 연결됩니다.

이번캠 후보를 모은 캠핑 플랜 실제 화면
클릭하여 확대

03후보를 모은 캠핑 플랜

이번 주말, 바다, 아이와 함께 등 주제별 플랜을 살펴보고 후보 캠핑장을 비교합니다. 내 플랜을 만들거나 공개 플랜을 참고할 수 있습니다.

이번캠 다녀온 캠핑 기록 실제 화면
클릭하여 확대

04다녀온 캠핑 기록

출발 전에 확인할 것

캠핑장 정보
고캠핑 공공데이터와 서비스에 저장된 정보를 활용합니다. 실시간 예약 가능 여부를 보장하지 않으며, 운영 시간·요금·시설은 캠핑장 홈페이지나 전화로 최종 확인해 주세요.
로그인과 기록
내 장소 저장, 플랜 관리와 기록 작성에는 로그인이 필요합니다. 공개하는 기록에는 다른 사람의 개인정보나 공개를 원하지 않는 사진을 넣지 않도록 주의해 주세요.
커뮤니티
질문·정보·이야기에 캠핑장을 연결하고 장소 상세에서 관련 글을 확인할 수 있습니다. 커뮤니티 글은 방문 기록·방문 지도·통계에 포함하지 않습니다.
웹과 앱
웹 UI와 앱 셸을 구분해 운영합니다. 기기와 권한 설정에 따라 사진 촬영·알림 등의 동작이 달라질 수 있습니다. 최신 지원 정보는 각 스토어 안내를 확인해 주세요.

어떻게 만들었나

Next.js App Router와 React·TypeScript로 웹 화면을 만들고, Supabase Auth·PostgreSQL·Storage와 RLS로 인증·데이터·미디어를 관리합니다. 고캠핑 공공데이터를 연결하며, Capacitor 플러그인으로 웹과 기기 기능 사이의 흐름을 구성합니다.

Next.js App Router · TypeScriptSupabase Auth · Storage · RLSCapacitor 앱 셸Sentry

서비스 이용 문의는 sooyoung159@naver.com으로 보내 주세요.

출시 이후에 해결한 문제

기록과 질문의 경계

사진 피드에 질문을 섞으면 방문 기록의 의미가 흐려집니다. 질문·정보·이야기를 별도 테이블과 화면으로 분리하고, 캠핑장 연결을 통해 장소 상세와 이어지게 했습니다.

로그인 유지, 좋아요·댓글의 즉시 반응과 실패 복구, 사진·영상 업로드의 진행·재시도 흐름도 함께 보완했습니다.

공통 이동 병목

Vercel 함수와 Supabase DB를 서울에 맞추고, 공통 인증과 메타데이터·본문의 중복 조회를 요청 단위로 공유했습니다. 기존 소유권·RLS 검사는 유지했습니다.

알림의 읽음 저장이 이동을 막지 않도록 순서를 나누고, 커뮤니티 분류는 전체 페이지 대신 목록만 갱신합니다. 최근 조회 캐시·중복 요청 방지·미리 읽기와 분류별 상태·세대 검사로 응답 경합을 처리합니다.

앱과 운영의 경계

안전영역 아래에 글쓰기 버튼을 배치하고 Android 뒤로가기와 푸시 알림 이동을 구분했습니다. 자체 오류 대시보드·Sentry와 신고·차단·관리자 숨김을 연결했습니다.

웹 UI 배포와 네이티브 플러그인·권한·앱 셸의 스토어 배포는 구분합니다. 웹 배포만으로 모든 기기 기능이 갱신되지는 않습니다.

판단과 구현 과정 읽기

측정 조건까지 남긴 성능 기록

2026년 10월 7일 운영 환경의 익명 HTTP 요청을 경로별로 각각 3회 측정한 중앙값입니다. 스트리밍된 HTML 응답 전체를 받는 시간을 비교했으며, 콜드 샘플을 포함합니다. 이미지·지도 SDK·hydration·브라우저 렌더링은 제외했습니다.

10월 7일 익명 HTTP 응답 시간의 전후 기록
점검 경로변경 전변경 후
공개 플랜 목록1,604 ms296 ms
동일 캠핑장 상세 URL1,172 ms250 ms

당시 기록을 인용한 값이며 새로 측정한 결과가 아닙니다. 여러 개선이 함께 배포돼 개별 변경의 효과는 분리하지 않았습니다. 실제 앱의 전환 속도, 로그인 사용자의 체감 시간이나 p95를 뜻하지 않습니다.

검증 범위와 남은 과제

자동 테스트
2026년 10월 12일, 커밋 4c1eff7 기준 Node 자동 테스트 99개 통과를 확인했습니다. 가짜 응답과 코드 구조 검사도 포함하며, 모든 실기기나 운영 DB의 SQL 정책 검증 완료를 뜻하지 않습니다.
실기기와 릴리스
실제 상태바·키보드, 푸시 수신과 앱 종료 상태의 이동, 로그인한 앱의 반복 전환 측정은 별도 확인 과제입니다. 웹 소스맵·iOS dSYM·Android 매핑의 모든 릴리스 처리도 확인한 범위만 설명합니다.

이번캠 개발 기록

프로젝트 글

이번캠 운영기: 사용자 피드백에서 커뮤니티 분리와 이동 성능 개선까지

출시한 캠핑 서비스를 운영하며 로그인·반응·업로드 흐름을 보완하고, 방문 기록과 커뮤니티를 분리한 과정. 서울 리전, 요청 단위 캐시와 응답 경합을 다루며 측정 조건과 모바일 검증의 한계까지 정리했다.

2026. 10. 12.

캠핑인스타 만들기 첫편

Next.js, 관광공사 API, 카카오 로그인으로 캠핑 로그 서비스를 만들기 시작한 첫 개발 기록.

2026. 2. 10.

캠핑인스타 만들기 2편

게시글 삭제, 권한 처리, 이미지 정리까지 포함해 캠핑인스타의 기본 CRUD 경험을 다듬은 작업 기록.

2026. 2. 12.

사진, 방문 날짜와 장소를 연결한 기록을 피드에서 확인합니다. 장소 정보와 후기를 함께 보되, 작성 시점과 작성자의 경험을 구분해 읽습니다.

캠핑 인스타 만들기 3편

캠핑 로그 앱을 인스타그램 스타일의 소셜 앱으로 리팩토링하며 겪은 UI 개선과 트러블슈팅 기록.

2026. 2. 12.

캠핑인스타 만들기 4편

OG 이미지 구현 과정에서 겪은 삽질과 Supabase 연동 이슈를 정리한 캠핑인스타 개발 기록.

2026. 3. 3.

캠핑인스타 만들기 5편: '이번캠(MyCamp)' 리브랜딩과 Capacitor로 Apple App Store 심사 통과한 이야기

캠핑인스타를 '이번캠(MyCamp)'으로 리브랜딩하고, Capacitor를 활용해 Next.js 웹 서비스를 Apple App Store(iOS)에 공식 출시하며 겪은 심사 통과와 트러블슈팅 기록.

2026. 8. 26.