Low-code Front-end Design & Development Platform
Front-end development platform, with a visual builder and headless content modelling capabilities. Static website creation, and UI development tools.
좋은 글귀를 사진 위에 올려 SNS용 이미지 카드로 저장하세요.
Translation pending
DesignJavaScript · CSSGitHub @ysjz1230-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
vibe coding experiment
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
글귀를 Unsplash 사진 위에 올려 SNS용 PNG 카드(1:1, 4:5, 9:16)로 저장하는 정적 웹앱입니다. HTML + CSS + 바닐라 JS(빌드 도구 없음)와 Vercel /api 서버리스 함수로 만들었습니다. 자세한 설계는 quote-card-generator-spec.md를 보세요.Read the full README ↗
글귀를 Unsplash 사진 위에 올려 SNS용 PNG 카드(1:1, 4:5, 9:16)로 저장하는 정적 웹앱입니다.
HTML + CSS + 바닐라 JS(빌드 도구 없음)와 Vercel /api 서버리스 함수로 만들었습니다.
자세한 설계는 quote-card-generator-spec.md를 보세요.
localStorage에 저장하고 새로고침 후 복원, ?text=...&author=...로 글귀 채우기Unsplash Developers에서 앱을 등록하고 Access Key를 발급받습니다.
.env.example을 .env.local로 복사하고 UNSPLASH_ACCESS_KEY를 채웁니다. (커밋 금지)
의존성 설치:
npm install
아래 중 하나로 실행합니다.
# A. Vercel CLI (배포 환경과 가장 비슷함)
npm i -g vercel
vercel dev
# B. Vercel CLI 없이 로컬 서버로 실행 (기본 포트 3333, PORT 환경변수로 변경)
npm run dev:local
브라우저에서 http://localhost:3333(B 기준)을 엽니다.
/api/health가 {"status":"ok","unsplashKeyConfigured":true}를 돌려주면 키가 잘 들어간 것입니다.
index.html을 파일로 직접 열면/api함수가 없어 검색이 동작하지 않습니다. 반드시 위 방법으로 여세요.
/api/search(Zod 검증, content_filter=high, 응답 캐시, 한도 헤더 전달), /api/track-download(허용 주소 검사 후 호출), /api/healthrenderCard()를 사용하고, 직접 만든 줄바꿈과 폰트 로드 후 재렌더 적용js/quotes.js): 의미가 나뉘는 지점에 줄바꿈을 미리 넣음dev-server.mjs): Vercel CLI 설치·로그인 없이 같은 /api 함수를 3333 포트에서 실행utm_source 기본값도 sinabro)localStorage에 기억api/random.js(/photos/random, 캐시 없음)와 TODAY_QUOTESmapPhoto)를 쓰도록 api/_lib.js로 정리assets/logo.png(32×32)를 브라우저 탭 아이콘과 헤더의 "시나브로" 옆 로고로 사용. 로컬 서버가 assets/를 서빙하도록 허용 목록에 추가이번 작업에서 실제 동작 중 발견해 고친 버그는 없습니다. 다음은 확인한 내용과 남은 확인 항목입니다.
downloadLocation 조작 주소 4종이 모두 400이고 Unsplash 호출이 나가지 않음 (SSRF 방어)ixid를 유지하는 배경 URL 조작, 위치 제한을 단독 시험/api/search 검색 성공, 화면에서 배경·글귀·글꼴·크레딧 표시 확인/api/random): 실제 키로 사진이 반환되고 호출마다 다른 사진이 나오며, 잘못된 입력은 400으로 거절됨links.download_location이 실제로 포함되는 것을 확인했습니다(https://api.unsplash.com/photos/<id>/download?...). 값이 비어 있으면 추적 호출을 건너뜁니다.api/ search · random · track-download · health (Access Key는 여기서만 사용)
js/ app · state · api-client · renderer · fonts · export · quotes
assets/ 로고·파비콘 (logo.png)
docs/ README 스크린샷
dev-server.mjs Vercel CLI 없이 쓰는 로컬 서버
index.html, styles.css
content_filter=high로 고정하지만, 부적절한 사진을 완전히 막지는 못합니다.