Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Jogo para aprender a Bíblia: quizzes com tempo, álbum de figurinhas dos personagens, loja de bônus e ranking. Funciona como app instalável (PWA), inclusive offline. Front e back ficam no mesmo repositório e são publicados juntos em um único projeto na Vercel, no mesmo formato do projeto Louvor. Na Vercel, /api/* vai para a função serverless e todo o resto é o app estático (frontend/dist), então front e API ficam no mesmo domínio (sem CORS). Requisitos: Node 20+ e Docker (para o Postgres).檢視完整 README ↗
Jogo para aprender a Bíblia: quizzes com tempo, álbum de figurinhas dos personagens, loja de bônus e ranking. Funciona como app instalável (PWA), inclusive offline.
Front e back ficam no mesmo repositório e são publicados juntos em um único projeto na Vercel, no mesmo formato do projeto Louvor.
| Parte | Tecnologia |
|---|---|
frontend/ | React 19 + Vite + Tailwind 4, PWA com service worker próprio (Workbox) |
backend/ | Node + Express + Prisma (PostgreSQL), autenticação JWT |
api/index.ts | Função serverless da Vercel que roda o Express do backend |
| Banco | PostgreSQL (Neon em produção, Docker no desenvolvimento) |
| Imagens | Vercel Blob em produção; no desenvolvimento ficam no próprio banco |
Na Vercel, /api/* vai para a função serverless e todo o resto é o app estático
(frontend/dist), então front e API ficam no mesmo domínio (sem CORS).
Requisitos: Node 20+ e Docker (para o Postgres).
npm install # instala tudo (workspaces backend e frontend)
cp backend/.env.example backend/.env
npm run db:up # sobe o Postgres do docker-compose
npm run prisma:migrate # cria as tabelas
npm run seed # regras, recompensas, loja e dados de demonstração
npm run dev # API em :3333 e app em http://localhost:5173
Contas de demonstração (criadas com SEED_DEMO_DATA="true"): [email protected] e
[email protected], senha 123456.
Outros comandos:
npm run create-user — cria/atualiza uma conta pelo terminal (ex.: um admin).npm test — testes do backend. Os de integração da API só rodam com um banco
descartável: TEST_DATABASE_URL="postgresql://.../colecao_biblica_test" npm test.npm run build — compila backend e frontend.npm run icons -w frontend — regenera os ícones do PWA a partir de frontend/src/assets/logo.png.frontend nem backend).vercel.json.| Variável | Obrigatória | Valor |
|---|---|---|
JWT_SECRET | sim | Texto aleatório com 32+ caracteres: openssl rand -base64 48 |
ADMIN_EMAIL | recomendado | Seu e-mail; o deploy cria esse admin se ainda não existir |
ADMIN_PASSWORD | recomendado | Senha do admin (mínimo 8 caracteres) |
ADMIN_NAME | não | Nome exibido do admin (padrão: Administrador) |
BLOB_READ_WRITE_TOKEN | recomendado | Token do Blob store (passo 3). Se o store foi ligado pelo botão Connect, a Vercel pode criar BLOB_STORE_ID no lugar: também funciona |
BLOB_ACCESS | não | public ou private para forçar o modo do store (sem ela o app descobre sozinho) |
APP_TIMEZONE | não | Fuso do limite diário de prêmios (padrão America/Sao_Paulo) |
SEED_DEMO_DATA | não | Não cadastre em produção (só true cria as contas de teste) |
DATABASE_URL — conexão com pooler (usada pelo app);DATABASE_URL_UNPOOLED — conexão direta (usada só pelas migrações).
Ela cria outras (PGHOST, POSTGRES_URL...) que o app ignora.Storage → Create Database → Blob (store público ou privado, os dois funcionam). Clique em
Connect para a Vercel cadastrar as variáveis, ou copie o BLOB_READ_WRITE_TOKEN (começa com
vercel_blob_rw_) e salve como variável do projeto. Depois, Redeploy.
Como o upload funciona: o painel reduz a imagem no navegador (WebP de até 1200–1600 px) e envia para
POST /api/uploads; o servidor confere o formato pelos bytes e grava no Blob. Em store público a URL
do Blob é salva direto; em store privado a imagem é servida por /api/uploads/file/.... Sem Blob, a
imagem (já reduzida) fica no banco. A Visão geral do painel mostra qual modo está ativo.
npm run vercel-build:
prisma migrate deploy — aplica migrações novas no Neon (usa DATABASE_URL_UNPOOLED);prisma generate;npm run seed — garante configurações, recompensas, itens da loja e o admin de
ADMIN_EMAIL (não duplica nada nem desfaz ajustes feitos no painel);frontend/dist.Depois do primeiro deploy, entre com o ADMIN_EMAIL/ADMIN_PASSWORD e cadastre
personagens e perguntas pelo painel.
CLAUDE.md: regras de interface (paginação em toda lista, componentes do app no lugar dos do
navegador, ícone de carregamento) e de backend.docs/levantamento.md: auditoria do admin e da lógica do jogo, economia e próximos passos.api/index.ts função serverless (chama createApp do backend)
backend/
prisma/ schema e migrações
src/app.ts monta o Express com todas as rotas em /api
src/routes/ auth, users, characters, questions, rewards, shop, settings,
quiz, collection, comments, ranking, uploads, daily, achievements, admin
src/services/ regras do jogo, quiz, recompensas, conquistas, uploads, configurações, seed
src/scripts/ seed e create-user
frontend/
src/pages/ início (login), painel e detalhe da figurinha
src/components/ telas do jogador (user/), do admin (admin/), do jogo (game/) e kit de UI (ui/)
src/sw.ts service worker (cache offline e atualização)
vite.config.ts build, manifest do PWA e proxy /api no desenvolvimento
vercel.json build, rotas e cabeçalhos na Vercel