ExamplesNimiq Simple Faucet
Team Nimiq Example

Nimiq Simple Faucet

A reusable, self-hosted faucet that drips NIM into users' wallets for onboarding, testing, and retention.

NIMUSDTutilityearning
signingnim-transferusdt-polygonabuse-prevention

About

Nimiq Simple Faucet is a faucet and payout service for the Nimiq blockchain. It lets operators drip small amounts of NIM to new users inside Nimiq Pay — useful for onboarding rewards, developer sandboxes, "first-tip-is-on-us" activation flows, and any earning or loyalty Mini App that needs a trusted payout surface. The service is self-hosted and MIT-licensed. It ships with a Fastify + TypeScript server, a Vue 3 admin dashboard, and a React claim UI, plus SDKs in multiple languages (TypeScript, Python, Go) and mobile (Capacitor, React Native, Flutter). Built-in abuse prevention covers rate limiting, captcha, geo-IP filtering, and device fingerprinting, so operators can run the faucet in public without getting drained. The infrastructure is containerized — Docker, Docker Compose, and Helm charts — with WASM and JSON-RPC signer drivers for flexible deployment. As a reference Mini App, it exercises the full Nimiq Pay flow: account listing, signing, and NIM transfers with visible on-chain receipts.

Project README

descriptionREADME.md
View on GitHub open_in_new

Nimiq Simple Faucet — Example Mini App

A reusable, self-hosted faucet that drips NIM into users' wallets for onboarding, testing, and retention.

Cover

Watch the demo: ▶ YouTube

What it does

Nimiq Simple Faucet is a faucet and payout service for Nimiq. It lets operators drip small amounts of NIM to users inside Nimiq Pay, on demand or by rule. Typical use cases:

  • Onboarding: a user opens any Mini App and receives enough NIM to transact for the first time.
  • Earn-to-learn: a tutorial Mini App pays the user a few cents in NIM per completed lesson.
  • Developer sandbox: devs building Mini Apps can request testnet NIM from a self-hosted faucet without captchas.
  • Loyalty: a merchant Mini App pays a small NIM tip on every purchase.

Because the service is self-hosted, any builder can stand it up behind their own Mini App and reuse the same abuse-prevention primitives.

How it uses Nimiq

  • Signing: verifies that the claim request is signed by the user's wallet via window.nimiq.sign() before dispatching a payout.
  • Native NIM transfers: the Fastify server signs and broadcasts NIM transactions through either a WASM-based or JSON-RPC signer driver.
  • Receipts: returns an on-chain tx hash to the Mini App so the user sees a link to a block explorer confirming the transfer.
  • USDT support: payouts also work over Polygon USDT via window.ethereum + EIP-1193, using the same abuse-prevention pipeline.

Try it

  • Source: https://github.com/PanoramicRum/nimiq-simple-faucet
  • Self-host: docker compose up — see the repo's deploy/ directory for Helm charts and environment variable reference.
  • Quickstart SDKs: TypeScript, Python, Go, plus mobile (Capacitor, React Native, Flutter).

Tech stack

  • Server: Fastify + TypeScript
  • Admin: Vue 3 + Vite
  • Claim UI: React
  • Abuse prevention: rate limiting, captcha, geo-IP, device fingerprinting (9 pluggable layers)
  • Infra: Docker, Docker Compose, Kubernetes (Helm)
  • AI agent integration: MCP server + structured docs for automated setup

Status

🚧 Beta / work-in-progress. Not production-ready yet. Showcased here as a reference of what a reusable Mini App payout backend can look like.

Builder

PanoramicRum · @PanoramicRum

License

MIT

Notes

This is one of several examples shipped with the competition repo under examples/. Examples are reference Mini Apps authored by Team Nimiq — they are not competing entries and do not appear on the showcase site's submissions grid. See examples/README.md for how Team Nimiq members add new ones.