Turn a NIM payment into a wish that lights up a shared sky.
๐ Live Demo: Coming soon
๐ฅ Demo Video: coming soon
Lantern is a Nimiq Pay mini app where a small wallet action becomes a public moment. A user writes a wish, signs it with their Nimiq wallet, sends a tiny amount of NIM as postage, and the server verifies the message before raising that lantern into a shared night sky.
Lantern is built for people who want crypto to feel human again.
The target audience is:
- Nimiq users who want a playful, social wallet experience
- crypto-native communities who value visible, shared moments
- creators and community members who want to send a message, not just a transaction
- people who like lightweight social rituals and public, low-friction participation
With Lantern:
- a user writes a wish in 1โ80 characters
- they choose a color and postage amount
- their wallet signs a nonce-bound message
- the server validates the wallet proof and NIM payment before accepting the lantern
- enough community tips turn the lantern into a star
The sky is intentionally server-authoritative, so a modified client cannot cheat the display.
Write a short message for the sky.
Use the wallet to prove the wish is yours.
Pay a small amount of NIM to raise the lantern.
The lantern rises for everyone to see.
Tips can turn a lantern into a permanently glowing star.
Most crypto transactions disappear the moment they are confirmed. Lantern makes them visible.
Every small NIM payment becomes a wish floating into a shared sky. Wallet signatures provide identity, payments provide participation, and community tips transform lanterns into stars.
Lantern turns NIM from a transaction into a shared social experience.
- full-screen lantern sky with live WebSocket updates
- preview mode for local browser testing without wallet signing
- wallet-based signing and postage flow with Nimiq Pay
- tipping flow that promotes lanterns into stars
- single-process Node server that serves the built client and API
- Node.js 20+
- npm
- a browser with Nimiq Pay for live wallet testing
npm install
npm run devThis starts:
- client UI on
http://localhost:5173 - sky server on
http://127.0.0.1:8787
For a production-like local run:
npm run build
LANTERN_TREASURY='NQXX ...' npm startOn Windows PowerShell:
npm run build
$env:LANTERN_TREASURY="NQXX ..."
npm startLantern is designed to run as a single Node process with a built frontend and an API server.
PORTโ server port, default8787LANTERN_TREASURYโ the NIM address receiving postage and tipsLANTERN_MIN_LUNAโ minimum accepted postage/tip value in Luna, default1000
npm install
npm run build
LANTERN_TREASURY='NQXX ...' PORT=8787 npm startThis project can be deployed to any Node-compatible host such as:
- Render
- Railway
- Fly.io
- an Ubuntu VM / VPS
- a container host
Typical Node deployment pattern:
- clone the repository
- install dependencies with
npm install - build with
npm run build - set
LANTERN_TREASURYand other env vars - start with
npm start
A minimal host command is:
npm install
npm run build
PORT=8787 LANTERN_TREASURY='NQXX ...' npm startLantern uses the Nimiq Pay Mini App SDK for:
init()to connect to the walletlistAccounts()for identity lookupsign()with a nonce-boundLANTERN v1messagesendBasicTransactionWithData()for postage and tips
The server issues one-time nonces so the same wallet signature cannot be replayed.
npm testFor the full validation pass:
npm run checkThis project is well-positioned for a Nimiq mini-app submission because it includes:
- a polished dark design with a clear first impression
- a fast, single-purpose interaction loop
- real wallet signing and NIM postage flows
- repeat-value behavior through tipped lanterns and visual sky activity
- a built-in local validation path with automated tests and a release check
For a stronger submission, the main extra work is distribution and storytelling: a small demo video, a public repo, and a concise pitch explaining why a shared sky made of NIM-powered wishes is useful and memorable.
Lantern uses the Nimiq Mini App SDK for:
- wallet identity via
init()andlistAccounts() - signing with
sign()using a nonce-boundLANTERN v1message - NIM transfers with
sendBasicTransactionWithData()for postage and tips - Mini App integration in a wallet-native environment
Lantern is designed to be more than a single one-off interaction. It creates a repeatable social ritual that could expand into:
- community sky events
- seasonal or festival lantern collections
- trending wishes and themed skies
- wallet-based history and identity
- sponsored or community-run lantern worlds
git remote add origin https://github.com/<your-username>/lantern.git
git branch -M main
git push -u origin mainMIT