Un juego idle/tycoon para Telegram WebApp con economía sostenible play-to-earn basado en TON Blockchain.
- Objetos que Generan Energía: Los objetos generan energía al activarse (no la consumen)
- Activación Manual: Cada objeto debe activarse cada 4 horas para generar 40 de energía
- Cap de Energía: 120 base (la energía extra se pierde si se llena)
- Conversión a TON: 100,000 energía = 1 TON (conversión manual)
- Rarezas: Común, Raro, Épico, Legendario
- Juego de timing para obtener nuevos objetos
- Ruleta de rarezas basada en performance
- Mejores scores = mayor probabilidad de rarezas altas
- Legendario siempre tiene baja probabilidad
- Slots limitados (2 iniciales)
- Compra de slots adicionales con TON (precio progresivo)
- Cada slot cuesta el doble del anterior (0.5 TON base)
Boosts pagados con TonConnect:
- x2 próxima activación: 0.1 TON
- +1 activación hoy: 0.15 TON
- x2 por 8 horas: 0.2 TON
- Activación automática 2 días: 0.3 TON
- Misión inicial obligatoria: unirse al canal de Telegram
- Recompensa: 1 objeto común inicial
- Frontend: React + Framer Motion + TonConnect UI
- Backend: FastAPI + Python
- Base de Datos: MongoDB
- Blockchain: TON (testnet por defecto)
- Telegram: WebApp SDK
MONGO_URL="mongodb://localhost:27017"
DB_NAME="forge_ton_realms"
CORS_ORIGINS="*"
# Telegram
TELEGRAM_BOT_TOKEN="your_bot_token_from_botfather"
TELEGRAM_CHANNEL="@forge_ton_realms"
# TON Configuration
TON_NETWORK="testnet" # Change to "mainnet" for production
BOT_WALLET_ADDRESS="UQtest_wallet_address_here"
TON_API_KEY="your_toncenter_api_key"
# Game Configuration
ENERGY_CAP_BASE=120
ENERGY_PER_ACTIVATION=40
ENERGY_TO_TON_RATE=100000
INITIAL_INVENTORY_SLOTS=2REACT_APP_BACKEND_URL=__BACKEND_URL__
REACT_APP_TON_MANIFEST_URL=__FRONTEND_URL__/tonconnect-manifest.json- Habla con @BotFather en Telegram
- Usa el comando
/newbot - Sigue las instrucciones para obtener tu bot token
- Configura el bot token en
/app/backend/.env
- Obtén una API key de TON Center
- Crea una wallet testnet para recibir pagos
- Configura
BOT_WALLET_ADDRESSyTON_API_KEYen el.env
Para obtener TON testnet:
- Usa el TON Testnet Faucet
Edita /app/frontend/public/tonconnect-manifest.json:
{
"url": "https://tu-dominio.com",
"name": "Forge TON Realms",
"iconUrl": "https://tu-dominio.com/icon.png",
"termsOfUseUrl": "https://tu-dominio.com/terms",
"privacyPolicyUrl": "https://tu-dominio.com/privacy"
}- Crea un canal público en Telegram
- Obtén el handle del canal (ej: @tu_canal)
- Configura
TELEGRAM_CHANNELen el.env
Los servicios ya están configurados y en ejecución:
# Verificar estado
sudo supervisorctl status
# Reiniciar si es necesario
sudo supervisorctl restart backend frontend- Abre el bot en Telegram
- Completa la misión de onboarding (unirse al canal)
- Recibe tu primer objeto común
- Activa objetos cada 4 horas para generar energía
- Juega el minijuego de construcción para obtener más objetos
- Convierte energía a TON o compra boosts
Autenticación:
POST /api/auth/register- Registrar usuarioPOST /api/auth/me- Obtener usuario actual
Onboarding:
POST /api/onboarding/complete- Completar onboarding
Objetos:
POST /api/items/list- Listar objetos del usuarioPOST /api/items/activate- Activar un objetoGET /api/items/library- Biblioteca de objetos
Construcción:
POST /api/construction/play- Jugar minijuego
Inventario:
POST /api/inventory/purchase-slot- Comprar slot
Energía:
POST /api/energy/convert- Convertir energía a TON
Pagos:
POST /api/payments/initiate-payment- Iniciar pagoGET /api/payments/transaction-status/{id}- Estado de transacción
Configuración:
GET /api/game/config- Configuración del juegoGET /health- Health check
El juego usa un tema cyberpunk minimalista dark con:
- Colores principales:
- Neon Cyan (#00F0FF)
- Electric Purple (#BD00FF)
- Laser Green (#00FF94)
- Tipografía:
- Rajdhani (headings)
- Chakra Petch (body)
- JetBrains Mono (datos)
- ✅ Validación criptográfica de Telegram initData
- ✅ Toda la lógica del juego en backend
- ✅ Sin almacenamiento de claves privadas
- ✅ TonConnect para pagos seguros
- ✅ Rate limiting recomendado para producción
Para cambiar de testnet a mainnet:
- Actualiza
/app/backend/.env:
TON_NETWORK="mainnet"
BOT_WALLET_ADDRESS="tu_wallet_mainnet"
TON_API_KEY="tu_api_key_mainnet"- Reinicia el backend:
sudo supervisorctl restart backend- Verifica la configuración:
curl http://localhost:8001/health- ❌ Sin generación infinita offline
- ✅ Cap de energía previene inflación
- ✅ Activación manual incentiva engagement
- ✅ Precios progresivos de slots
- ✅ Boosts no rompen economía
- 🎯 Entrar 4-6 veces al día (activaciones)
- 🎮 Jugar construcción para nuevos objetos
- 💎 Mejorar timing para rarezas altas
- 🏪 Boosts opcional para conveniencia
tail -f /var/log/supervisor/backend.err.logtail -f /var/log/supervisor/frontend.err.logsudo supervisorctl status mongodb- Verifica que
TELEGRAM_BOT_TOKENesté configurado correctamente - Asegúrate de que el bot esté activo
/app/
├── backend/
│ ├── server.py # FastAPI main
│ ├── models.py # Pydantic models
│ ├── telegram_auth.py # Telegram validation
│ ├── game_logic.py # Game mechanics
│ ├── ton_service.py # TON payment monitoring
│ ├── requirements.txt # Python dependencies
│ └── .env # Backend config
├── frontend/
│ ├── public/
│ │ └── tonconnect-manifest.json
│ ├── src/
│ │ ├── components/
│ │ │ ├── Layout.js
│ │ │ └── Onboarding.js
│ │ ├── contexts/
│ │ │ └── AuthContext.js
│ │ ├── pages/
│ │ │ ├── Dashboard.js
│ │ │ ├── Inventory.js
│ │ │ ├── Shop.js
│ │ │ └── Construction.js
│ │ ├── App.js
│ │ ├── App.css
│ │ └── index.css
│ ├── package.json
│ ├── tailwind.config.js
│ └── .env # Frontend config
└── design_guidelines.json # Design system
- Configurar tu bot de Telegram
- Obtener TON API keys (testnet)
- Crear canal de Telegram
- Actualizar todos los
.envcon tus credenciales - Reiniciar servicios
- Probar flujo completo
- Cuando esté listo, cambiar a mainnet
- El juego está configurado para testnet por defecto
- Todos los pagos usan TonConnect (wallets del usuario)
- La economía está diseñada para ser sostenible
- Los boosts no rompen el balance del juego
- Sistema preparado para futuro APK
Para problemas o preguntas, revisa los logs en /var/log/supervisor/