飯魚 FanYu | 個人網站飯魚 FanYu | 個人網站
啦八機 LaBaG

啦八機 LaBaG

一款網頁拉霸機遊戲。

TypeScriptJavaScriptReactNext.jsExpress.jsNode.jsFrontendBackendFull StackSQLSupabaseRESTful APIGit / GitHubVercel
LicenseStarsForksIssuesLast commitCreated atRepo sizeCommit Activity/yLanguages/top

關於

語言

  • TypeScript89.9%
  • CSS9.8%
  • JavaScript0.3%

🎰 啦八機 LaBaG Web

只需動動手指,就能在無聊時候打發時間的線上拉霸小遊戲

Live Demo


Overview

啦八機 LaBaG Web 是經典拉霸機遊戲「啦八機」的 Web 版前端,使用 Next.js App Router 建構。玩家可透過 Google 或 GitHub 登入,進行轉動、累積金幣,並在排行榜上與其他玩家競爭。

本專案解決的是:將原本 MIT App Inventor 製作的行動端小遊戲,以現代 Web 技術重構為可跨裝置存取、支援 PWA 安裝、具備社群分享與排行榜功能的完整 Web 應用。

適合對象:

  • 想快速體驗輕量休閒小遊戲的一般使用者
  • 對 Next.js App Router、OAuth 登入、外部 API 串接有興趣的前端開發者
  • 需要參考 PWA、主題切換、遊戲 UI 實作的開源貢獻者

Features

  • 🎮 拉霸遊戲核心 — 三軸轉動、下注選擇、逐格揭示動畫,整合 labag 遊戲邏輯套件
  • 🔐 OAuth 登入 — 支援 Google、GitHub 第三方登入,含 Access / Refresh Token 自動刷新
  • 🏆 即時排行榜 — 依「總金幣數」與「轉動次數」分類排名,含頒獎台與完整榜單
  • 🔗 分享獎勵機制 — 登入用戶可產生分享連結,連結被點擊後可獲得金幣獎勵
  • 🎨 多主題切換 — 內建 Normal、SuperHHH、GreenWei、PiKaChu 等視覺主題
  • 🔊 音效與音樂設定 — 可獨立開關背景音樂與遊戲音效,設定持久化至 localStorage
  • 📱 PWA 支援 — 提供 Web App Manifest,可安裝至主畫面離線快捷啟動
  • 📖 遊戲說明頁 — 含開發歷程、符號賠率表、技術架構等 Markdown 內容

Tech Stack

類別技術
前端框架Next.js 16(App Router)
UI 函式庫React 19
語言TypeScript 5
CSS / UITailwind CSS 4Ant Design Icons
共用元件fanyucomponents
API / 資料外部 REST API(Supabase 後端),透過 fetch 封裝
SEONext.js Metadata API、sitemap.tsrobots.ts
部署Vercel

Project Structure

text

重要目錄說明

目錄用途
src/app/Next.js App Router 頁面與路由,每個資料夾對應一個 URL 路徑
src/components/可複用的 React UI 元件,依功能模組分子目錄
src/contexts/全域狀態管理(使用者登入、遊戲設定、Modal 控制)
src/libs/站點 metadata、路由定義、後端常數等靜態設定
src/utils/backend.tsx後端 REST API 呼叫封裝(遊戲、使用者、排行榜、分享)
src/middleware.ts攔截 /share/:id 路徑,記錄點擊後重導向至首頁

Getting Started

前置需求

  • Node.js 18.17 或以上
  • npm(或 yarn / pnpm / bun)

安裝與啟動

bash

開啟 http://localhost:3000 即可預覽。

其他指令

bash

Environment Variables

在專案根目錄建立 .env.local 檔案,並填入以下變數:

text
變數名稱必填說明
NEXT_PUBLIC_BACKEND_URL後端 REST API 的根 URL,前端所有 API 請求皆以此為 base

注意:NEXT_PUBLIC_ 為前綴的變數會暴露至瀏覽器端,請勿存放機密金鑰。


Deployment

本專案預設部署於 Vercel,正式環境網址:https://labag.vercel.app

Vercel 部署步驟

  1. 將此 repository 連結至 Vercel 專案
  2. 在 Vercel Dashboard → Settings → Environment Variables 中設定 NEXT_PUBLIC_BACKEND_URL
  3. 推送至 main 分支,Vercel 將自動觸發 build 與部署

其他平台

亦可部署至任何支援 Next.js 的平台(如 Netlify、Railway、自架 Node.js 伺服器),只需確保:

  • 執行 npm run build 後以 npm run start 啟動
  • 環境變數 NEXT_PUBLIC_BACKEND_URL 已正確設定

License

本專案以 MIT License 授權釋出。

討論區