尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Interactive Bible quiz app for youth meetings, Sunday schools, and family nights. "Guess the Bible hero from a selfie!" — Players scan a QR code to join and compete in real-time.
🌐 Live: youthconnect.church
# Install dependencies
npm install
# Copy environment file
cp .env.example .env.local
# Fill in the values (see "Environment Variables" below)
# Run development server
npm run dev
# For testing on phones in the same network:
npm run dev -- -H 0.0.0.0
Open:
Copy .env.example to .env.local and fill in the values:
PUSHER_APP_ID=your_app_id
PUSHER_SECRET=your_secret
NEXT_PUBLIC_PUSHER_KEY=your_key
NEXT_PUBLIC_PUSHER_CLUSTER=eu
DATABASE_URL=postgres://user:pass@host/dbname?sslmode=require
Generate with: openssl rand -base64 32
AUTH_SECRET=your_generated_secret
https://yourdomain.com/api/auth/callback/googleAUTH_GOOGLE_ID=your_client_id
AUTH_GOOGLE_SECRET=your_client_secret
https://yourdomain.com/api/auth/callback/yandexAUTH_YANDEX_ID=your_client_id
AUTH_YANDEX_SECRET=your_client_secret
STRIPE_SECRET_KEY=sk_test_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...
NEXT_PUBLIC_STRIPE_DONATE_LINK=https://buy.stripe.com/...
NEXT_PUBLIC_PAYPAL_DONATE_LINK=https://paypal.me/yourlink
NEXT_PUBLIC_BOOSTY_LINK=https://boosty.to/yourpage
NEXT_PUBLIC_CRYPTO_LINK=https://nowpayments.io/donation/...
# Show text quizzes (currently hidden for selfie-only mode)
NEXT_PUBLIC_ENABLE_TEXT_QUIZZES=false
After setting up DATABASE_URL, run migrations:
# Generate migration from schema
npx drizzle-kit generate
# Apply migration
npx drizzle-kit migrate
src/
├── app/
│ ├── [locale]/ # i18n routes
│ │ ├── page.tsx # Landing page
│ │ ├── play/
│ │ │ ├── page.tsx # Player game page
│ │ │ └── host/ # Host screen
│ │ ├── auth/ # Sign in/error pages
│ │ ├── profile/ # User history
│ │ └── settings/ # User settings
│ ├── api/
│ │ ├── auth/ # Auth.js handlers
│ │ ├── join/ # Player join
│ │ ├── answer/ # Player answer
│ │ ├── host/ # Host events
│ │ └── donate/ # Stripe checkout
│ └── globals.css
├── auth/ # Auth.js config
├── db/ # Drizzle schema
├── data/
│ ├── characters.ts # Character manifest with levels
│ └── quizzes.json # Legacy fixed quizzes (kept for text mode)
├── i18n/ # Internationalization config
├── lib/
│ ├── quiz-generator.ts # Random quiz generation
│ ├── pusher-*.ts # Pusher client/server
│ └── types.ts # Shared types
└── components/
messages/ # i18n translation files
public/images/selfie/ # Character selfie images
scripts/
└── import-selfies.mjs # Image import script
/play/host, selects difficulty, shows QR codesrc/selfie/ as NN_CharacterName.pngsrc/data/characters.ts with character infonode scripts/import-selfies.mjsThis compresses images to public/images/selfie/ and updates the quiz data.
npm run build
npm start
Currently supported languages:
Add translations in messages/{locale}.json.
MIT © YouthConnect