Akki-jaiswal / Akki-jaiswal/pong-game
add optional Node.js + Express + MongoDB backend (leaderboard, saved preferences, future multip
- 主要语言
- JavaScript
- 星标
- 22
- 派生
- 116
- PR 合并指标
- 30 天内没有已合并 PR
描述
I’d like to propose an optional backend for the Pong Game to enable persistent features and future expansions while keeping the current front‑end fully functional offline. The backend would provide: 1) a public leaderboard per difficulty, 2) saved player preferences (name, theme, preferred difficulty), and 3) a foundation for future multiplayer via WebSockets.
Motivation
Persistence: Current scores and preferences reset on refresh; a backend would store them across sessions.
Community features: A global leaderboard encourages engagement and friendly competition.
Extensibility: A small, well-structured API prepares the project for future features like matchmaking or co-op/versus modes.
Learning value: Great opportunity for contributors to practice full‑stack patterns (routing, validation, storage, deployment).
Proposed Scope (Phase 1 – minimal viable backend)
Stack: Node.js + Express (REST), MongoDB (MongoDB Atlas free tier or docker), with lightweight validation and rate limiting.
Endpoints:
POST /api/scores body: { name, score, difficulty } → stores a score
GET /api/leaderboard?difficulty=medium&limit=10 → returns top scores
POST /api/users body: { name, preferences } → create/update user
GET /api/users/:id → returns user and preferences
Data models:
users: { _id, name, preferences: { theme, difficulty }, createdAt }
scores: { _id, userId (nullable for guests), score, difficulty, createdAt, clientHash }
Front‑end integration:
On Game Over: POST score if online; fail gracefully if offline.
On load: fetch leaderboard and apply saved preferences when available.
Keep all current gameplay working without the backend (progressive enhancement).
Security and Integrity (basic, Phase 1)
Input validation (Joi/Zod).
Simple anti‑tamper heuristics (timestamp + nonce + server HMAC; basic rate limiting).
Score sanity checks (bounds and minimum round duration).
Roadmap (incremental)
Phase 1: Leaderboard + preferences, CI config, .env handling, docs.
Phase 2: Lightweight auth (guest IDs → JWT/OAuth), personal history.
Phase 3: Realtime multiplayer with Socket.IO or native WebSockets (rooms, matchmaking).
Phase 4: Moderation tools, improved anti‑cheat, analytics dashboards.
Backward Compatibility
The game remains fully playable without the backend. API calls are optional and degrade gracefully when the server is unavailable.
Contributor Offer
I can open a PR for Phase 1 with:
Express app skeleton, Mongo models, routes, tests
OpenAPI/Swagger spec for the endpoints
Docker compose or setup docs for local dev
Front‑end integration (POST on game over, GET leaderboard on load)
Basic CORS config for local development
贡献指南
评估
这个 Issue 还没有评估数据。