동네 단기 일자리와 시니어 구직자를 연결
어떻게 만드나?
AI 빌드 기획 패키지 · 49,000원
AI 코딩 에이전트가 바로 투입할 정밀 스펙 + 붙여넣기 프롬프트.
Next.js (App Router) · Supabase Auth · Supabase (PostgreSQL) · Vercel
샘플은 여기까지 공개합니다
파일 다운로드와 전문(全文) 복사는 실제 결과물에서만 제공됩니다. 내 아이디어를 입력하면 같은 형식의 결과물을 받아볼 수 있습니다.
AI 코딩 에이전트(Cursor · v0 · Claude Code 등)에 아래 순서대로 붙여넣으면 됩니다. 각 단계를 끝내면 체크하세요.
AI 코딩 에이전트 준비
Cursor · v0 · Claude Code · Bolt 중 편한 도구를 열고 새 프로젝트를 시작하세요. 스택은 Next.js (App Router) · Supabase (PostgreSQL) (Next.js · Supabase · Vercel) 기준입니다.
프로젝트 셋업 — 환경변수 · 인증
필요한 환경변수
NEXT_PUBLIC_SUPABASE_URL NEXT_PUBLIC_SUPABASE_ANON_KEY SUPABASE_SERVICE_ROLE_KEY
# 인증 설정 — Supabase Auth (Google OAuth) 1. Supabase 프로젝트 생성 → Project Settings > API 에서 URL / anon / service_role 키 확보 2. Authentication > Providers > Google 활성화 (Google Cloud Console 에서 OAuth Client ID/Secret 발급해 입력) 3. Authentication > URL Configuration: Site URL + Redirect URLs(`https://<도메인>/**`) 4. 패키지: `@supabase/ssr`, `@supabase/supabase-js` 5. 서버/클라이언트 Supabase client 분리. service_role 키는 서버 전용(브라우저 노출 금지). 6. App Router 미들웨어로 세션 갱신.
전체 골격 만들기 — 마스터 프롬프트 실행
아래 프롬프트를 통째로 복사해 에이전트에 붙여넣으면 프로젝트 뼈대가 만들어집니다.
# 시니어 지역 일자리 매칭 플랫폼 — MVP 마스터 프롬프트 ## 역할 당신은 풀스택 Next.js 엔지니어입니다. 아래 명세를 읽고, 단계별 순서대로 작동하는 MVP를 빌드하세요. ## 제품 요약 …
모듈 구현 — 1단계 · 프로젝트 셋업
앞 단계 결과 위에서 이 프롬프트를 실행해 기능을 채웁니다.
Next.js 15 (App Router) + Supabase + Tailwind CSS MVP 프로젝트를 아래 조건대로 셋업하라. ## 스택 - `create-next-app@latest` (App Router, TypeScript, Tailwind CSS) …
모듈 구현 — 2단계 · Supabase Auth (회원가입 · 로그인)
앞 단계 결과 위에서 이 프롬프트를 실행해 기능을 채웁니다.
Supabase Auth(이메일+패스워드)로 회원가입/로그인을 구현하라. 인증 방식은 Supabase Auth만 사용하며 다른 방식은 추가하지 않는다. ## 사용자 역할 - `senior` (구직 시니어) / `business` (소상공인) / `admin` …
모듈 구현 — 3단계 · DB 스키마 (Supabase PostgreSQL + RLS)
앞 단계 결과 위에서 이 프롬프트를 실행해 기능을 채웁니다.
Supabase PostgreSQL에 아래 스키마를 생성하고 RLS(Row Level Security)를 설정하라. Supabase Dashboard > SQL Editor에 붙여넣어 실행한다. ## 테이블 정의 …
모듈 구현 — 4단계 · 핵심 기능 (일자리 등록 · 목록/검색 · 상세 · 지원 신청)
앞 단계 결과 위에서 이 프롬프트를 실행해 기능을 채웁니다.
아래 4개 핵심 기능을 Next.js App Router 기반으로 구현하라. 모든 쓰기(insert/update)는 Server Action 또는 Route Handler에서만 처리한다. --- …
모듈 구현 — 5단계 · 관리자 기능 · 랜딩페이지 · Vercel 배포
앞 단계 결과 위에서 이 프롬프트를 실행해 기능을 채웁니다.
관리자 공고 승인/반려, 지원자 목록, 랜딩페이지, Vercel 배포 설정을 구현하라. --- …
배포하기
# 배포 — Vercel
1. Vercel 에 GitHub 저장소 Import (Framework Preset = Next.js)
2. 환경변수(NEXT_PUBLIC_SUPABASE_URL / ANON_KEY / SUPABASE_SERVICE_ROLE_KEY) 등록
3. `vercel.json` 에 `{ "framework": "nextjs" }` 명시(권장)
4. main 푸시 시 자동 배포. 배포 후 Supabase Redirect URLs 에 운영 도메인 추가.검증 — 핵심 시나리오 테스트
아래 체크리스트로 핵심 기능이 동작하는지 확인하세요.
# 수용 테스트 체크리스트 ## T1. 회원가입 / 로그인 - [ ] 시니어 역할(`role=senior`)로 이메일·비밀번호·이름·지역 입력 후 회원가입 성공 → `users` 테이블에 레코드 생성 확인 - [ ] 업체 역할(`role=owner`)로 회원가입 성공 → `users.role='owner'` 저장 확인 - [ ] 중복 이메일 가입 시 에러 메시지 표시 (중복 가입 차단) - [ ] 비밀번호 6자 미만 입력 시 클라이언트 유효성 에러 표시 - [ ] 올바른 자격증명으로 로그인 → 역할별 리다이렉트 (시니어→목록, 업체→등록, 관리자→관리) - [ ] 잘못된 비밀번호 로그인 시 에러 메시지 표시 - [ ] 로그아웃 후 보호 페이지 접근 시 로그인 페이지로 리다이렉트 ## T2. 업체 등록 및 일자리 등록 - [ ] `role=owner` 로그인 후 업체명 입력 → `companies` 테이블 INSERT, `owner_id` = 세션 user.id 확인 - [ ] 업체 등록 없이 일자리 등록 시도 → 에러 처리 (company 미존재) - [ ] 일자리 제목·설명·지역·급여·기간·연락처 입력 후 등록 → `jobs.status='pending'` 저장 확인 - [ ] 필수 필드 누락 시 서버 액션에서 에러 반환 및 UI 표시 - [ ] `role=senior` 계정으로 `createJob` 호출 시 거부 (403 상당 에러) ## T3. 관리자 공고 승인/거부 - [ ] `role=admin` 계정으로 관리자 페이지 접근 → `status='pending'` 공고 목록 표시 - [ ] 승인 클릭 → `jobs.status='approved'` 업데이트 확인 - [ ] 거부 클릭 → `jobs.status='rejected'` 업데이트 확인 - [ ] `role=owner` 또는 `role=senior` 계정으로 `approveJob` 서버 액션 직접 호출 시 거부 - [ ] 관리자 페이지 URL 직접 접근 시 비관리자 계정은 리다이렉트 ## T4. 일자리 목록 / 검색 - [ ] 비로그인 상태에서 `/api/jobs` 호출 → `status='approved'` 공고만 반환 확인 - [ ] `pending` / `rejected` 공고가 목록에 노출되지 않음 확인 - [ ] `?region=서울` 파라미터 → 해당 지역 공고만 필터링 - [ ] `?keyword=청소` 파라미터 → 제목·설명 포함 공고 반환 - [ ] 페이지당 20건 초과 시 페이지네이션 동작 확인 - [ ] 공고 없을 시 빈 배열 반환 (에러 아님) ## T5. 일자리 상세 - [ ] `/api/jobs/[id]` 호출 → 공고 상세 데이터 반환 - [ ] 존재하지 않는 `id` → 404 응답 - [ ] `status='pending'` 또는 `rejected` 공고 직접 URL 접근 시 404 또는 접근 불가 처리 ## T6. 지원 신청 - [ ] `role=senior` 로그인 후 승인된 공고 상세 페이지에서 지원 클릭 → `applications` INSERT 확인 - [ ] 동일 공고 중복 지원 시 에러 메시지 표시 (DB UNIQUE 제약 작동) - [ ] 비로그인 상태에서 지원 버튼 클릭 → 로그인 페이지로 리다이렉트 - [ ] `role=owner` 계정으로 `applyJob` 호출 시 거부 - [ ] `status='approved'` 아닌 공고에 지원 시도 시 에러 반환 ## T7. 지원자 목록 - [ ] `role=owner` 로그인 후 본인 공고 지원자 목록 `/api/jobs/[id]/applicants` → 지원자 이름·지역 반환 - [ ] 타인 공고 지원자 목록 조회 시 거부 (소유권 검증) - [ ] `role=admin` 계정으로 모든 공고 지원자 목록 조회 가능 확인 ## T8. 보안 / 환경변수 - [ ] 브라우저 Network 탭에서 `SUPABASE_SERVICE_ROLE_KEY` 노출 없음 확인 - [ ] `NEXT_PUBLIC_` 접두사 없는 환경변수가 클라이언트 번들에 포함되지 않음 확인 - [ ] 모든 쓰기 Server Action 에서 세션 재검증 후 role 확인 로직 존재 확인 (코드 리뷰)
막혔을 때 — 트러블슈팅
에이전트가 에러로 막히면 아래 대응을 참고하세요.
## 빌드/타입 에러가 나요 - **증상**: `npm run build` 에서 타입 에러. **원인**: 서버/클라이언트 컴포넌트 경계 혼동. **해결**: 데이터 조회는 서버 컴포넌트에서, 상호작용은 `"use client"` 파일로 분리하라고 에이전트에 지시. ## 로그인 후 리다이렉트가 안 돼요 - **증상**: 구글 로그인 후 빈 화면/무한 로딩. **원인**: Supabase Redirect URLs 미등록. **해결**: Supabase > Authentication > URL Configuration 에 `http://localhost:3000/**` 와 배포 도메인을 등록. ## 환경변수 관련 에러 - **증상**: `supabaseUrl is required` 등. **원인**: `.env.local` 미설정. **해결**: `.env.example` 를 복사해 `.env.local` 로 만들고 Supabase 키를 채운 뒤 서버 재시작. ## 데이터가 안 보이거나 저장이 안 돼요 - **증상**: 목록이 비거나 쓰기 실패. **원인**: RLS(Row Level Security) 정책 누락. **해결**: 각 테이블에 SELECT/INSERT 정책을 추가하라고 지시(비로그인 읽기 허용/본인 쓰기 등). ## 배포는 됐는데 운영에서만 깨져요 - **증상**: 로컬은 되는데 Vercel 에서 에러. **원인**: 운영 환경변수 미등록. **해결**: Vercel > Settings > Environment Variables 에 동일 키 등록 후 재배포.
막히거나 시간이 없다면? 전문가가 이 빌드킷 그대로 제작해드립니다.
전문가에게 맡기기 →50대 이상 시니어가 집 근처 단기 일자리를 쉽게 찾고, 동네 소상공인이 인력을 빠르게 구할 수 있도록 연결하는 지역 기반 일자리 매칭 웹 플랫폼. 관리자가 공고를 승인하는 구조로 신뢰도를 확보한다.
회원가입 / 로그인
시니어 구직자 또는 소상공인으로서 이메일·비밀번호로 가입하고 역할(role)을 선택하여 로그인할 수 있다
일자리 공고 등록
소상공인(employer)으로서 일자리 제목·업종·지역·근무조건·모집 인원을 입력하여 공고를 등록할 수 있다
일자리 목록 / 검색
시니어 구직자로서 지역과 키워드로 승인된 일자리 목록을 검색·필터링할 수 있다
일자리 상세 및 지원 신청
시니어 구직자로서 공고 상세 내용을 확인하고 지원 신청 버튼 한 번으로 지원할 수 있다
관리자 공고 승인
관리자로서 pending 상태의 공고 목록을 확인하고 승인 또는 반려할 수 있다
지원자 목록 조회
소상공인으로서 내 공고에 지원한 사람의 이름·지역·지원일시를 확인할 수 있다
마이페이지
로그인한 사용자로서 내 프로필 정보와 내가 지원한 공고(또는 등록한 공고) 목록을 확인할 수 있다
backend/schema.sql
샘플에서는 일부만 표시-- ============================================================ -- 50대 이상 지역 일자리 매칭 서비스 | schema.sql -- Stack: Supabase (PostgreSQL) -- ============================================================ CREATE EXTENSION IF NOT EXISTS pgcrypto; -- ------------------------------------------------------------
나머지 158줄은 실제 결과물에서 확인할 수 있습니다
backend/rls.sql
샘플에서는 일부만 표시-- ============================================================ -- 50대 이상 지역 일자리 매칭 서비스 | rls.sql -- Row Level Security 정책 -- ⚠ 보안 원칙 -- 1. 모든 테이블에 RLS를 활성화한다. -- 2. 서버 전용 시크릿(service_role 키)은 절대 클라이언트에 노출하지 않는다. -- 3. 클라이언트는 anon/authenticated 키만 사용한다. -- 4. 관리자 권한이 필요한 쓰기(공고 승인 등)는 service_role 또는
나머지 222줄은 실제 결과물에서 확인할 수 있습니다
backend/seed.sql
샘플에서는 일부만 표시-- ============================================================ -- 50대 이상 지역 일자리 매칭 서비스 | seed.sql -- 데모용 초기 데이터 -- ⚠ Supabase Auth에 먼저 아래 UUID 계정을 수동 생성하거나 -- auth.users 에 직접 INSERT 후 실행하세요. -- 실제 서비스 배포 전 반드시 제거 또는 비밀번호 변경 필요. -- ============================================================
나머지 81줄은 실제 결과물에서 확인할 수 있습니다
# 시니어 지역 일자리 매칭 플랫폼 — MVP 마스터 프롬프트 ## 역할 당신은 풀스택 Next.js 엔지니어입니다. 아래 명세를 읽고, 단계별 순서대로 작동하는 MVP를 빌드하세요. ## 제품 요약 50대 이상 구직 시니어와 동네 소상공인을 연결하는 지역 기반 단기 일자리 매칭 웹 서비스입니다. 시니어는 집 근처 공고를 검색·지원하고, 소상공인은 일자리를 등록하며, 관리자가 공고를 승인합니다.
나머지 130줄은 실제 결과물에서 확인할 수 있습니다
1단계 · 프로젝트 셋업
샘플에서는 일부만 표시Next.js 15 (App Router) + Supabase + Tailwind CSS MVP 프로젝트를 아래 조건대로 셋업하라. ## 스택 - `create-next-app@latest` (App Router, TypeScript, Tailwind CSS) - `@supabase/supabase-js`, `@supabase/ssr` 설치
나머지 40줄은 실제 결과물에서 확인할 수 있습니다
2단계 · Supabase Auth (회원가입 · 로그인)
샘플에서는 일부만 표시Supabase Auth(이메일+패스워드)로 회원가입/로그인을 구현하라. 인증 방식은 Supabase Auth만 사용하며 다른 방식은 추가하지 않는다. ## 사용자 역할 - `senior` (구직 시니어) / `business` (소상공인) / `admin` - 역할은 회원가입 시 선택, `users` 테이블 `role` 컬럼에 저장
나머지 27줄은 실제 결과물에서 확인할 수 있습니다
3단계 · DB 스키마 (Supabase PostgreSQL + RLS)
샘플에서는 일부만 표시Supabase PostgreSQL에 아래 스키마를 생성하고 RLS(Row Level Security)를 설정하라. Supabase Dashboard > SQL Editor에 붙여넣어 실행한다. ## 테이블 정의 ```sql
나머지 80줄은 실제 결과물에서 확인할 수 있습니다
4단계 · 핵심 기능 (일자리 등록 · 목록/검색 · 상세 · 지원 신청)
샘플에서는 일부만 표시아래 4개 핵심 기능을 Next.js App Router 기반으로 구현하라. 모든 쓰기(insert/update)는 Server Action 또는 Route Handler에서만 처리한다. --- ## A. 일자리 등록 (business 전용)
나머지 51줄은 실제 결과물에서 확인할 수 있습니다
5단계 · 관리자 기능 · 랜딩페이지 · Vercel 배포
샘플에서는 일부만 표시관리자 공고 승인/반려, 지원자 목록, 랜딩페이지, Vercel 배포 설정을 구현하라. --- ## A. 관리자 공고 승인/반려
나머지 66줄은 실제 결과물에서 확인할 수 있습니다