보호 동물과 입양 희망자를 연결하는 플랫폼
무엇을 만드나?
MVP 기획 · 19,000원
PRD·기능정의·화면목록·DB·API 계약까지, 개발자에게 바로 넘기는 기획서.
샘플은 여기까지 공개합니다
파일 다운로드와 전문(全文) 복사는 실제 결과물에서만 제공됩니다. 내 아이디어를 입력하면 같은 형식의 결과물을 받아볼 수 있습니다.
보호소·구조자의 입양 정보를 한곳에 모아, 입양 희망자가 조건으로 탐색하고 문의까지 이어지게 하는 웹 서비스를 만듭니다. 등록·검색·문의·관리자 승인의 최소 흐름으로 '흩어진 정보를 모으면 실제 매칭이 늘어나는가'를 검증합니다.
보호소·개인 구조자가 등록한 반려동물 입양 정보를 한 곳에 모아, 입양 희망자가 쉽게 탐색하고 신청할 수 있는 매칭 플랫폼. Next.js App Router + Firebase(Auth·Firestore·Hosting) 기반 검증용 MVP.
목표
비목표(1차 제외)
회원가입 · 로그인
“나는 입양 희망자 또는 보호소 담당자로서, Firebase Auth 이메일/비밀번호로 계정을 만들고 로그인하여 서비스를 이용하고 싶다.”
동물 등록 · 관리
“나는 보호소 담당자로서, 입양 대상 동물의 정보(이름·종·나이·사진·설명 등)를 등록·수정·삭제하여 입양 희망자에게 노출하고 싶다.”
동물 목록 · 상세 탐색
“나는 입양 희망자로서, 등록된 동물을 종·성별로 필터링하고 상세 정보를 확인하여 입양 여부를 결정하고 싶다.”
입양 신청
“나는 입양 희망자로서, 마음에 드는 동물에 대해 입양 신청서를 작성하여 보호소에 전달하고 싶다.”
신청 관리 · 승인
“나는 보호소 담당자로서, 내 보호소 동물에 대한 입양 신청 목록을 확인하고 승인 또는 거절 처리를 하고 싶다.”
문의 폼
“나는 입양 희망자로서, 특정 동물에 대해 궁금한 점을 보호소에 문의 메시지로 남기고 싶다.”
동물 등록·조건 검색·상세·문의·관리자 승인. 결제·실시간 채팅 제외.
1단계 — 기반·인증
셋업, 로그인, 동물/보호소 데이터 모델
2단계 — 탐색·문의
목록·상세·조건 검색·입양 문의
3단계 — 관리자·배포
등록 승인 관리자, 배포·QA
견적 참고 · 보호소 1~2곳 제휴 검증 기준. 알림·후기·앱은 별도 견적.
랜딩 페이지 /
HeroSection: 서비스 소개 문구 + CTA 버튼(동물 보러가기 / 보호소 등록하기) · FeatureHighlights: 핵심 기능 3종 아이콘 카드 · NavBar: 로고·로그인·회원가입 링크
상태: 비로그인: 로그인·회원가입 버튼 노출, 로그인: 역할에 따라 '내 신청 내역' 또는 '관리자 대시보드' 링크 노출
회원가입 · 로그인 /auth
TabToggle: '로그인' / '회원가입' 탭 전환 · LoginForm: 이메일·비밀번호 입력 + 제출 버튼 · RegisterForm: 이메일·비밀번호·이름·역할(adopter|shelter) 선택 + 제출 버튼 · ErrorMessage: Firebase Auth 오류 인라인 표시
상태: idle: 빈 폼, loading: 제출 중 버튼 비활성화 + 스피너, error: 필드 하단 오류 메시지 표시, success: 역할별 페이지로 리다이렉트
동물 목록 /animals
FilterBar: 종(species)·성별(gender) 드롭다운 필터 · AnimalCard: 이미지·이름·종·나이·보호소명·상세보기 버튼 · AnimalGrid: 카드 반응형 그리드 · EmptyState: 검색 결과 없음 메시지
상태: loading: 스켈레톤 카드 표시, loaded: 필터 적용된 카드 목록, empty: 조건에 맞는 동물 없음 안내, error: Firestore 조회 실패 메시지
동물 상세 /animals/[id]
AnimalImageBanner: 대표 이미지 전체 너비 표시 · AnimalInfoSection: 이름·종·나이·성별·상태·보호소명·설명 · AdoptButton: '입양 신청하기' 버튼 (로그인 여부·status에 따라 조건부 렌더링) · InquiryForm: 문의 메시지 textarea + 제출 버튼 (로그인 사용자 대상)
상태: loading: 콘텐츠 스켈레톤, available + 비로그인: AdoptButton → 로그인 유도, available + 로그인(adopter): AdoptButton 활성화, adopted: AdoptButton 비활성화 + '입양 완료' 배지, 이미 신청한 경우: AdoptButton → '신청 완료' 텍스트로 대체
입양 신청 폼 /animals/[id]/apply
ApplicationForm: 거주 형태·가족 수·반려동물 경험(체크박스)·신청 메시지 입력 · AnimalSummaryCard: 신청 대상 동물 요약 정보 · SubmitButton: 제출 + 로딩 상태 · ErrorMessage: 중복 신청·권한 오류 안내
상태: idle: 빈 폼, loading: 제출 중 버튼 비활성화, success: '신청이 접수되었습니다' 토스트 + /my-applications 리다이렉트, error: 인라인 오류 메시지, 미로그인 접근: /auth 리다이렉트
내 신청 내역 /my-applications
ApplicationList: 신청 동물 이름·신청일·상태 배지 목록 · StatusBadge: pending(노랑)·approved(초록)·rejected(빨강) 색상 구분 · EmptyState: 신청 내역 없음 안내
상태: loading: 스켈레톤 리스트, loaded: 신청 목록 표시, empty: 신청 내역 없음, 미로그인 접근: /auth 리다이렉트
관리자 대시보드 /admin
TabNav: '동물 관리' / '신청 관리' / '문의 관리' 탭 · AnimalManageTable: 등록 동물 목록 + 등록·수정·소프트삭제 버튼 · AnimalFormModal: 동물 등록·수정 폼 모달 · ApplicationManageTable: 신청자 이름·메시지·신청일 + 승인·거절 버튼 · InquiryList: 동물별 문의 메시지 목록(읽기 전용)
상태: 미로그인 또는 role≠shelter 접근: / 리다이렉트, 동물 탭 loading/loaded/error, 신청 탭 loading/loaded/empty, 문의 탭 loading/loaded/empty, 모달 open/close/submitting
users
animals
applications
inquiries
# API / 서버 액션 계약 > 모든 쓰기 작업은 Next.js App Router **Server Action** 또는 **Route Handler** (`/api/*`)로만 수행한다. > Firebase Admin SDK는 서버에서만 초기화하며, 서비스 키는 환경변수(`process.env`)로만 주입한다. > 클라이언트는 Firebase Auth SDK로 로그인 후 획득한 **ID Token**을 `Authorization: Bearer <idToken>` 헤더로 전달한다. --- ## 1. 동물 등록
나머지 110줄은 실제 결과물에서 확인할 수 있습니다
# 주요 의사결정 · 리스크 · 대응 ## 의사결정 ### D-01. Next.js App Router + Server Actions 채택 **결정:** 쓰기 작업을 모두 Server Action으로 처리한다. **근거:** 별도 API 서버 불필요 · Firebase Admin SDK를 서버에서만 실행 → 서비스 키 노출 원천 차단. **트레이드오프:** Server Action의 점진적 진화에 따라 캐싱 전략이 복잡해질 수 있음.
나머지 38줄은 실제 결과물에서 확인할 수 있습니다
# 수용 테스트 / QA 체크리스트
## TC-01. 회원가입 · 로그인 (Firebase Auth)
- [ ] 이메일+비밀번호로 신규 가입 시 `users/{uid}` 문서가 `role: 'adopter'`로 생성된다
- [ ] 보호소 계정은 관리자가 Firestore에서 role을 `shelter`로 수동 변경 후 권한이 적용된다
- [ ] 로그인 후 클라이언트에서 ID Token을 획득할 수 있다
- [ ] 로그아웃 후 보호된 Server Action 호출 시 401 응답을 받는다
## TC-02. 동물 등록나머지 45줄은 실제 결과물에서 확인할 수 있습니다
M0프로젝트 초기 설정 및 인프라 구성
M1Firebase Auth 연동 및 사용자 역할 관리
M2동물 등록 및 목록/상세 화면
M3입양 신청 및 신청자 목록
M4관리자 승인 및 동물 상태 관리
M5문의 폼 및 UI 마무리
M6Firebase Hosting 배포 및 QA
이 문서는 개발자에게 그대로 전달할 수 있는 기획서입니다.