CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
오염·재질·세제·장소로 청소 방법을 검색합니다. 레시피·사례·견적 문의까지.
Translation pending
LifestyleTypeScript · JavaScriptGitHub @apeleba87-starOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Next.js + Supabase + Tailwind CSS 기반 웹앱 프로젝트입니다. • Node.js 18.18 이상 (LTS 권장) • nodejs.org에서 설치 1. Node.js 설치 nodejs.org에서 LTS 버전 다운로드 후 설치합니다. 3. Supabase 환경 변수 설정 .env.local 파일에 Supabase 프로젝트 값을 넣습니다. 값은 Supabase 대시보드 → 프로젝트 → Settings → API에서 확인할 수 있습니다. (연동 전까지는 빈 값으로 두어도 앱 실행은 가능합니다.)Read the full README ↗
Next.js + Supabase + Tailwind CSS 기반 웹앱 프로젝트입니다.
Node.js 설치
nodejs.org에서 LTS 버전 다운로드 후 설치합니다.
의존성 설치
npm install
Supabase 환경 변수 설정
.env.local 파일에 Supabase 프로젝트 값을 넣습니다.
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
값은 Supabase 대시보드 → 프로젝트 → Settings → API에서 확인할 수 있습니다.
(연동 전까지는 빈 값으로 두어도 앱 실행은 가능합니다.)
개발 서버 실행
npm run dev
DB 스키마 적용 (최초 1회)
Supabase 대시보드 → SQL Editor에서 아래 순서로 실행합니다.
supabase/migrations/001_initial_schema.sqlsupabase/migrations/002_g2b_tenders.sql (나라장터 입찰·계약·키워드 테이블)supabase/migrations/003_clean_related.sql (청소 관련 필터 컬럼)supabase/migrations/004_tender_keywords_type.sql (키워드 구분: 포함/제외)supabase/migrations/005_tender_categories.sql (업종: 청소/소독·방역, tenders.categories)관리자 로그인 설정
supabase/set_admin.sql 내용 실행 (이메일을 본인 주소로 수정 가능)브라우저에서 http://localhost:3001 으로 접속합니다.
.env.local에 DATA_GO_KR_SERVICE_KEY=발급받은_인증키 추가POST /api/cron/fetch-g2b 호출 (헤더 x-cron-secret에 CRON_SECRET 값 전달).tender_keywords 테이블에 있으며, 관리자 페이지에서 추후 수정 가능하도록 확장할 수 있습니다.tenders.categories 배열에 매칭된 업종(cleaning, disinfection) 저장. 사용자 검색: 청소만 / 소독·방역만 / 청소+소독·방역 / 전체 선택 가능.POST /api/cron/backfill-clean-score 호출.| 명령어 | 설명 |
|---|---|
npm run dev | 개발 서버 실행 (Hot Reload) |
npm run build | 프로덕션 빌드 |
npm run start | 빌드된 앱 실행 |
npm run lint | ESLint 실행 |
├── app/ # Next.js App Router
│ ├── admin/ # 관리자 (글, 뉴스레터 큐, UGC 검수, 신고, 광고)
│ ├── api/ # API (뉴스레터 발송, cron, 인증)
│ ├── archive/ # 뉴스레터 아카이브
│ ├── categories/ # 카테고리·글 목록
│ ├── posts/ # 글 상세
│ ├── ugc/ # 현장·후기 목록·쓰기
│ ├── login, signup/
├── components/
├── lib/ # Supabase 클라이언트, 타입
├── supabase/migrations/ # DB 스키마 (Supabase SQL Editor에서 실행)
└── .env.local
newslett).NEXT_PUBLIC_SUPABASE_URL에 넣을 값NEXT_PUBLIC_SUPABASE_ANON_KEY에 넣을 값프로젝트 루트의 .env.local 파일을 열고 다음처럼 입력(복사한 값으로 교체):
NEXT_PUBLIC_SUPABASE_URL=https://xxxxxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
xxxxxxxx 부분은 본인 프로젝트 URL에 맞게.클라이언트 컴포넌트 (브라우저):
"use client";
import { createClient } from "@/lib/supabase";
const supabase = createClient();
// 예: const { data } = await supabase.from("테이블명").select();
서버 컴포넌트 / API 라우트:
import { createClient } from "@/lib/supabase-server";
const supabase = createClient();
// 예: const { data } = await supabase.from("테이블명").select();
@supabase/ssr 기반으로 쿠키 연동을 추가하면 됩니다.