Krowz
Real discounts at local restaurants, cafés and dessert spots. Show the QR at the counter, staff scan it, done.
Translation pending
A PulseChain native store: merch, tools and a token, made by degens who read the whitepaper twice and understood it zero times.
CommerceGitHub @144collective-bitOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A PulseChain native store: merch, tools and a token. This repo is the website, built with Astro: a living 3D city on the homepage, whose buildings lead into the comic-book Emporium page.
npm install
npm run dev # http://localhost:4321
npm run build # static site in dist/
npm test # the city's rules and data (tests/), in a second or so
npm test -- drive runs only the test files whose name contains "drive".
The "Build site" Action runs the tests before every build; if one fails, no
zip is made.
degenemporium.com is hosted on Hostinger as a static site.
main builds the site: on GitHub open
Actions -> Build site, pick the latest green run and download
degenemporium-site under Artifacts. (Or run npm run build locally
and use everything inside dist/.)index.html sits directly in public_html. Delete the zip afterwards.Multiplayer is paused: this build runs without the game server (solo play,
the builder as a play-money demo). See server/README.md to bring it back.
public/.htaccess ships with every build: it serves the site's 404 page,
compresses text files and caches the fingerprinted files in /_astro/ for a
year. It starts with a dot, so some file managers hide it.
| Path | What it is |
|---|---|
src/pages/index.astro | The homepage: Sector 7 |
src/pages/emporium.astro | The Emporium: the comic page |
src/pages/404.astro | Not-found page |
src/components/CityMap.astro | The city page (see Sector 7 below) |
src/scripts/city3d/ | The 3D city |
src/lib/city.ts | The 2D city map |
src/components/ComicPage.astro | The six comic windows (desktop page, mobile cards) |
src/components/Nav.astro | Header: logo, PulseChain badge, X and Telegram |
src/styles/global.css | All styles and the colour tokens |
src/data/site.ts | Site name, description, social and store links |
src/assets/ | Processed art the site imports |
brand/ | Original art as supplied, palette notes, how to regenerate art |
scripts/ | Art pipeline: cutouts, header logo, favicons, share card; test.mjs runs the tests |
tests/ | Tests for the street plan, collisions, plots, driving, your car and target practice |
public/ | Favicons, share card, web manifest |
The homepage is a living 3D city in Degen's style: ink outlines, flat cartoon shading and PulseChain neon, built with three.js.
docs/tycoon-plan.md).Click Drop 001 (or walk in) and its panel has a fitting room: pick what your Degen wears and watch it on him, turning on a neon podium (drag to turn him). Seven tabs: Fit (Classic Suit, Drop Hoodie or Track Suit, with their colours), Head (Diamond Cap, Backwards Cap, Street Beanie, Bucket Hat, Gold Crown, Hood Up or nothing), Shades (lens colours), Bags (Backpack, Crossbody, Skate Deck or none), Hand (Gummy Bag, Iced Coffee, Boombox or empty), Extras (Headphones, Diamond Chain, Shades Chain) and Kicks. It's free and only for your Degen in the city: nothing is sold and it isn't tied to the real store. He wears it in walk mode, and other players see it online. The Open the fitting room button in Profile goes straight there.
The city has its own money, Dorras, earned by playing (they can't be bought or cashed out). Everyone starts with 600 and a market stall in the market square, east of the East districts: two rows of stalls under striped canopies, a MARKET gantry and string lights, traders and shoppers. Yours has the cyan canopy and the YOUR STALL board, and shows your stock.
Across the top of the city a header always says which view you're in, with a line on what to do there: City view, Walk mode (first or third person, online), Build mode or the City map (2D). Its City / Walk / Build switch moves between them. While walking, the site header steps aside and this header carries the walk tabs (Controls, Profile, Online, Emote) and, with a gun, the ammo and score, so the rest of the screen is the city. On phones it's two rows while walking.
Press Walk to play as Degen (balaclava, red cap, green shades, suit, a bag of Gas Fee Gummy Bears) and explore on foot.
South-east of the Southside Loop, off the east ring avenue, is the airport: a runway with its markings, edge and approach lights, a taxiway and apron, a terminal with a glass front, a wave roof and a big SECTOR 7 AIRPORT sign, airbridges, a control tower, a hangar, a helipad, floodlight masts and a car park. Traffic drives out to it and back.
Three cartoon airliners in DEGEN AIR colours (a made-up airline), a prop plane and a helicopter fly a timetable that's the same for every visitor: the airliners push back, taxi out, take off, cross the city high over downtown and come back round to land; the prop plane loops along the river; the helicopter circles the Emporium. Under reduced motion they stand parked.
Fly it yourself. The airport is a place on the map (its pin is over Hangar 1; its panel's Walk in starts you at the hangar office). Your own aircraft waits in the hangar:
On the south bank, east of plot South 5, stands the garage: a workshop with an open bay and a car lift, a roller door, a little office, a neon GARAGE sign on the roof, and a showroom turntable on the forecourt with your car on it.
Solo shooting practice in walk mode. Only Degen carries a gun; nobody in the city is shot at.
Walk the city with other players. The Online / Offline switch in the mode header (next to City / Walk / Build; "On / Off" on phones and small tablets) picks one for the whole city:
The choice is remembered in the browser. Go online / Leave in the Online pill while walking flip the same switch.
The game server is in server/ (Cloudflare); see server/README.md for
setup. The plan for the next phases (leaderboards, PvP across the river) is
in docs/multiplayer-plan.md.
Add ?fps to the address (for example https://degenemporium.com/?fps) to
show a small readout in the corner of the city: frames a second, the slowest
frame, draw calls and triangles per frame, the quality tier and anything
stepped down. Nobody sees it without ?fps.
Press Build in the header to switch to build mode. Each of the 16 districts around the core city (North 1-5, West 1-3, East 1-3 past the ring roads, and South 1-5 across the river on the south bank road) is one large plot: its 3 × 3 squares merged into one, for 20,000,000 PLS.
Wallets: installed wallets (MetaMask, Rabby, OKX and others: browser extensions, or the wallet app's own browser on a phone) show up by name. WalletConnect covers everyone else: a QR code on a computer, or a jump to the wallet app on a phone. It needs a free project ID:
WALLETCONNECT_PROJECT_ID in
src/data/site.ts (it's public by design: every visitor's browser
gets it).emporium.144collective.workers.dev
(and localhost for testing) to the allowed domains.Without a project ID the WalletConnect option simply doesn't appear.
Sales run on PulseChain Testnet v4 (test PLS, no real value) until the
owner switches the game server to mainnet, and stay "opening soon" until the
owner's receiving wallet is set. See server/README.md → Plot sales.
Offline (the switch in the mode header), or without a game server (a local build), the builder runs as a demo: a simulated wallet with play money, nothing touches PulseChain, progress is saved in the browser and Reset demo clears it.
| Building | Its panel |
|---|---|
| The Emporium (centre arcade tower) | The market hall |
| Drop 001 | Clothes: the fitting room |
| The Armoury | Guns and gear (target practice) |
| The Workshop | The factory: turn raw goods into products |
| The Vault | The bank: worth, ledger, loans |
| Signal tower | News and contracts |
| Post office | Couriers |
| The Apartments | Staff |
The ☰ Menu lists the same places (in 3D), then the Emporium comic page and,
once SHOP_OPEN is true, the merch store; X and Telegram sit at its foot.
On the 2D map a building takes you into the 3D city and opens its panel. Phones (up to 640px wide) don't show
the welcome card, so the city fills the screen; on bigger screens it has a
close button and stays closed on return visits. A small "Draft · v0" tag keeps
the draft note whenever the card is hidden. Every menu and card closes with its
×, Esc, or (for drop-down menus) a tap outside.
| Path | What it is |
|---|---|
src/components/CityMap.astro | The page: 2D map, 3D host, pins, settings, panels, directory |
src/scripts/city3d/index.ts | Boot, quality tiers, camera, hover/click, panels, loop |
src/scripts/city3d/world.ts | Ground, roads, river, trees, lamps, skyline |
src/scripts/city3d/landmarks.ts | The buildings, signs and their animations |
src/scripts/city3d/life.ts | Traffic and lights, people, boats, drones, blimp, birds |
src/scripts/city3d/sky.ts | Time of day, sun and moon, fog, clouds, rain |
src/scripts/city3d/post.ts | Ink outlines and bloom |
src/scripts/city3d/sound.ts | Ambient sound |
src/scripts/city3d/walk.ts | Walk mode: Degen, mouse / keyboard / touch / gamepad controls, camera, collisions, door prompts |
src/scripts/city3d/combat-sim.ts | Target practice rules: ammo, hits, health, score; fixed tick, events, no DOM (ready to run on a server) |
src/scripts/city3d/combat.ts | Target practice view: targets, effects, sound cues, HUD, call-outs, gun finishes |
src/scripts/city3d/gunshop.ts | The gun store menu at the Armoury counter |
src/scripts/city3d/guns.ts | The four guns (Degen, his hands, other players, the soldiers), sights, finishes |
src/scripts/city3d/stance.ts | Third person: both hands on the gun (grip and handguard), side-on stance for long guns |
src/scripts/city3d/viewmodel.ts | First-person hands and rifle: sway, bob, recoil, aiming, reload |
src/scripts/city3d/solids.ts | The city's collision boxes, doors, the gun counter, the garage and the walk-mode spawn (walk mode, your car and the game server) |
src/scripts/city3d/layout.ts | The street plan: blocks, streets, avenues, lanes, the river, the garage lot, and the landmarks' old drawing grid (design()) |
src/scripts/city3d/cars.ts |
/emporium)| Window | Content |
|---|---|
| 01 | Brand statement: Degen, headline, follow on X |
| 02 | Drop 001 (merch), coming soon. "Enter the store" is disabled until SHOP_OPEN in src/data/site.ts is true |
| 03 | X and Telegram |
| 04 | The tools: Terminal, DEX, Launcher |
| 05 | The token: blurred and marked classified until launch (decoy content only) |
| 06 | The plan, roughly |
All copy is draft and marked as such on the page. A red "Coming soon" stamp marks the whole page as a preview.
Colours come from the PulseChain gradient (red, magenta, violet, blue,
cyan). See brand/README.md for the palette and the rules that keep it
readable.
docs/tycoon-plan.md.| The car models (traffic, parked cars, your car) |
src/scripts/city3d/garage.ts | The garage on the south bank and its turntable |
src/scripts/city3d/garage-ui.ts | The garage menu: pick a model and a paint |
src/scripts/city3d/mycar.ts | Your car: models, paints, handling numbers (no DOM) |
src/scripts/city3d/drive-sim.ts | Driving rules: arcade handling, soft collisions (no DOM) |
src/scripts/city3d/drive.ts | Driving: getting in and out, cameras, the speed readout, engine sound |
src/scripts/city3d/tycoon.ts | The economy's rules: goods, market prices, your stall, units, the Workshop, your car's load, sales, time away (no DOM) |
src/scripts/city3d/tycoon-ui.ts | The Dorras readout, your business card, the market hall, the Workshop's panel, the save |
src/scripts/city3d/units.ts | Makers' Row: your four units, drawn from the save |
src/scripts/city3d/beacons.ts | Beams of light over your contracts' drop-offs |
src/scripts/city3d/biglots.ts | The big lots: superstore, factory, depot, offices, drawn from the save |
src/scripts/city3d/market.ts | The market square: stalls, traders, gantry, your stall's stock |
src/scripts/city3d/profile-ui.ts | The Profile panel: name, rank; owns the look (saved here and online) |
src/scripts/city3d/head.ts | The mode header's title and subtitle, and its height (--head-h) |
src/scripts/city3d/fitting.ts | Drop 001's fitting room: wardrobe items and the turning preview |
src/scripts/city3d/online.ts | The Online / Offline switch in the mode header (multiplayer and real sales, or solo and the demo) |
src/scripts/city3d/multiplayer.ts | Online pill, sending controls, emotes and phrases, player list |
src/scripts/city3d/remote.ts | Other players: smoothed movement, poses, name tags, bubbles |
src/scripts/net/ | Shared with the server: protocol, profile data (names, ranks, wardrobe, emotes, phrases); client.ts is the browser connection |
server/ | The multiplayer game server (Cloudflare Worker + Durable Objects) |
src/scripts/city3d/plots.ts | The large plots, build-mode overlay, the eight buildings |
src/scripts/city3d/store.ts | The builder's Store interface, and the demo (simulated wallet, play money) |
src/scripts/city3d/land.ts | Real sales: wallet payments, the server's list of owners, building (with the wallet login) |
src/scripts/city3d/account.ts | Log in with a wallet: the signed message, the session, the basic profile |
src/scripts/city3d/account-ui.ts | The Log in button and the profile card (name, rank, score, wallet, plots) |
src/scripts/city3d/wallet.ts | The visitor's PulseChain wallet: installed ones (EIP-1193 / EIP-6963) and WalletConnect for phones |
src/scripts/net/land.ts | Shared with the server: networks, land API shapes, sign-in message |
src/scripts/city3d/builder-ui.ts | Build mode: wallet chip, plot panel, customiser, purchase dialog |
src/data/plots.ts | Districts, plot price, building catalogue, colours, sign texts (shared with the server) |
src/scripts/city3d/kit.ts | Toon materials, canvas textures, batching |
src/lib/city.ts | The 2D isometric map (fallback and loading poster) |