WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
한 달에 한 번 식단표(사진/PDF)를 업로드하면 Google Gemini API가 날짜별 메뉴(점심/오전간식/오후간식)를 자동으로 인식해 Supabase에 저장합니다. 저장된 식단은 로그인 없이 공유 링크로 누구나 일간/주간/월간 캘린더로 조회할 수 있고, 홈 화면에 앱처럼 추가할 수 있는 PWA로 동작합니다. • 관리자 업로드 (/admin): PIN으로 보호. 식단표 이미지 또는 PDF와 연/월을 입력하면 Gemini가 즉시 인식해 확인 절차 없이 Supabase에 저장합니다. • 공개 조회 (/): 로그인 없이 접근 가능한 캘린더. 일간/주간/월간 뷰 전환. • PWA: 홈 화면에 아이콘 추가, 오프라인에서도 마지막으로 본 화면 셸 표시. • Next.js 16 (App Router, TypeScript, Tailwind CSS v4) • Supabase (Postgres + RLS) — 데이터 저장 • Google Gemini API (@google/genai) — 식단표 이미지/PDF 인식 • jose — 관리자 세션 쿠키 서명(JWT)README 전문 보기 ↗
한 달에 한 번 식단표(사진/PDF)를 업로드하면 Google Gemini API가 날짜별 메뉴(점심/오전간식/오후간식)를 자동으로 인식해 Supabase에 저장합니다. 저장된 식단은 로그인 없이 공유 링크로 누구나 일간/주간/월간 캘린더로 조회할 수 있고, 홈 화면에 앱처럼 추가할 수 있는 PWA로 동작합니다.
/admin): PIN으로 보호. 식단표 이미지 또는 PDF와 연/월을 입력하면 Gemini가 즉시 인식해 확인 절차 없이 Supabase에 저장합니다./): 로그인 없이 접근 가능한 캘린더. 일간/주간/월간 뷰 전환.@google/genai) — 식단표 이미지/PDF 인식jose — 관리자 세션 쿠키 서명(JWT)supabase/schema.sql 파일 내용을 그대로 실행합니다.
menus 테이블 생성, RLS 활성화, "누구나 조회 가능" 정책까지 한 번에 설정됩니다.service_role 키로 RLS를 우회해서 저장하기 때문에, anon 키로는 절대 데이터를 수정할 수 없습니다.Project URL → NEXT_PUBLIC_SUPABASE_URLanon public 키 → NEXT_PUBLIC_SUPABASE_ANON_KEYservice_role 키 → SUPABASE_SERVICE_ROLE_KEY (절대 클라이언트에 노출하지 마세요)Google AI Studio 에서 API 키를 발급받아 GEMINI_API_KEY로 설정합니다.
.env.example을 .env.local로 복사한 뒤 값을 채웁니다.
cp .env.example .env.local
| 변수 | 설명 |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase 프로젝트 URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase anon(public) 키 — 공개 조회용 |
SUPABASE_SERVICE_ROLE_KEY | Supabase service role 키 — 서버에서만 사용, 절대 노출 금지 |
GEMINI_API_KEY | Gemini API 키 |
GEMINI_MODEL | (선택) 사용할 모델, 기본값 gemini-3.5-flash-lite |
ADMIN_PIN | /admin 업로드 페이지 접근용 PIN |
ADMIN_SESSION_SECRET | 관리자 세션 쿠키 서명용 무작위 문자열 (openssl rand -hex 32로 생성 권장) |
npm install
npm run dev
https://your-app.vercel.app)이 곧 조회용 공유 링크입니다./admin에서 PIN으로 로그인합니다./(홈)에서 누구나 로그인 없이 일간/주간/월간 뷰로 식단을 확인할 수 있습니다. 이 URL을 학부모들에게 공유하면 됩니다.supabase/schema.sql — DB 스키마 및 RLS 정책src/lib/gemini.ts — Gemini API로 식단표 인식하는 로직src/lib/auth.ts, src/proxy.ts — 관리자 PIN 인증 및 세션 보호src/app/api/admin/upload/route.ts — 업로드 → Gemini 인식 → Supabase 저장 APIsrc/components/calendar/ — 일간/주간/월간 캘린더 UIpublic/manifest.json, public/sw.js — PWA 설정