尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Create event websites (weddings, birthdays, celebrations…) and share them with guests. Built with Next.js 16 (App Router), TypeScript, Tailwind 4, PostgreSQL, Prisma 7, Auth.js v5, Zod.
Status: website, auth (email + Google), dashboard, event wizard/editing, templates, public pages and live streaming through LiveKit Cloud are done. No recording, replay, payments or storage yet.
npm install
createdb eventlive
cp .env.example .env.local # fill DATABASE_URL and AUTH_SECRET (openssl rand -base64 32)
npx prisma migrate dev
npm run dev
No Docker needed. Never commit .env.local.
Create a project at https://cloud.livekit.io and set LIVEKIT_URL (wss://…), LIVEKIT_API_KEY, LIVEKIT_API_SECRET in .env.local.
/event/[slug]/live → START LIVE. Guests watch on /event/[slug] (no account).POST /api/livekit/token decides the role on the server: broadcaster needs a logged-in owner of the event
(else 401/403); everyone else only ever gets a subscribe-only token. Viewer tokens are issued only while LIVE.event_<eventId>. Viewer count comes from LiveKit participants (identities starting guest-).localhost works on the same computer, but a phone using your LAN IP over
plain http cannot access the camera. Use npx next dev --experimental-https or a tunnel such as Cloudflare Tunnel or ngrok,
and set AUTH_URL to that https address.Owners upload on the event edit page. Files go directly from the browser to R2 (presigned URLs); the server checks login, ownership, file type and size first, then verifies the object before saving it.
[{
"AllowedOrigins": ["http://localhost:3001", "https://your-app.vercel.app"],
"AllowedMethods": ["PUT", "GET", "HEAD"],
"AllowedHeaders": ["*"],
"MaxAgeSeconds": 3600
}]
.env.local (and Vercel env vars): R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET, R2_PUBLIC_URL (no trailing slash).Limits: photos 10 MB (max 30), card 10 MB (1), videos 500 MB (max 3, MP4/WebM/MOV).
http://localhost:3000/api/auth/callback/google (use your real port, e.g. 3001, and add your production URL later)..env.local: AUTH_GOOGLE_ID=… and AUTH_GOOGLE_SECRET=…, then restart npm run dev.The "Continue with Google" button appears only when AUTH_GOOGLE_ID is set. Only Google-verified emails are accepted, and a Google sign-in with an email that already exists signs into that same account.
src/app — routes: /, /login, /register, /dashboard, /dashboard/events/[id], /create-event, /event/[slug], /event/[slug]/livesrc/lib/templates.ts — template themes; one <EventSite> renders all of themsrc/lib/event-types.ts — one flexible Event model, per-type labels (Wedding = bride/groom)src/lib/actions — server actions (auth, events) with Zod validation and ownership checksprisma/schema.prisma — User, Event, EventSchedule, LiveStreamnpm run typecheck && npm run lint && npm run build