A single-file, zero-dependency browser homage to the classic Mafia Wars formula, in a warm light palette with hand-built SVG art.
Play it: https://solid-apps.github.io/mafia/ — or open index.html in any browser.
- Energy, stamina & health that regenerate on real-time timers (and while you're away, up to 8 hours)
- Character classes — Maniac, Fearless, or Mogul, chosen once at the start
- Six tiers of jobs (Street Thug → Boss of the City) with mastery stars, district bonuses, and consumable supply requirements that send you farming earlier tiers
- Collections — four themed 7-piece loot sets; vault a complete set for a permanent perk
- Leveling with full bar refills, 3 skill points, and a favor point per level
- Turf fights against escalating rivals with portrait art; losses cost 10% of cash on hand, so use the bank (10% deposit fee)
- The Hitlist — three high-stakes contracts that scale with your reputation, on 3-hour respawns
- Robbing — a quieter stamina sink with its own risk/reward curve and Heist Set drops
- Boss fights with persistent HP, unique loot, and tougher respawns
- Properties with passive hourly income (earns offline) and escalating prices
- Store & crew — weapons, armor, vehicles, plus favor-exclusive gear
- Favor points — a premium-style currency earned entirely in-game; spend on refills, heals, or exclusives
- Havana (level 35) and Moscow (level 55) — two more cities with their own peso and ruble economies: new job tiers, rivals, robbing targets, black-market gear, properties, collection sets, and city bosses. Some Moscow jobs need supplies smuggled from New York — the economies interlock
- Daily Take with streak multipliers up to ×7, and 37 achievements across a tuned 70-level curve
- Sound effects (toggleable), optional ambient jazz, confetti on level-ups and vaults, screen-shake on boss kills, animated cash counters, haptic feedback on mobile
- Mobile-friendly — sticky mini-HUD on scroll, 44px touch targets, safe-area insets
- Pick a nickname; earn a title as you level
- Brag buttons on level-ups, boss kills, and vaults — native share sheet or clipboard
- Challenge links — every brag URL carries your stats; friends who click it get a "Vendetta" tracked in their profile until they out-earn you (with a "Rub It In" brag when they do)
- Generate a downloadable Wanted Poster of your character with your stats and bounty
- OpenGraph card (
og-image.png) so shared links unfurl with a picture - Save codes — export/import progress between browsers and devices
Progress is saved to localStorage in your browser.
The game is 100% client-side, but it can optionally be mounted as a JavaScript Solid Server plugin — your pod becomes your mob identity:
- cross-device save sync (
PUT/GET /omerta/api/save, keyed on your WebID) - a city leaderboard — the one feature a serverless game can't have
- the same single
index.html: on GitHub Pages the pod features stay dormant
node jss-plugin/serve.js # composed JSS + OMERTÀ on :3230
node jss-plugin/test.js # integration tests against a real instance
See jss-plugin/omerta-jss.js (both the plain-Fastify and activate(api)
loader contracts, same shape as the Tideholm adapter) and
jss-plugin/NOTES.md for the findings log.