WallpaperMachine
The wallpapers you love. A new home on your Mac.
Create a beautiful website for your wedding, birthday or celebration and share it with your guests.
LifestyleTypeScript · ShellGitHub @sraawan-saiOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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