iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Branded client photo and video galleries backed by Google Drive
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A branded, mobile-first client gallery for photos and video. You drop files into a Google Drive folder; the site picks them up automatically.README 전문 보기 ↗A branded, mobile-first client gallery for photos and video. You drop files into a Google Drive folder; the site picks them up automatically.
Full-screen cover, justified photo grid, dark/light mode
Lightbox with swipe, pinch-zoom, double-tap zoom, swipe-down to close, keyboard arrows
Videos stream from Drive with seeking (HTTP range requests), shown with a poster frame and duration
Clients heart favorites, add notes per photo or clip, and send their picks → rows land in a Google Sheet (+ optional email)
Per-gallery password, per-file download, and "Download all" as a .zip (everything / photos / films)
Files stay private in Drive — nothing needs to be shared publicly
Owner dashboard at /admin: sign in with Google, create galleries, drag in photos and films (they upload straight into your Drive), set passwords, pick the cover, copy the client invite
Every gallery link ends in a private code (e.g. /g/lakeshore-brand-film-3fa9c2), so clients can only reach their own gallery
It runs in demo mode with sample media until you add Google credentials, so you can try it first.
npm install
npm run dev # http://localhost:3000
CLIENTS/ ← created by the dashboard; nothing outside it is touched
├── Lakeshore CU — Brand Film/ → yoursite.com/g/lakeshore-cu-brand-film-3fa9c2
│ ├── gallery.json (optional settings)
│ ├── cover.jpg (optional hero image, hidden from grid)
│ ├── 01 Hero cut.mp4
│ ├── 02 Social 9x16.mp4
│ └── stills-001.jpg …
├── Fall Leadership Conference/
└── _Work in progress/ ← folders starting with _ stay hidden
drive.file permission, so it can only see and change the folders and files it created — never the rest of your Drive._ or . are skipped.cover.* file? The first photo is used.CACHE_SECONDS (default 60s).gallery.json (all fields optional){
"client": "Lakeshore Credit Union",
"date": "2026-09-18",
"message": "Final cuts and stills from the shoot. Heart anything you'd like to use.",
"password": "lakeshore26",
"downloads": true,
"cover": "stills-014.jpg"
}
Changing the password signs out anyone who unlocked the old one.
.json file downloads. Keep it private.[email protected]).https://galleries.sowcreativestudios.com/api/auth/callback (and the old https://client-galleries.vercel.app/api/auth/callback) (and http://localhost:3000/api/auth/callback for local testing).The CLIENTS folder is created and shared with the service account automatically the first time you make a gallery in the dashboard.
Time | Gallery | Name | Email | File | Note | Drive link | Messagedocs.google.com/spreadsheets/d/THIS_PART/edit.Copy .env.example to .env.local and fill in:
| Variable | Value |
|---|---|
GOOGLE_SERVICE_ACCOUNT_JSON | Entire contents of the JSON key (or base64 of it) |
GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET | From step 2 |
OWNER_EMAILS | Your Google account, e.g. [email protected] |
SELECTIONS_SHEET_ID | Sheet ID from step 3 |
GALLERY_SECRET | Any long random string |
STUDIO_NAME, STUDIO_TAGLINE, STUDIO_URL, STUDIO_EMAIL | Your branding |
STRIPE_SECRET_KEY | Optional. Restricted Stripe key (Checkout Sessions: Read) for pay-to-unlock |
SITE_URL | The main address, e.g. https://galleries.sowcreativestudios.com (used for sign-in, links, emails, previews) |
SHOW_INDEX | true to list unlocked galleries on the home page (off by default) |
RESEND_API_KEY, NOTIFY_EMAIL | Optional email alert via resend.com instead of Sheets notifications |
galleries.yourdomain.com).Hero — 16x9.mp4, Hero — 9x16.mp4, Hero — 1x1.mp4 and they appear as one film with a format switcher (all formats download from one menu). Drop in Hero.srt (or Hero.en.srt) and it becomes captions for that film.STRIPE_SECRET_KEY with Products: Write, Prices: Write, Payment Links: Write, Checkout Sessions: Read. In a gallery's Payment panel, enter an amount → the app creates the Stripe payment link, puts the gallery on hold and shows clients a “Pay $X” button. After Stripe confirms, the gallery unlocks on its own. From the panel you can copy the link, change the amount (the old link is turned off), cancel the request, or mark it paid if you got a check. The dashboard lists outstanding requests and recent payments.app/g/[slug]/page.tsx gallery page (lock screen or gallery)
app/api/media/[id] resized images and video posters from Drive
app/api/stream/[id] video streaming with range/seek support
app/api/download/[id] single-file download
app/api/zip/[slug] zip of the whole gallery
app/api/unlock password check → signed cookie
app/api/selections client picks → Google Sheet (+ email)
app/admin owner dashboard (gallery list + gallery manager)
app/api/auth/* Google sign-in for the owner
app/api/admin/* create/edit/delete galleries, start uploads, remove files
components/GalleryView.tsx hero, filters, grid, selection bar, send dialog
components/Lightbox.tsx viewer with gestures, notes, downloads
lib/galleries.ts reads folders/files from Drive (and demo data)
Markup is completely separate from delivery galleries. In the dashboard, open Markup → + New review. Each review project is a folder in CLIENTS/_REVIEWS with version subfolders (Version 1, Version 2…).
/review/<project> (or the Review tab on the website): notes pinned to a moment in a film, pins on photos, replies, resolve and Approve./g/…) are for delivery only. When a project is approved, create a delivery gallery and upload the finals there.vercel.json); optionally set CRON_SECRET in Vercel to lock the endpoint.?as=client to a gallery link) to check the password screen, watermarks and expiry.