Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Real-time pitch competition timer and queue system built with Next.js, Firebase Realtime Database, and Tailwind CSS.
1. Go to Firebase Console
2. Create a new project (or use existing)
3. Go to Build → Realtime Database → Create Database
• Start in test mode for MVP (or set rules to allow read/write)
4. Go to Project Settings → General → Your apps
5. Click Add app → Web → Register app
6. Copy the config object shown
Open .env.local and fill in your Firebase config values:Read the full README ↗Real-time pitch competition timer and queue system built with Next.js, Firebase Realtime Database, and Tailwind CSS.
| Route | Purpose |
|---|---|
/control | MC Control Panel — manage teams, control timer |
/pitch | Pitching Room Display — large countdown for projector |
/waiting | Waiting Room Display — queue + mirrored timer for waiting area |
cd pitch-timer
npm install
cp .env.local.example .env.local
Open .env.local and fill in your Firebase config values:
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_DATABASE_URL=https://YOUR_PROJECT-default-rtdb.firebaseio.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
⚠️ NEXT_PUBLIC_FIREBASE_DATABASE_URL is required — it's the Realtime Database URL,
not the Firestore URL. Format:https://YOUR_PROJECT-default-rtdb.firebaseio.com
In Firebase Console → Realtime Database → Rules, use:
{
"rules": {
".read": true,
".write": true
}
}
For production, restrict
.writeto authenticated users only.
npm run dev
Open:
NEXT_PUBLIC_FIREBASE_* variables in Vercel → Settings → Environment Variables/session/control drives the countdown — it runs a 1-second setInterval that decrements timeRemaining in Firebase when the timer is running/pitch and /waiting are read-only — they subscribe to Firebase via onValue() and reflect any change instantly, with no page refresh neededThe /pitch page plays audio beeps using the Web Audio API:
Important: Click anywhere on /pitch before the event starts to initialize the AudioContext (browser security requires a user gesture first).