
buildergame
A living 3D home for GitHub builders to showcase projects, share progress, and grow together.
Demo
About
Buildergame gives builders and their projects a place to belong. It transforms public GitHub repositories into a cozy, explorable 3D town, making a portfolio or hackathon community feel like a neighborhood people want to visit again. The idea begins with a simple problem: after demo day, promising projects are easily buried in repository lists. What if following their progress felt like returning to a familiar little town? Every repository has a permanent plot. Five building appearances grow from green land into a furnished garden home, while recorded snapshots let visitors travel through the town's history and see what has changed. Town owners choose the growth values that matter to their community: cumulative commits, stars, a weighted combination of commits/stars/forks, or their own score table. Builders keep the progress they have already earned. Individual developers can create a home for their public projects; hackathon organizers and communities can bring many builders together. Visitors explore flat streets, a valley or cloud neighborhoods, open wooden signs to meet creators, discover projects through the directory and minimap, and follow links to the work itself. Personal and community planning, GitHub data capture, snapshot playback, portable JSON backups, static deployment, and English/Chinese interfaces form the working demo. The broader vision is to turn discovery into lasting participation. We have implemented an optional Privy-powered support extension, starting with native test ETH on Ethereum Sepolia. A personal town can nominate its builder's receiving address; a community can configure a separate recipient for each participating project. In a wallet-enabled deployment, visitors can sign in by email or connect a wallet, review the recipient, network and amount, and explicitly confirm a transfer directly to the builder. The mailbox celebrates only a verified successful chain receipt. Concise notices, acknowledgment, repeat-send guards and pending-transaction recovery support this flow. The sample town demonstrates the playful coin animation; configured towns connect that interaction to builder support. Each creator decides whether to enable wallets for their community. The deployed town, live Privy login, insufficient-funds guard, a human-approved Sepolia transfer with a matching successful receipt, and cancellation before submission are verified. Interrupted session/reload recovery remains unverified and is deferred to the next version. Wallet/ENS identity, community membership and town-management permissions remain future directions. On-chain milestone records could also preserve the relationship between an event, its projects and their continuing progress. Buildergame starts by making creation visible and inviting. It aims to grow into a place where attention, encouragement and community support help builders keep building long after a hackathon ends.
How it's made
Buildergame uses TypeScript, Three.js 0.180.0, Vite 7.3.6 and Node.js. HTML, CSS and original SVG components create a shared interface of wooden controls, kraft-paper planning sheets, cream project cards and translucent teal panels. The five accepted building appearances were authored with reproducible Blender Python scripts and exported as GLB files. Each has a full-detail and a distant model. The renderer combines instanced distant assets with a bounded number of detailed nearby buildings. Deterministic layout code generates terrain, roads, water and cloud districts from the town's initial roster. All ten building files are protected by SHA-256 checks. Six scoring labels remain for schema compatibility, with the last two sharing the final visual appearance. Repository capture is separate from rendering. Shared GitHub REST transport gathers public repository and builder data, handles pagination, cancellation, timeouts, rate limits and unavailable observations, then stores deliberate snapshots in validated JSON. Personal-access-token connection runs directly in the browser; the token stays in page memory and is excluded from URLs, backups and persistent storage. An optional Node service supports OAuth and owner-checked publication. Town snapshot JSON committed to `public/data/towns/` produces physical `/towns/<name-and-timestamp>/` pages during the build, supporting static hosting such as Vercel. This keeps project history portable and lets organizers manage it through their own repository. Complete backups can also be imported locally on the deployed site, letting us test recipient-configured towns without publishing test-wallet data in GitHub. Browser storage remembers exploration progress, and an all-land founding snapshot makes the first measured version replayable. Native Web Audio plays six locally hosted Kenney CC0 interface effects. A single lazy HTMLAudioElement loops a supplied Suno track quietly on the planner only and shares the mute control. The submission recording excludes background music. The mailbox prototype combines a Three.js raycast target, contextual coin cursor, animated delivery and a demo receipt to make builder support tangible within the town. The optional support layer uses Privy's React SDK in an on-demand React island, preserving the main TypeScript/Three.js application. Privy's standard Email/Wallet login offers embedded or connected wallets, making wallet onboarding accessible to builders and visitors. The implemented transfer path sends native Sepolia test ETH directly to the configured builder recipient, with no custody contract or platform transaction fee. Personal towns use one recipient; community towns map recipients to repositories. Creator/login notices and a fresh per-transfer acknowledgment precede explicit approval. Recipient addresses are shortened by default with full review and copy available. Critical signing and pending states lock unrelated controls; Web Locks and public localStorage checkpoints coordinate participating tabs on the same origin. Recovery checks the original transaction instead of automatically resending. Receipt sender, destination, value and success checks gate the existing coin animation. Controller and real-React/mock-SDK browser fixtures have passed. Hosted verification covered real login, the low-balance guard, funded review and a human-approved 0.001 test-ETH transfer. The app and Sepolia Etherscan agreed on success, sender, recipient and value. A separate Privy final-preview cancellation submitted no transfer and released the interaction lock; interrupted session/reload recovery remains unverified and is deferred to the next version. ENS identity and community permissions remain on the roadmap. Codex assisted with specifications, research, implementation, Blender authoring scripts, tests and documentation. The human supplied the concept, growth policy, visual references, acceptance of the five building stages and successive interaction revisions.