동네 단기 일자리와 시니어 구직자를 연결
무엇을 만드나?
MVP 기획 · 19,000원
PRD·기능정의·화면목록·DB·API 계약까지, 개발자에게 바로 넘기는 기획서.
샘플은 여기까지 공개합니다
파일 다운로드와 전문(全文) 복사는 실제 결과물에서만 제공됩니다. 내 아이디어를 입력하면 같은 형식의 결과물을 받아볼 수 있습니다.
동네 단기 일자리와 시니어 구직자를 연결하는 웹 서비스를 만듭니다. 소상공인이 공고를 올리면 시니어가 지역으로 검색·지원하고, 관리자가 공고를 승인해 신뢰도를 지킵니다. 실시간 채팅·정산·본인인증 같은 복잡한 기능은 빼고, '양쪽 수요가 실제로 있는가'만 먼저 확인하는 최소 버전입니다.
50대 이상 시니어가 집 근처 단기 일자리를 쉽게 찾고, 동네 소상공인이 인력을 빠르게 구할 수 있도록 연결하는 지역 기반 일자리 매칭 웹 플랫폼. 관리자가 공고를 승인하는 구조로 신뢰도를 확보한다.
목표
비목표(1차 제외)
회원가입 / 로그인
“시니어 구직자 또는 소상공인으로서 이메일·비밀번호로 가입하고 역할(role)을 선택하여 로그인할 수 있다”
일자리 공고 등록
“소상공인(employer)으로서 일자리 제목·업종·지역·근무조건·모집 인원을 입력하여 공고를 등록할 수 있다”
일자리 목록 / 검색
“시니어 구직자로서 지역과 키워드로 승인된 일자리 목록을 검색·필터링할 수 있다”
일자리 상세 및 지원 신청
“시니어 구직자로서 공고 상세 내용을 확인하고 지원 신청 버튼 한 번으로 지원할 수 있다”
관리자 공고 승인
“관리자로서 pending 상태의 공고 목록을 확인하고 승인 또는 반려할 수 있다”
지원자 목록 조회
“소상공인으로서 내 공고에 지원한 사람의 이름·지역·지원일시를 확인할 수 있다”
마이페이지
“로그인한 사용자로서 내 프로필 정보와 내가 지원한 공고(또는 등록한 공고) 목록을 확인할 수 있다”
인증·공고 등록/검색/지원·관리자 승인의 최소 매칭 흐름. 결제·정산·실시간 기능 제외.
1단계 — 기반·인증
프로젝트 셋업, 이메일 로그인, DB 스키마
2단계 — 핵심 매칭
공고 등록·지역 검색·지원 흐름
3단계 — 관리자·배포
공고 승인 관리자, 배포·QA
견적 참고 · 지역 1곳 한정 검증 기준. 범위 확대(정산·알림·앱)는 별도 견적.
랜딩 페이지 /
HeroSection — 서비스 소개 문구 + CTA 버튼(일자리 찾기 / 공고 등록하기) · HowItWorksSection — 3단계 이용 안내(구직자/고용주 흐름) · RegionQuickFilter — 주요 지역 버튼 → /jobs?region=xx 이동 · Navbar — 로고, 로그인/회원가입 버튼 (로그인 시 마이페이지/로그아웃)
상태: 비로그인: 로그인/회원가입 버튼 표시, 로그인: 역할에 따라 '마이페이지' 또는 '공고 등록' 바로가기 표시
회원가입 / 로그인 /auth
TabToggle — '로그인' | '회원가입' 탭 전환 · LoginForm — 이메일, 비밀번호 입력 + 로그인 버튼 · SignupForm — 이메일, 비밀번호, 이름, 지역, role 선택(구직자/고용주) 입력 + 가입 버튼 · ErrorMessage — 인증 실패 시 인라인 오류 표시 · LoadingSpinner — 서버 응답 대기 중 표시
상태: idle: 폼 초기 상태, loading: 서버 액션 호출 중 버튼 비활성화, error: 이메일 중복·비밀번호 오류 메시지 표시, success: 역할별 리다이렉트(/jobs 또는 /employer/dashboard)
일자리 목록 /jobs
SearchBar — 키워드 텍스트 입력 · RegionDropdown — 지역 필터 드롭다운 · JobCardGrid — 승인된 공고 카드 목록 (제목·업체명·지역·기간·마감일) · EmptyState — 검색 결과 없을 때 안내 메시지 · Pagination — 페이지 이동
상태: loading: 스켈레톤 카드 표시, loaded: 필터 적용된 공고 목록 표시, empty: 조건에 맞는 공고 없음 메시지, unauthenticated: 지원 버튼 클릭 시 /auth로 리다이렉트
일자리 상세 /jobs/[id]
JobHeader — 제목, 업체명, 지역, 등록일 · JobDetailBody — 업무내용·근무기간·근무요일·급여정보·모집인원·마감일 · CompanyInfo — 업체명, 주소 · ApplyButton — '지원하기' 버튼 (지원 완료 시 비활성화 + '지원 완료' 텍스트) · BackLink — 목록으로 돌아가기
상태: not-applied: '지원하기' 버튼 활성화, applied: '지원 완료' 버튼 비활성화, unauthenticated: '로그인 후 지원하세요' 안내, expired: 마감일 지난 공고는 '마감된 공고' 배지 표시
고용주 대시보드 (공고 등록 / 지원자 목록) /employer/dashboard
MyJobList — 내 공고 목록 (제목·status 배지·지원자 수) · JobPostForm — 공고 등록 폼(제목·업무내용·지역·근무기간·근무요일·급여정보·모집인원·마감일) · ApplicantListModal — 특정 공고 지원자 카드 목록(이름·지역·지원일시) · StatusBadge — pending/approved/rejected 색상 구분 · FormErrorMessage — 유효성 오류 인라인 표시
상태: no-jobs: 등록된 공고 없음 + '첫 공고 등록하기' CTA, form-idle: 폼 초기 상태, form-submitting: 버튼 비활성화 + 스피너, form-error: 필드별 오류 메시지, applicants-open: 모달로 지원자 목록 오버레이
관리자 공고 승인 /admin
AdminGuard — 서버에서 role=admin 미충족 시 403 반환 · PendingJobList — status=pending 공고 카드 목록 · JobPreviewCard — 공고 요약(제목·업체·지역·등록일) + 상세 보기 토글 · ApproveRejectButtons — '승인' / '반려' 버튼 (서버 액션 호출) · FilterTabs — all | pending | approved | rejected 탭
상태: pending-list: 미승인 공고 목록 표시, processing: 승인·반려 버튼 클릭 후 로딩, empty: 처리 대기 공고 없음 메시지, tab-filtered: 탭 선택에 따라 status별 목록 표시
마이페이지 /mypage
ProfileCard — 이름·이메일·지역 표시 + 수정 폼(인라인 토글) · AppliedJobList — seeker: 지원한 공고 목록(제목·업체·지원일·공고 status) · MyPostedJobList — employer: 등록한 공고 목록(공고 status·지원자 수) · EditProfileForm — 이름·지역 수정 입력 + 저장 버튼(서버 액션) · LogoutButton — Supabase Auth signOut 호출
상태: view: 프로필 정보 읽기 전용, edit: 인라인 수정 폼 활성화, saving: 저장 버튼 비활성화 + 스피너, role-seeker: 지원 내역 탭만 표시, role-employer: 등록 공고 탭만 표시
users
companies
jobs
applications
# API 계약 (Server Actions & Route Handlers) > 인증: 모든 쓰기 작업은 Supabase Auth 세션 쿠키로 서버에서 검증. 서비스 키는 서버 전용(`SUPABASE_SERVICE_ROLE_KEY` → 환경변수, 브라우저 노출 금지). --- ## 1. 인증 (Auth) | # | 방식 | 경로 / Action | 입력 | 출력 | 인증 |
나머지 58줄은 실제 결과물에서 확인할 수 있습니다
# 주요 의사결정 및 리스크·대응 ## 의사결정 | # | 결정 사항 | 근거 | |---|----------|------| | D1 | 인증: Supabase Auth 단독 사용 | MVP 범위 내 최소 구현, 추가 인증 방식 금지 (Hard Constraint) | | D2 | 쓰기 작업 전부 Server Action 처리 | 서비스 키 서버 격리, 클라이언트 노출 방지, RLS 우회 없이 세션 검증 | | D3 | 읽기 공개 API: Route Handler (`GET /api/jobs`) | 비로그인 시니어의 목록·검색 허용, SSR 캐싱 활용 가능 |
나머지 35줄은 실제 결과물에서 확인할 수 있습니다
# 수용 테스트 체크리스트 ## T1. 회원가입 / 로그인 - [ ] 시니어 역할(`role=senior`)로 이메일·비밀번호·이름·지역 입력 후 회원가입 성공 → `users` 테이블에 레코드 생성 확인 - [ ] 업체 역할(`role=owner`)로 회원가입 성공 → `users.role='owner'` 저장 확인 - [ ] 중복 이메일 가입 시 에러 메시지 표시 (중복 가입 차단) - [ ] 비밀번호 6자 미만 입력 시 클라이언트 유효성 에러 표시 - [ ] 올바른 자격증명으로 로그인 → 역할별 리다이렉트 (시니어→목록, 업체→등록, 관리자→관리)
나머지 54줄은 실제 결과물에서 확인할 수 있습니다
이 문서는 개발자에게 그대로 전달할 수 있는 기획서입니다.