尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
A Higgsfield style AI video and image creation UI, built as a Next.js app for
the 8x "Clone Higgsfield" assignment. Browse an explore wall, open a clip, remix
it into a prompt, generate a video or a set of images, and keep everything in a
library that survives a refresh.
No sign-in. Nothing to configure. It works in an incognito window.檢視完整 README ↗Live: https://video-arena.vercel.app
A Higgsfield style AI video and image creation UI, built as a Next.js app for the 8x "Clone Higgsfield" assignment. Browse an explore wall, open a clip, remix it into a prompt, generate a video or a set of images, and keep everything in a library that survives a refresh.
No sign-in. Nothing to configure. It works in an incognito window.
Real: the whole product surface, and everything behind it up to the model call. The form state and the capability rules (Veo only does 8s, Hailuo takes no reference images, Seedream caps at 2 images, and the UI snaps your settings and tells you what it moved). Submission through an API route with two layers of validation. A job queue capped at four in flight, polled from one interval. Progress, cancel, failure, retry. The library in localStorage, with quota handling. Deep links, the media dialog, keyboard handling, reduced motion, responsive layouts.
Simulated: the generation itself. No model is ever called. A request is scored against a library of 41 free Pexels clips and images and comes back with whichever one best matches your prompt, after a realistic delay with an eased progress curve. Every generated result is labelled Simulated in the UI.
Why. Three reasons, in order of weight:
The fake provider sits behind a GenerationProvider interface
(src/lib/generation/types.ts) with two methods, submit and status. Nothing
that calls it knows it's fake. Swapping in a real backend means writing one more
implementation of that interface.
Job ids carry their own state: base64url(payload).HMAC, holding the kind, the
chosen sample ids, the created-at and the ETA. There is no server-side store, so
a job survives a cold function instance and a page refresh by the same
mechanism. That's why "refresh mid-generation" needed no extra code.
Everything left out is left out whole. There are no dead buttons.
GenerationProvider
interface. No caller changes, one new file, plus a queue that survives longer
than a function invocation.bun install
bun dev
No environment variables are needed. JOB_SECRET is optional and falls back to
a development value; set it in production if you like. PEXELS_API_KEY is only
for the local sample-fetching script and is not needed to run the app.
| Script | What it does |
|---|---|
bun dev | dev server |
bun run build | production build |
bun run start | serve the production build |
bun run lint | eslint |
bun run typecheck | tsc --noEmit |
bun run samples:fetch | pull candidate clips from the Pexels API |
bun run samples:prepare | transcode and crop the raw downloads with ffmpeg |
bun run samples:check | verify the sample manifest against what's on disk |
The three samples:* scripts are only needed to rebuild the sample library.
What they produce is committed, so a fresh clone runs without them.
All 41 samples are free stock from Pexels, used under the Pexels License.
Spec 02 also planned to source from Mixkit; that was dropped to save time and
nothing in the build uses it. Every file is listed with its author, a link to
its page and its licence at /credits.
There's no download button anywhere in the app, deliberately: it's someone else's stock under someone else's licence.
spec/ holds the build specs, worked in order:
00-project-setup.md | Next.js, Tailwind, tooling |
01-design-system.md | tokens, primitives, /dev/ui gallery |
02-sample-library.md | fetching, cropping and describing the stock samples |
03-app-shell.md | nav, footer, routes, metadata |
04-explore.md | hero, tool tiles, the masonry wall, the media dialog |
05-create-video.md | the video page, the fake provider, jobs, the store |
06-create-image.md | the image page, shared with 05 rather than forked |
07-library-polish-deploy.md | the library, the polish pass, deploy |
spec/notes/ has one file per spec, written after finishing it: what got built,
the decisions and why, what was verified in a browser, and what was knowingly
left undone and carried forward. The notes are the honest record - where
something in a spec turned out to be wrong, the note says so rather than the
spec being quietly edited.
Specs in /spec were drafted with Claude from my notes and edited by me, build
sessions are in .agent-logs.
.agent-logs/ is the prompt and response capture from those sessions, committed
on purpose so the process is reviewable alongside the result.