How nabilislam722/hairgames works
HairGames is a browser-based collection of games with wallet connectivity, on-chain score submissions, points, leaderboards, profiles, and social-account linking. Players enter through the routed client, play a game, and can submit results for server signing or transaction verification; points and rankings are exposed through API routes. Game-specific engines and renderers implement gameplay, while the backend coordinates API handling, persistence, and chain access. The README only documents VPS/database access, so product capabilities are drawn from the source tree and sampled code; unsampled page-to-API wiring is not assumed.
Main entry points: pages Game pages · index.js API routes · App.jsx App router · Authcontroller.js Social auth
Components 24
Game client
- App router
client/src/App.jsx - Wallet provider
client/src/main.jsx - Game pages
client/src/pages - Profile page
client/src/pages/profile.jsx - Rank views
client/src/components/Leaderboard.jsx
Gameplay engines
- Space shooter
client/src/game/engine.ts - Fruit Ninja
client/src/game/fruit_ninja/engine.ts - Fishing game
client/src/game/GameEngine.js - Patience game
client/src/proofOfPatience/page.tsx
Backend API
- Game API handlers
backend/controllers/gameController.js - Points handlers
backend/controllers/pointsController.js - Ranking handlers
backend/controllers/statsController.js - Social auth
backend/controllers/Authcontroller.js - API routes
backend/routes/index.js - API server
backend/server.js - NFT watcher
backend/services/nftWatcher.js
Persistence
- User profiles
backend/models/UserProfile.js - Event profiles
backend/models/EventProfile.js - OAuth state
backend/models/OAuthState.js
External services
- MongoDB
backend/config/db.js - Chain provider
backend/config/provider.js - Game contracts
- Social platforms
Other components
- Player
Connections 26
- Player → App router: opens
- App router → Game pages: routes to
- App router → Profile page: routes to
- App router → Rank views: routes to
- Player → Wallet provider: connects wallet
- Game pages → Space shooter: runs gameplay
- Game pages → Fruit Ninja: runs gameplay
- Game pages → Fishing game: runs gameplay
- Game pages → Patience game: runs gameplay
- API server → MongoDB: connects
- API server → API routes: mounts API
- API server → NFT watcher: starts
- API routes → Game API handlers: dispatches
- API routes → Points handlers: dispatches
- API routes → Ranking handlers: dispatches
- API routes → Social auth: dispatches
- Game API handlers → Chain provider: reads nonce; signs
- Chain provider → Game contracts: queries chain
- Points handlers → Chain provider: verifies transactions
- Points handlers → User profiles: reads; updates
- Ranking handlers → User profiles: reads rankings
- Ranking handlers → Event profiles: reads events
- Social auth → User profiles: reads; updates
- Social auth → OAuth state: stores; consumes state
- Social auth → Social platforms: OAuth requests
- NFT watcher → Chain provider: watches chain