Skip to main contentSkip to navigation
TezTowers

TezTowers

A living 3D city on Tezos. Every plot on Main St is an NFT, every upgrade adds a floor, and the token image redraws itself to match the building.

Tezos
Three.js
WebGL
SmartPy
Dynamic NFTs
React
IPFS
On-chain Advertising

VISUAL SHOWCASE

TezTowers street at night with rows of buildings and billboards, cars on the road, and a glowing blue fountain in a park
Expand image

Further Down Main St

Low-rise plots, rooftop billboards, traffic in both lanes, and the Tezos-mark fountain in the civic park across the street.

A city that grows from the chain

Network
Tezos mainnet
Contracts
Plots, ads, and gifts
Engine
Three.js isometric WebGL
Launched
September 2026

Land you can visit

Most virtual land lives in a spreadsheet and a marketplace listing. TezTowers puts it on a street you can open in a browser tab and watch. Cars queue at the turning circle. A patrol helicopter picks a rooftop helipad and lands on it. A sailboat crosses the harbour every six minutes, and the lighthouse beam sweeps at night. Owning a plot means owning a building people pass, with your art on its billboard and your link behind it. The chain records who owns what and how tall it stands, and the city renders that state.
Check mark

Claim, build, climb

Claim the next open plot on Main St for 10 ꜩ. Owners pay half that for every plot after their first.
Upgrade for 5 ꜩ a floor. A tower crane hoists steel up the facade, the scaffolding slides away, and fireworks go up from the roof.
Six archetypes (Monolith, Twin Spires, Stepped Deco, Glass Center, Terraced Zigzag, Classical Arcade) gain features at levels 3, 8, 15, and 30, then keep growing their crowns once height levels off.
Name, description, link, billboard image, and palette are inscribed straight into contract storage.
Check mark

Perks with real geometry

Rooftop helipads the patrol helicopter lands on, holograms in the owner's colour, neon trim traced to each archetype's silhouette, and billboards that play GIFs.
Eight ground-floor storefronts, from a burger joint to Chez Tez with a red carpet and valet, each with its own clickable menu card.
Level gates live in the contract: neon and animated billboards unlock at level 3, the hologram at 4, the helipad at 5.
Anyone can gift a plot balloons or rooftop search lights for a day, three days, or a week. The gifter's wallet and message are recorded on chain.
Check mark

A street worth scrolling

A day/night cycle lights windows, street lamps, headlights, and aviation beacons, and the procedural Web Audio ambience swaps traffic hum for crickets after dark.
The West End harbour has a stone quay, a pier out to a lighthouse, moored boats, and a custom water shader with reflections at night.
One season file dresses the whole city: jack-o'-lanterns for Halloween, snow and a lit tree in December, fireworks for New Year and the Tezos birthday.
Plot search, deep links, and share cards for X, Bluesky, and Telegram bring visitors straight to a building.
Check mark

Self-serve advertising

Street billboards and airplane sky banners sell by the hour through a separate on-chain ads contract.
Campaigns rotate by weight at 1×, 2×, or 5× visibility, paid in tez with no account and no sales call.
Advertisers can swap creative or extend a flight after booking.
Non-profits, education projects, and Tezos public goods get placements for free.

Dynamic NFTs that stay current

Marketplaces can't run a Three.js scene, so the token image has to be drawn somewhere else. A render daemon polls TzKT for plots flagged for a render, draws the building headless as a 2:3 portrait with a square rooftop thumbnail, stamps each PNG with its plot and contract, pins it to IPFS, and signs set_token_metadata. That signing key can write metadata and do nothing else. It holds a few tez for gas and has no reach into the treasury. Old pins get cleaned up from chain history, keeping the current and previous version for slow indexers.

Fixing an immutable contract

Tezos contracts can't be patched. During testing, the first contract let a level 1 owner buy a rooftop perk the renderer would never draw, and the fix meant a new contract with every existing plot moved across, no wipe allowed. I wrote a v2 with on-chain level gates, a global pause, and a one-way migration entrypoint, then a runbook: freeze, snapshot at a pinned block, migrate in batches, verify key by key against the snapshot, seal. Plot numbers, owners, metadata, and perks all came across intact before mainnet launch.

Stack

React + Vite
Three.js / WebGL
TypeScript
SmartPy (3 contracts)
octez.connect
Taquito
TzKT indexer
IPFS / Pinata
Netlify Functions + Blobs
Web Audio API
PostHog (consent-gated)
Wallet-gated admin console
Telegram bot

A token with an address

TezTowers gives an NFT a place to stand. Holders get a building on a street people visit, artists get a billboard, advertisers get a slot paid in tez, and all of that state lives on chain where objkt, TzKT, or any other client can read it.

Cookie Consent

We only use cookies for site functionality and avoid any kind of tracking cookies or privacy invasive software.

Privacy-First Approach

Our optional Cloudflare analytics is privacy-focused and doesn't use cookies or track personal data.