Lucky Funatic
Lucky Funatic is a Telegram Mini App tapper/idle game built by Funtico, a web3 gaming platform. Players tap a Joker logo to earn Funz (the primary currency), level up cards for passive income, compete in minigame tournaments, and earn rewards that can be transferred to the Funtico Platform.
The game runs entirely inside Telegram as a Mini App -- no separate download needed. Just open the bot, start tapping, and you're in. The experience is optimized for mobile but works on any device that supports Telegram.
Game Overview
At its core, Lucky Funatic is a tapper game with idle mechanics layered on top. You tap to earn Funz, spend Funz on cards that generate passive income, and use that passive income to buy more cards. On top of that core loop, there are tournaments, quests, a shop, boosters, and a frenzy bonus round to keep things interesting.
flowchart LR
Tap["Tap the Joker"] --> Funz["Earn Funz"]
Funz --> Cards["Buy Story Cards"]
Cards --> Passive["Passive Income"]
Passive --> Funz
Funz --> Shop["Pawn Shop"]
Shop --> Tickets["Tournament Tickets"]
Tickets --> Tourney["Play Tournaments"]
Tourney --> Rewards["Win TICO &\nPrivate Passes"]
Rewards --> Platform["Transfer to\nFuntico Platform"]
Navigation
The game is organized into five main tabs at the bottom of the screen:
- Home -- the main tapping screen where you earn Funz
- Stories -- collectible cards that generate passive income
- Win -- minigames and tournaments where you compete for prizes
- Quests -- one-time tasks and daily bonus wheel
- Saga -- coming soon
Additional screens are accessible from the main screen: the Pawn Shop (Toolbag button), Boosters (lightning bolt), Inventory, Account, and Raffle.
Currencies
Lucky Funatic has several currencies, each earned and spent in different ways. Here's a quick reference:
| Currency | Icon | How to get it | What it's for |
|---|---|---|---|
| Funz | Silver casino chip | Tapping, passive income from Stories cards | Buying cards, shop purchases, general spending |
| Jokers | Joker face chip | Rare drop from tapping (0.05% per tap), quest rewards | Shop purchases, converting to other items |
| Bond Bells | Bell icon | Inviting friends (1 friend = 1 Bond Bell) | Permanent boosters, shop purchases |
| Lady Jokers | Lady Joker | Premium currency | Convertible to Funz |
| Baby Jokers | Baby Joker | Premium currency | Convertible to Funz |
| Mini Tickets | Blue ticket | Bought in Pawn Shop | Entering Mini Rumble tournaments |
| Maxi Tickets | Gold ticket | Bought in Pawn Shop | Entering Maxi Rumble tournaments |
| TICO | Purple coins | Won in tournaments | Funtico Platform cryptocurrency |
| Private Passes | Pass card | Won in tournaments | Tournament entry on Funtico Platform |
flowchart TD
subgraph Earned["How currencies are earned"]
Tapping["Tapping"] --> Funz["Funz"]
Tapping -.->|0.05% chance| Jokers["Jokers"]
Stories["Story Cards"] --> Funz
Friends["Invite Friends"] --> BondBells["Bond Bells"]
Tournaments["Tournaments"] --> TICO["TICO"]
Tournaments --> PP["Private Passes"]
end
subgraph Spent["How currencies are spent"]
Funz --> BuyCards["Buy Story Cards"]
Funz --> PawnShop["Pawn Shop"]
Jokers --> PawnShop
BondBells --> Boosters["Permanent Boosters"]
BondBells --> PawnShop
PawnShop --> MiniTix["Mini Tickets"]
PawnShop --> MaxiTix["Maxi Tickets"]
MiniTix --> MiniRumble["Mini Rumble"]
MaxiTix --> MaxiRumble["Maxi Rumble"]
TICO --> FunticoPlatform["Funtico Platform"]
PP --> FunticoPlatform
end
New Player Starting Values
When you first open Lucky Funatic, here's what you start with:
| Stat | Starting Value |
|---|---|
| Funz | 1,000 |
| Energy | 500 / 500 |
| Funz per tap | 3 |
| Energy per tap | 1 |
| Energy regeneration | 1 per second |
| Passive income | 0 (until you buy Story cards) |
| Bonus Multiplier | 1x (Level 1) |
| Jokers | 0 |
| Tickets | 0 |
From here, the goal is to grow your Funz balance through tapping and passive income, invest in Story cards to increase your hourly earnings, and eventually compete in tournaments for real platform rewards.
Tech Stack
The Lucky Funatic backend is a Go REST API built with the Fiber web framework. It serves the Telegram Mini App frontend and handles all game logic server-side to prevent cheating.
Data is distributed across three databases, each chosen for its strengths:
flowchart LR
API["Go API\n(Fiber)"] --> MySQL["MySQL\nRelational data"]
API --> Redis["Redis\nReal-time state"]
API --> Scylla["ScyllaDB\nTime-series data"]
MySQL --- M1["Users, game state,\ntournaments, inventory,\ncards, quests"]
Redis --- R1["Leaderboards, boosters,\npassive income calc,\nsession cache"]
Scylla --- S1["Transaction history,\nsession tracking,\nleaderboard snapshots"]
- MySQL stores all relational data: user accounts, game state, tournaments, inventory, cards, quests, and store items
- Redis handles real-time state: leaderboards (sorted sets), active boosters, passive income calculations (via Lua scripts for atomicity), and session caching
- ScyllaDB stores time-series and audit data: transaction history, session tracking, and periodic leaderboard snapshots
Authentication works through Telegram's Mini App protocol: the client sends initData signed by Telegram, the server validates the HMAC-SHA256 signature against the bot token, and issues a JWT for subsequent API calls.
Background workers handle periodic tasks like persisting leaderboards from Redis to ScyllaDB (every 5 minutes), processing scheduled quest completions (every second), and tracking user sessions (every 60 seconds).
Project layout
.
├── config # Configuration management
├── deployment # Docker & deployment configs
│ └── local
├── internal
│ ├── app # Application bootstrap
│ ├── handlers # HTTP request handlers
│ ├── logger # Structured logging (Zerolog)
│ ├── models # Data models & response types
│ │ └── wsmsg # WebSocket message types
│ ├── newservices # Business logic layer
│ ├── repositories # Data access layer
│ ├── server
│ │ ├── middleware # Auth, CORS, rate limiting
│ │ └── routes # API route definitions
│ ├── services # Core services
│ └── workers # Background job workers
├── lua # Redis Lua scripts
└── pkg
├── jwt # JWT token utilities
├── locals # Fiber context helpers
└── snowflake # Unique ID generation