WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기스냅 작가용 사진 셀렉 웹서비스 — 링크 하나로 보고, 별점 매기고, 제출
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗스냅 작가가 사진을 올리고 링크를 보내면, 모델이 휴대폰에서 사진마다 별점을 매기고, 그 결과를 작가가 어도비 브릿지의 원본에 바로 적용하는 셀렉 서비스입니다.
저는 한강과 웨딩 스냅을 찍습니다. 촬영이 끝나면 1차로 고르고 남은 사진을 카카오톡으로 30장씩 끊어서 보냈고, 모델은 마음에 드는 사진을 저장해서 다시 저에게 보냈습니다. 저는 그 사진을 원본과 하나씩 맞춰야 했습니다. 에필레고는 이 과정을 링크 하나로 줄입니다.
| 사용자 | 하는 일 | 로그인 |
|---|---|---|
| 작가 (1명) | 앨범을 만들고 사진을 올린 뒤 링크를 보냄, 결과 확인 | 필요 |
| 모델 | 카톡으로 받은 링크를 열고 별점을 매긴 뒤 "다 골랐어요" | 없음 |
public/bridge/epilego-apply-ratings.jsx)로 원본에 별점을 적용합니다. 파일명이 같으면 RAW와 JPEG 모두에 들어갑니다.npm install
cp .env.example .env.local # Supabase URL과 publishable 키를 넣는다
npm run dev
Supabase 프로젝트에 supabase/migrations의 SQL을 순서대로 적용하고, 작가 계정은 Supabase 대시보드에서 하나 만듭니다(회원가입은 막아 둠).
기술 스택: Next.js, Tailwind CSS, Supabase(데이터베이스, 저장소, 로그인), Vercel(배포), Pretendard 폰트.
| 날짜 | 한 일 |
|---|---|
| 10/18 | 문제와 범위를 정하고 CLAUDE.md 작성, 스택 결정, 업로드부터 별점, 완료, 결과, 브릿지 적용까지 핵심 기능 |
| 10/18 | 다른 에이전트(코덱스)로 교차 리뷰, 별점 저장 신뢰성 보강 |
| 10/19 | 별점 골라 보기, 셀렉을 마친 뒤 화면, 앨범 지우기 |
| 10/20 | Vercel 배포, 서비스 이름 확정 |
| 10/22–10/27 | 작가 화면 크게 보기, 별점 골라 보기, 버그 수정 |
코딩 경험이 거의 없어서, 규칙과 범위를 CLAUDE.md에 적어두고 Claude Code와 작업했습니다. 큰 결정은 Claude Code가 선택지를 2–3개 보여주면 제가 고르고, 이유와 비교한 안을 CLAUDE.md의 결정 기록에 남겼습니다(57개). 주요 결정은 이렇습니다.
| # | 증거 | 파일 |
|---|---|---|
| 1 | 첫 요청과 흐름 설계, 빈 부분을 묻는 질문 | evidence-1.png |
| 2 | CLAUDE.md 결정 기록 | evidence-2.png |
| 3 | Supabase MCP로 SQL 적용과 보안 점검 | evidence-3.png |
| 4 | 코덱스 리뷰에서 찾은 저장 순서 문제와 수정 커밋 | evidence-4.png |
| 5 | 모델이 휴대폰에서 보는 셀렉 화면(341장 앨범, 격자 보기와 별점 골라 보기) | evidence-5.png |
| 6 | 브릿지에 모델 별점이 적용된 화면(★5 10장, ★4 13장) | evidence-6.png |
배포 주소에서 직접 확인한 결과입니다.
| 케이스 | 기대 결과 | 결과 |
|---|---|---|
| 사진 130장 업로드 (2.5GB) | 촬영 시간순으로 130장이 보임 | 약 1분 만에 올라가고 촬영 시간순으로 정렬됨 |
| 카톡으로 받은 링크를 휴대폰에서 열기 | 로그인 없이 카톡 브라우저에서 열림 | 통과 |
| 별점을 매기고 "다 골랐어요" | 작가 화면에 별점순 결과, 파일명 일치 | 통과. 결과 파일을 브릿지에 적용하니 원본에 ★5 10장, ★4 13장, ★3 1장이 들어감 |
| 실제 모델(을지로 촬영 친구)이 설명 없이 사용 | 혼자 완료까지 진행 | 링크만 받고 끝까지 마침. 인터뷰에서 어려웠던 점은 "딱히 없다". 걸린 시간은 재지 못함 |
| 엣지: 한도를 넘는 5점 | 막히고 안내가 나옴 | 통과. "5점은 최대 N장까지예요" 안내, 별점은 그대로 |
| 엣지: 링크 주소 한 글자 변경 | 다른 앨범이 아니라 '없는 앨범' | 통과 |
| 한계: RAW 파일(.RAF 등) 업로드 | 건너뛰고 안내 | 사진 고르기 창에서는 JPEG만 보이고, 끌어다 놓으면 "JPEG가 아니라 건너뜀"으로 안내 |
잘 통한 방법
어려웠던 점
| 파일 | 역할 |
|---|---|
supabase/migrations/20261018110815_init.sql | 앨범과 사진 표, 보안 규칙, 모델용 함수 3개 |
app/a/[token]/use-ratings.ts | 별점 즉시 저장, 오래된 요청 무시, 실패 재시도, 5점 한도 |
app/a/[token]/select-app.tsx | 모델 화면(격자, 필름스트립, 비교, 완료) |
app/admin/albums/[id]/upload-photos.tsx | 사진 줄이기, 촬영 시간 읽기, 업로드 |
public/bridge/epilego-apply-ratings.jsx | 브릿지 원본에 별점 적용 |