Emira Core is a Telegram-ready clicker game prototype built for the Stellar / Soroban hackathon track. It combines a React frontend, a lightweight Node.js backend, Telegram Mini App support, WalletConnect and Freighter wallet flows, and real Soroban testnet contract deployment artifacts for rewards and marketplace state.
Most clicker and casual reward games are fast, but they usually fail in one of two ways:
- every important action stays fully off-chain, so ownership and rewards are weak
- or every action is pushed on-chain, which makes the game slow, expensive, and unrealistic
For a Telegram-first game, that tradeoff gets worse. Users expect instant gameplay, but hackathon judges expect real blockchain usage.
Emira Core uses a hybrid architecture:
- High-frequency gameplay stays off-chain.
- Telegram is used as the daily entry surface.
- WalletConnect and Freighter handle wallet-based actions.
- Soroban stores durable reward and marketplace state.
- Stellar testnet transactions provide verifiable blockchain proof.
This gives the game responsive UX without pretending blockchain should store every tap.
Frontend: https://emira-core.vercel.app
Backend health: https://emira-core.vercel.app/health
GitHub: https://github.com/Sopwit/emira-core
Marketplace contract:
CBRKJVWTTF5DO2ZVIDOP3TSBTPYQXHGQIPA4ANFI7WKG4X65Y3MCCXJI
Rewards contract:
CCO434MY5ASOQIJALSN2KINXVEQMJKCW3HRMVRZSF2MOXUI7O3V4WTJD
Marketplace contract explorer: https://stellar.expert/explorer/testnet/contract/CBRKJVWTTF5DO2ZVIDOP3TSBTPYQXHGQIPA4ANFI7WKG4X65Y3MCCXJI
Rewards contract explorer: https://stellar.expert/explorer/testnet/contract/CCO434MY5ASOQIJALSN2KINXVEQMJKCW3HRMVRZSF2MOXUI7O3V4WTJD
Marketplace deploy transaction:
a025b5e75ba66744f197912a8f1e0d83cee7f9d3d33fe92375f9a73b531ca28c
Rewards deploy transaction:
a3a33e1004ef366c0240b7c3e782c9d2fe5c620558225ef8fd42822c353d8d51
All recorded transaction hashes: docs/submission/transaction-hash.md
This repository includes the requested submission artifacts:
- 🇬🇧 English
README.md - 🔗 Transaction hash proof: docs/submission/transaction-hash.md
- 🖼️ Project screenshots under docs/screenshots
- Frontend is deployed on Vercel.
- Backend API runs through the same Vercel deployment via rewrites to
api/index.mjs. - Telegram Mini App opens the production frontend URL.
- Wallet actions use WalletConnect in Telegram/mobile and Freighter on desktop.
- Soroban contracts represent durable reward and marketplace logic on Stellar testnet.
- Persistence supports PostgreSQL, with local file fallback for development.
Telegram / Web User
|
v
Vercel Frontend
|
v
Vercel API Runtime
|
+--> Telegram session validation
+--> Profile / leaderboard / market APIs
+--> Wallet link and prepared chain actions
|
v
Stellar Testnet / Soroban
| Service | URL / Identifier |
|---|---|
| Frontend | https://emira-core.vercel.app |
| Backend Health | https://emira-core.vercel.app/health |
| GitHub Repository | https://github.com/Sopwit/emira-core |
| Marketplace Contract | CBRKJVWTTF5DO2ZVIDOP3TSBTPYQXHGQIPA4ANFI7WKG4X65Y3MCCXJI |
| Rewards Contract | CCO434MY5ASOQIJALSN2KINXVEQMJKCW3HRMVRZSF2MOXUI7O3V4WTJD |
| Marketplace Deploy Tx | a025b5e75ba66744f197912a8f1e0d83cee7f9d3d33fe92375f9a73b531ca28c |
| Marketplace Init Tx | 9059e4423aa6c9bd7d379a1736dbf5015cb84091aeb02c0c0568e05d7a587df5 |
| Rewards Deploy Tx | a3a33e1004ef366c0240b7c3e782c9d2fe5c620558225ef8fd42822c353d8d51 |
| Rewards Init Tx | 2a62f4aabc67eb25a4d44bec9e286d9bdab15291a561048707b34de7e7a5095f |
- Telegram Mini App compatible gameplay
- Clicker progression with upgrades and NFT drops
- Profile, museum, market, and leaderboard surfaces
- WalletConnect support for Telegram and mobile
- Freighter support for desktop wallet actions
- Soroban marketplace contract scaffold with listing lifecycle
- Soroban rewards contract scaffold with reward pool and claim accounting
- Recorded Stellar testnet transaction hashes
- Vercel deployment ready frontend and backend integration
- User opens Emira from web or Telegram.
- Telegram session is validated when inside the Mini App.
- User starts tapping and progressing off-chain.
- Backend serves profile, leaderboard, and market read models.
- User connects a Stellar wallet when a durable action is needed.
- WalletConnect is used inside Telegram/mobile, Freighter on desktop.
- Reward and marketplace actions are represented by Soroban contract logic.
- Testnet deployment and init transactions provide blockchain proof for the hackathon.
This is not a generic Web2 game with a token sticker on top.
- Taps, combo, and moment-to-moment gameplay stay off-chain because they are high-frequency.
- Reward claim accounting belongs on-chain because it needs durable, trust-sensitive state.
- Marketplace listing state belongs on-chain because ownership changes and sale state must be verifiable.
- Telegram gives distribution and retention, while Soroban gives credibility and durable state.
That split is exactly why this project fits a blockchain hackathon.
The repository contains real contract code:
What they currently cover:
-
emira_marketplace- contract initialization
- create listing
- update listing price
- cancel listing
- mark listing as sold
-
emira_rewards- reward pool initialization
- fund reward pool
- set max claim amount
- record player progress snapshot
- claim reward accounting
These are real Soroban contracts with local tests and documented testnet deployment artifacts.
Verified hashes are recorded here: docs/submission/transaction-hash.md
Highlights:
- Marketplace upload:
07f4f26164870b4110deee7001eee0faaa4b8f5bd8c20fc350fb16674aa28a36 - Marketplace deploy:
a025b5e75ba66744f197912a8f1e0d83cee7f9d3d33fe92375f9a73b531ca28c - Marketplace init:
9059e4423aa6c9bd7d379a1736dbf5015cb84091aeb02c0c0568e05d7a587df5 - Rewards upload:
b25f7fbcffcc9b381e80578abf2b5334531b977532633a24f2ef40cd79c97b32 - Rewards deploy:
a3a33e1004ef366c0240b7c3e782c9d2fe5c620558225ef8fd42822c353d8d51 - Rewards init:
2a62f4aabc67eb25a4d44bec9e286d9bdab15291a561048707b34de7e7a5095f
Frontend:
- React 19
- Vite
- TypeScript
- Tailwind CSS 4
- Framer Motion
Backend:
- Node.js
- Vercel serverless entry
- Telegram auth/session flow
- Profile, leaderboard, progress, and market APIs
Blockchain:
- Stellar SDK
- Stellar Testnet
- Soroban smart contracts
- Freighter
- WalletConnect
backend/
contracts/
docs/
screenshots/
submission/
frontend/
README.md
vercel.json
VITE_API_BASE_URL=https://emira-core.vercel.app
VITE_WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id
VITE_TELEGRAM_WEBAPP_URL=https://emira-core.vercel.app
VITE_TELEGRAM_BOT_USERNAME=your_bot_username
VITE_TELEGRAM_STARTAPP=emira-core
VITE_STELLAR_NETWORK=testnet
VITE_SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
VITE_STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
VITE_SOROBAN_MARKET_CONTRACT_ID=CBRKJVWTTF5DO2ZVIDOP3TSBTPYQXHGQIPA4ANFI7WKG4X65Y3MCCXJI
VITE_SOROBAN_REWARDS_CONTRACT_ID=CCO434MY5ASOQIJALSN2KINXVEQMJKCW3HRMVRZSF2MOXUI7O3V4WTJDTELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_BOT_USERNAME=your_bot_username
TELEGRAM_WEBAPP_URL=https://emira-core.vercel.app
TELEGRAM_STARTAPP=emira-core
SESSION_JWT_SECRET=your_long_random_secret
WALLETCONNECT_PROJECT_ID=your_walletconnect_project_id
STELLAR_NETWORK=testnet
SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
STELLAR_MARKETPLACE_ADDRESS=your_marketplace_settlement_address
SOROBAN_MARKET_CONTRACT_ID=CBRKJVWTTF5DO2ZVIDOP3TSBTPYQXHGQIPA4ANFI7WKG4X65Y3MCCXJI
SOROBAN_REWARDS_CONTRACT_ID=CCO434MY5ASOQIJALSN2KINXVEQMJKCW3HRMVRZSF2MOXUI7O3V4WTJD
POSTGRES_URL=your_postgres_url_if_used
ALLOW_TELEGRAM_MOCK=false- Import the GitHub repository.
- Keep the project root at repository root.
- Use the provided
vercel.json. - Add frontend and backend environment variables.
- Redeploy after every environment change.
- Set the Mini App URL in BotFather to
https://emira-core.vercel.app - Set the menu button to the same public URL.
- Open the bot and test with the
PLAYbutton.
- Build contracts.
- Deploy to Stellar testnet.
- Record deploy and init hashes.
- Add contract IDs and hashes into the submission docs.
Common issues:
- Vercel env changes require redeploy.
- Telegram popup blank screen can happen if a broken JS bundle is cached.
- WalletConnect requires a valid
VITE_WALLETCONNECT_PROJECT_ID. - Telegram auth requires correct bot token and public web app URL.
- PostgreSQL is optional for local demos, but persistent environments should use it.
- Open https://emira-core.vercel.app
- Open the same experience from Telegram Mini App.
- Show tap gameplay and upgrades.
- Show NFT collection and market screens.
- Show wallet connection via Freighter or WalletConnect.
- Show the recorded Soroban contract IDs and testnet transaction hashes.
- Explain that gameplay is fast off-chain while meaningful state is represented on Soroban.
- Testnet only
- Reward and marketplace logic are still MVP-oriented
- Backend persistence may fall back to file storage if Postgres is not configured
- Telegram experience is functional but still needs mobile polish in some areas
- Contracts should be extended and audited before any production-grade use
- Complete prepared buy/list/cancel transaction builder flow
- Add stronger market settlement reconciliation
- Improve Telegram-native mobile layout polish
- Add season snapshot and claim pipeline
- Add production-grade database and event indexing
- Expand NFT ownership sync between backend and chain events
Emira Core turns a Telegram clicker game into a credible Stellar / Soroban hackathon project by keeping gameplay instant off-chain while moving durable reward and marketplace state onto Soroban.



