bitmine.id Open ↗ Has Plan
58
DOM 68 PLN 100 REV 20 EAS 30
CLAUDE.md ×
plan.md
PREVIEW

bitmine.id — Indonesian BTC Cloud Mining & ETH Staking Platform

Domain: bitmine.id Tagline: "Tambang Bitcoin & Staking Ethereum — Tanpa Ribet, Bayar Pakai QRIS" Model: Hash power aggregator + ETH staking pool proxy + simulation mode (paper trading) Stack: 100% Cloudflare (Worker + D1 + R2 + KV + DO + AI) Payments: Midtrans Snap (QRIS, GoPay, OVO, DANA, bank transfer) Language: Bahasa Indonesia (primary), English (toggle)


1. Market Opportunity

Why Indonesia?

  • 18.7M crypto holders (Bappebti 2025), growing 35% YoY
  • 80%+ buy on exchanges but never mine — untapped demand for passive income
  • Almost ZERO Indonesian-language cloud mining platforms
  • Local payment rails (QRIS, e-wallets) make crypto accessible to non-technical users
  • Average monthly salary IDR 4.9M — micro-investment ($5-50) sweet spot

Competitive Landscape

Competitor Language Payment Problem
NiceHash English Crypto only Too technical, no IDR
Genesis Mining English Card/Crypto Expensive, no local payment
ECOS English Card/Crypto No Indonesian presence
StormGain English Crypto Confusing UX
bitmine.id Bahasa QRIS/GoPay/OVO/Bank Solves all of the above

The Gap We Fill

  • Indonesian language — first-mover advantage
  • IDR pricing — no need to buy crypto first
  • Micro-entry — start from IDR 50,000 (≈$3)
  • WhatsApp support — how Indonesians prefer to get help
  • Education-first — teach mining concepts, build trust
  • Transparent — real-time hashrate dashboard, pool links, block explorer verification

2. Products & Pricing

Product 1: BTC Cloud Mining (Tambang Bitcoin)

Users purchase hash power contracts. We aggregate through mining pools (Foundry/Antpool/ViaBTC). Daily BTC rewards deposited to user balance.

Contract Tiers (Corrected — Based on Real Mining Economics May 2026)

Basis: BTC ~$77K, difficulty 135.59T, block reward 3.125 BTC. 1 TH/s ≈ $0.0036/day ≈ IDR 57/day gross. Net after 15% fee ≈ IDR 48/day. Yields are estimates only and fluctuate with difficulty, price, and fees.

Tier Name Hash Power Duration Price (IDR) Est. Daily Yield (net)
Starter Coba Dulu 10 TH/s 30 days 150,000 ~IDR 485/day
Basic Penambang Pemula 50 TH/s 90 days 700,000 ~IDR 2,425/day
Pro Penambang Pro 200 TH/s 180 days 2,500,000 ~IDR 9,700/day
Elite Penambang Elite 1,000 TH/s 365 days 11,000,000 ~IDR 48,500/day
Custom Kustom 2,000+ TH/s 365 days Negotiated Variable

Fee structure:

  • Maintenance fee: 15% of daily mined BTC (covers electricity + pool fees + margin)
  • No hidden fees — all-in pricing displayed upfront
  • Prices adjust weekly based on BTC difficulty + IDR/USD rate

Economics (transparent):

  • Pool fee: ~2% to mining pool
  • Electricity: ~8% (partner facility cost)
  • Platform margin: ~5%
  • User receives: ~85% of gross mining output

How It Works (User Journey)

  1. Sign up with phone number (OTP via WA/SMS)
  2. Choose a mining plan → pay with QRIS/GoPay/bank transfer
  3. Mining starts within 1 hour — see live hashrate on dashboard
  4. Daily rewards deposited to bitmine.id balance (in BTC, displayed in IDR equivalent)
  5. Withdraw anytime: to IDR (Midtrans payout to bank) or to external BTC wallet

Product 2: ETH Staking (Staking Ethereum)

Users pool ETH for validator staking. We operate validators via Lido/RocketPool or direct staking. ~3.5-5% APY.

Staking Plans

Plan Min Stake Lock Period Est. APY Fee
Flexible IDR 100,000 None (withdraw anytime) 2.0% 10% of rewards
30 Hari IDR 100,000 30 days 2.5% 8% of rewards
90 Hari IDR 500,000 90 days 3.0% 6% of rewards
365 Hari IDR 2,000,000 365 days 3.5-4.0% 5% of rewards

Note: APYs based on current ETH staking yield of 2-3% base + MEV boost. Actual yields fluctuate. "5%+ APY" is no longer realistic in 2026.

How it works:

  1. User deposits IDR → we convert to ETH at market rate (via exchange API)
  2. ETH pooled into validator nodes
  3. Staking rewards distributed daily, compounded automatically
  4. Withdrawal: back to IDR via Midtrans Iris, or to ETH wallet

Product 3: Member-Get-Member Affiliate System (Program Afiliasi)

HYIP-style multi-tier affiliate program. Commissions paid from platform's 15% maintenance fee — not from new deposits (sustainable, legal).

3-Tier Commission Structure

You (Sponsor)
├── Level 1: Direct referrals     → 8% of platform fee
├── Level 2: Referrals of L1      → 3% of platform fee
└── Level 3: Referrals of L2      → 1% of platform fee

What "% of platform fee" means:

  • Platform charges 15% maintenance fee on mined BTC
  • If your L1 referral mines 0.001 BTC/day → platform fee = 0.00015 BTC
  • Your L1 commission = 8% of 0.00015 = 0.000012 BTC/day (~IDR 18/day)
  • Same applies to staking: commission on platform's staking fee

Example: 10 direct referrals, each with IDR 2M contract

Level People Your Daily Commission
L1 (direct) 10 ~IDR 2,400/day
L2 (their refs) 30 ~IDR 2,700/day
L3 (L2's refs) 90 ~IDR 2,700/day
Total 130 ~IDR 7,800/day = IDR 234,000/month

Affiliate Ranks & Bonus Tiers

Rank Requirement L1 L2 L3 Bonus
Member Sign up 5% 1%
Miner 3+ active L1 referrals 8% 3% 1%
Foreman (Mandor) 10+ L1, total network ≥ IDR 10M 8% 3% 1% +1% L1 bonus
Supervisor 30+ L1, network ≥ IDR 50M 10% 4% 2% Monthly hash power bonus
Director 100+ L1, network ≥ IDR 200M 12% 5% 2% VIP support + exclusive plans
Ambassador (Duta) 300+ L1, network ≥ IDR 1B 15% 6% 3% Revenue share + custom contracts

Rank names use mining metaphors — feels organic, not MLM-ish.

Commission Types

Commission Trigger Rate Frequency
Mining commission L1/L2/L3 mines BTC 5-15% of platform fee Daily (with rewards)
Staking commission L1/L2/L3 earns staking 5-15% of platform fee Daily
Purchase bonus L1 buys new contract 3% of contract price (one-time) Instant
Simulation convert bonus L1 converts sim→real IDR 5,000 flat Instant
Rank-up bonus You reach new rank IDR 50K–500K (one-time) On promotion

Affiliate Dashboard Features

  • Network tree visualizer — see all 3 levels, who's active, who's mining
  • Real-time commission tracker — today, this week, this month, all-time
  • Commission withdrawal — min IDR 50,000, to bank account via Midtrans Iris
  • Affiliate link generator — custom links with UTM tracking
  • Promo materials — shareable banners, WA messages, TikTok scripts (Bahasa)
  • Leaderboard — top affiliates this month (with prizes)
  • Downline activity alerts — WA notification when L1/L2 signs up, purchases, or mines

Affiliate Marketing Tools (Built-in)

bitmine.id/ref/{username}           # Personal referral link
bitmine.id/ref/{username}?plan=pro  # Deep link to specific plan

Auto-generated shareable content:

  • WhatsApp message template: "Aku udah dapet IDR {X} dari tambang Bitcoin di bitmine.id. Coba gratis dulu: {link}"
  • Instagram/TikTok card: personalized OG image with earnings + QR code
  • "Bukti Transfer" screenshot template (commission payout proof — massive trust signal in Indonesian crypto community)

Sustainability Math

Total affiliate payout budget = 12% of gross maintenance fee (worst case, Ambassador level all 3 tiers)

Maintenance fee:        15% of mined BTC
Max affiliate payout:   L1 15% + L2 6% + L3 3% = 24% of maintenance fee
                        = 24% × 15% = 3.6% of gross mining output
Platform keeps:         15% - 3.6% = 11.4% of gross mining
Electricity/pool cost:  ~10% of gross mining
Net margin:             ~1.4% of gross mining (at max affiliate load)

At average rank (Miner, not Ambassador): affiliate load is ~12% of maintenance fee = 1.8% of gross. Platform keeps 13.2% - 10% cost = 3.2% net margin. Sustainable as long as user base grows.

Safety rails:

  • Commission caps: max IDR 10M/month per affiliate (prevents whale gaming)
  • Inactive pruning: L2/L3 commissions stop if referral's contract expires and not renewed for 30 days
  • Anti-fraud: same IP/device detection, KYC required for affiliate withdrawal
  • No commission on simulation (only real contracts generate affiliate income)

Product 4: Simulation Mode — "Tambang Simulasi" (Paper Trading)

Free cloud mining simulation using real market data. Users experience the full mining/staking lifecycle with virtual money before committing real IDR. This is the primary trust-building and onboarding funnel.

How Simulation Works

  1. Sign up — instant, no KYC needed
  2. Receive IDR 1,000,000 virtual balance ("Saldo Simulasi")
  3. "Purchase" any mining plan — with virtual money, activates simulated contract
  4. See real rewards — calculated from actual BTC difficulty, pool stats, market prices
  5. Track performance — full dashboard identical to real users, clearly labeled "SIMULASI"
  6. Compete — simulation leaderboard ("Siapa penambang simulasi terbaik?")
  7. Convert — after 7+ days, prompt to upgrade: "Siap tambang beneran? Mulai dari IDR 50,000"

Simulation Rules

  • Uses real market data (real BTC price, real difficulty, real pool stats) — not fake numbers
  • Rewards calculated identically to real contracts, just credited to virtual balance
  • Dashboard shows both "Saldo Simulasi" and "Saldo Nyata" (real) tabs — clearly separated
  • Simulation contracts expire after 30 days (encourages conversion)
  • No withdrawal of virtual funds (obviously)
  • Users can run simulation AND real contracts simultaneously
  • Leaderboard resets monthly

Simulation-to-Real Conversion Funnel

Day 0:  Sign up → auto-start 1 TH/s simulation (free)
Day 1:  WA message: "Selamat! Hari pertama kamu menghasilkan ~IDR 1,200 (simulasi)"
Day 3:  Push notification: "Kamu sudah 'menambang' IDR 3,600. Mau coba yang asli?"
Day 7:  Email/WA: "7 hari simulasi = IDR 8,400. Kontrak nyata mulai IDR 50,000"
Day 14: "Simulasi kamu berakhir dalam 16 hari. Upgrade sekarang, bonus 5% hash power!"
Day 25: "5 hari lagi simulasi berakhir. Jangan kehilangan momentum!"
Day 30: Simulation expires → "Mulai kontrak nyata" CTA

Conversion Incentives

  • First-purchase bonus: upgrade from simulation → 10% extra hash power on first contract
  • Simulation achievement badges → unlock real discount codes
  • "Teman Simulasi" referral: invite friends to try simulation → both get bonus virtual balance
  • Simulation ROI report: auto-generated "Kalau ini beneran, kamu sudah untung IDR X"

Why This Works in Indonesia

  • Trust deficit: 73% of Indonesians distrust crypto platforms (2025 survey) — simulation proves legitimacy
  • Price-sensitive market: users won't risk IDR 50K without proof → let them "try before buy"
  • Gamification culture: Indonesian users love leaderboards and achievements (see Shopee, Tokopedia gamification success)
  • WoM amplifier: "Coba dulu gratis" is inherently more shareable than "Bayar sekarang"

Technical Implementation

  • Same D1 tables as real contracts, with is_simulation BOOLEAN DEFAULT 0 column
  • Same reward calculation cron, filtered by simulation flag
  • Same dashboard UI, with orange "SIMULASI" badge overlay
  • Separate leaderboard table for simulation rankings
  • Conversion events tracked in audit_log for funnel analytics

Product 5: Education Hub (Akademi Crypto)

Free content to build trust and SEO:

  • "Apa Itu Bitcoin Mining?" — beginner guides
  • "Berapa Penghasilan Menambang Bitcoin?" — calculator tools
  • "Staking vs Mining" — comparison articles
  • Weekly market updates in Bahasa
  • Video tutorials (YouTube embeds)
  • Glossary (istilah crypto)

3. Revenue Model

Revenue Stream Rate Notes
Mining maintenance fee 15% of mined BTC Primary revenue
Staking commission 5-10% of staking rewards Secondary
IDR conversion spread 1-2% on buy/sell On deposits & withdrawals
Premium features Fixed fee Priority support, API access, advanced analytics
Partner ads Variable Crypto exchange referrals, hardware partners

Cost breakdown (per $100 mining contract):

Item % of gross mining Notes
User receives 85% After maintenance fee
Electricity + pool 10% Partner facility
Affiliate payout (avg) 1.8% 12% of maintenance fee at avg rank
Platform net 3.2% Pure margin

Note: Midtrans fees (~0.7% QRIS, ~2% eWallet, IDR 4K flat for VA) apply to the initial contract purchase as a one-time cost, NOT to the ongoing mining revenue split above. At avg IDR 500K contract, Midtrans fee ≈ IDR 3,500-10,000 (absorbed into platform net or passed to user as "payment processing fee").

Unit economics at scale:

  • 10,000 paying users × avg IDR 500K contract = IDR 5B gross
  • Mining maintenance fee = IDR 750M
  • Affiliate payouts = IDR 90M (12% of fee)
  • Net after costs = IDR 200M/month

4. Technical Architecture

100% Cloudflare Stack

bitmine.id
├── CF Worker (bitmine-id-web)        # Main app: SSR pages + API
├── D1 (bitmine_id_db)                # Users, contracts, balances, transactions
├── R2 (bitmine-id-assets)            # Static assets, KYC docs, receipts
├── KV (bitmine-id-sessions)          # Auth sessions, rate limiting
├── KV (bitmine-id-cache)             # Price cache, pool stats, market data
├── KV (bitmine-id-config)            # Feature flags, plan configs
├── Durable Objects (MiningCoordinator) # Real-time hashrate, live dashboard
├── Queue (bitmine-id-payouts)        # Payout processing queue
├── Queue (bitmine-id-rewards)        # Daily reward distribution
├── Cron Triggers                     # Reward calc, price sync, pool sync
└── Workers AI                        # AI chat support, content gen

Code Structure

web/bitmine.id/worker-cf/
├── wrangler.toml
├── schema.sql                 # D1 schema
├── seed.sql                   # Initial data (plans, config)
├── src/
│   ├── index.js               # Worker entry + route dispatcher
│   ├── lib/
│   │   ├── auth.js            # Phone OTP + JWT sessions
│   │   ├── midtrans.js         # Payment: Snap token, notification handler, Iris payout
│   │   ├── mining-pool.js     # Pool API integration (hashrate, rewards)
│   │   ├── staking.js         # ETH staking pool integration
│   │   ├── pricing.js         # Dynamic pricing engine (BTC difficulty, FX)
│   │   ├── rewards.js         # Daily reward calculation + distribution
│   │   ├── crypto-rates.js    # BTC/ETH price feeds (CoinGecko free API)
│   │   ├── wa-otp.js          # WhatsApp OTP via WA Business API
│   │   └── cache.js           # KV cache helpers
│   ├── routes/
│   │   ├── auth.js            # Login, register, OTP verify, profile
│   │   ├── mining.js          # Browse plans, purchase, manage contracts
│   │   ├── staking.js         # Stake, unstake, view rewards
│   │   ├── dashboard.js       # User dashboard (SSR)
│   │   ├── wallet.js          # Balance, deposit, withdraw, history
│   │   ├── payments.js        # Midtrans Snap create/notification handlers
│   │   ├── simulation.js      # Simulation: start, dashboard, leaderboard, convert
│   │   ├── affiliate.js       # 3-tier affiliate: network tree, commissions, ranks, withdraw
│   │   ├── education.js       # Articles, calculator, glossary (SSR for SEO)
│   │   ├── admin.js           # Admin panel: users, contracts, payouts
│   │   └── api.js             # Public API (rates, plans, stats)
│   ├── pages/                 # HTML templates (SSR)
│   │   ├── landing.js         # Homepage
│   │   ├── mining-plans.js    # Plan listing + purchase flow
│   │   ├── staking.js         # Staking interface
│   │   ├── dashboard.js       # User dashboard
│   │   ├── wallet.js          # Wallet & transactions
│   │   ├── article.js         # Education articles
│   │   └── components/        # Shared: header, footer, nav, cards
│   └── cron/
│       ├── distribute-rewards.js   # Daily: calculate + credit mining rewards
│       ├── sync-pool-stats.js      # Hourly: fetch pool hashrate + blocks
│       ├── update-prices.js        # Every 5min: BTC/ETH/IDR rates
│       ├── process-payouts.js      # Every 6h: batch Midtrans Iris payouts
│       ├── expire-contracts.js     # Daily: mark expired contracts
│       └── difficulty-adjust.js    # Daily: recalculate plan pricing
└── web/                       # Static frontend assets
    ├── css/
    ├── js/
    └── images/

D1 Schema (Key Tables)

-- Users
CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  phone TEXT UNIQUE NOT NULL,
  phone_verified INTEGER DEFAULT 0,
  email TEXT,
  name TEXT,
  password_hash TEXT,
  affiliate_code TEXT UNIQUE, -- e.g. 'BUDI2026', auto-generated or custom
  sponsor_id INTEGER REFERENCES users(id), -- who referred this user
  kyc_status TEXT DEFAULT 'none', -- none, pending, verified, rejected
  kyc_doc_r2_key TEXT,
  btc_wallet_address TEXT,
  eth_wallet_address TEXT,
  role TEXT DEFAULT 'user', -- user, admin
  created_at TEXT DEFAULT (datetime('now')),
  last_login TEXT
);

-- Mining Plans (configurable)
CREATE TABLE mining_plans (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  slug TEXT UNIQUE NOT NULL,
  name TEXT NOT NULL,
  name_id TEXT NOT NULL, -- Bahasa Indonesia name
  hash_power_ths REAL NOT NULL, -- TH/s
  duration_days INTEGER NOT NULL,
  price_idr INTEGER NOT NULL,
  maintenance_fee_pct REAL DEFAULT 15.0,
  is_active INTEGER DEFAULT 1,
  sort_order INTEGER DEFAULT 0,
  created_at TEXT DEFAULT (datetime('now'))
);

-- User Mining Contracts
CREATE TABLE mining_contracts (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  plan_id INTEGER NOT NULL REFERENCES mining_plans(id),
  hash_power_ths REAL NOT NULL,
  status TEXT DEFAULT 'pending', -- pending, active, expired, cancelled
  start_date TEXT,
  end_date TEXT,
  total_mined_btc REAL DEFAULT 0,
  total_mined_idr REAL DEFAULT 0,
  is_simulation INTEGER DEFAULT 0, -- 1 = paper trading, 0 = real
  payment_id INTEGER REFERENCES payments(id),
  created_at TEXT DEFAULT (datetime('now'))
);

-- Simulation Leaderboard (materialized weekly)
CREATE TABLE simulation_leaderboard (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  period TEXT NOT NULL, -- '2026-05' (monthly)
  total_virtual_btc REAL DEFAULT 0,
  total_virtual_idr INTEGER DEFAULT 0,
  rank INTEGER,
  badge TEXT, -- 'gold', 'silver', 'bronze'
  converted_to_real INTEGER DEFAULT 0, -- tracked for funnel analytics
  UNIQUE(user_id, period)
);

-- Staking Plans
CREATE TABLE staking_plans (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  slug TEXT UNIQUE NOT NULL,
  name TEXT NOT NULL,
  name_id TEXT NOT NULL,
  lock_days INTEGER NOT NULL, -- 0 = flexible
  min_amount_idr INTEGER NOT NULL,
  apy_pct REAL NOT NULL,
  commission_pct REAL NOT NULL, -- platform commission on rewards
  is_active INTEGER DEFAULT 1,
  sort_order INTEGER DEFAULT 0
);

-- User Staking Positions
CREATE TABLE staking_positions (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  plan_id INTEGER NOT NULL REFERENCES staking_plans(id),
  amount_idr INTEGER NOT NULL,
  amount_eth REAL NOT NULL,
  eth_price_at_entry REAL NOT NULL,
  is_simulation INTEGER DEFAULT 0,
  status TEXT DEFAULT 'active', -- active, unstaking, completed
  start_date TEXT DEFAULT (datetime('now')),
  unlock_date TEXT, -- NULL for flexible
  total_rewards_eth REAL DEFAULT 0,
  total_rewards_idr REAL DEFAULT 0,
  payment_id INTEGER REFERENCES payments(id)
);

-- Wallet Balances
CREATE TABLE wallets (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER UNIQUE NOT NULL REFERENCES users(id),
  btc_balance REAL DEFAULT 0, -- from mining rewards
  eth_balance REAL DEFAULT 0, -- from staking rewards
  idr_balance INTEGER DEFAULT 0, -- pending withdrawal
  sim_btc_balance REAL DEFAULT 0, -- simulation BTC
  sim_eth_balance REAL DEFAULT 0, -- simulation ETH
  sim_idr_balance INTEGER DEFAULT 1000000, -- starts with IDR 1M virtual
  total_deposited_idr INTEGER DEFAULT 0,
  total_withdrawn_idr INTEGER DEFAULT 0,
  updated_at TEXT DEFAULT (datetime('now'))
);

-- Daily Mining Rewards
CREATE TABLE mining_rewards (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  contract_id INTEGER NOT NULL REFERENCES mining_contracts(id),
  user_id INTEGER NOT NULL REFERENCES users(id),
  date TEXT NOT NULL, -- YYYY-MM-DD
  gross_btc REAL NOT NULL,
  maintenance_fee_btc REAL NOT NULL,
  net_btc REAL NOT NULL,
  btc_price_usd REAL,
  idr_equivalent INTEGER,
  pool_block_height INTEGER,
  created_at TEXT DEFAULT (datetime('now')),
  UNIQUE(contract_id, date)
);

-- Daily Staking Rewards
CREATE TABLE staking_rewards (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  position_id INTEGER NOT NULL REFERENCES staking_positions(id),
  user_id INTEGER NOT NULL REFERENCES users(id),
  date TEXT NOT NULL,
  reward_eth REAL NOT NULL,
  commission_eth REAL NOT NULL,
  net_eth REAL NOT NULL,
  eth_price_usd REAL,
  idr_equivalent INTEGER,
  created_at TEXT DEFAULT (datetime('now')),
  UNIQUE(position_id, date)
);

-- Payments (Midtrans Snap)
CREATE TABLE payments (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  type TEXT NOT NULL, -- mining_purchase, staking_deposit, withdrawal
  amount_idr INTEGER NOT NULL,
  status TEXT DEFAULT 'pending', -- pending, paid, failed, refunded
  payment_method TEXT, -- qris, gopay, ovo, dana, va_bca, va_bni, etc.
  midtrans_order_id TEXT,
  midtrans_snap_token TEXT,
  midtrans_transaction_id TEXT,
  reference_id TEXT, -- contract_id or position_id
  created_at TEXT DEFAULT (datetime('now')),
  paid_at TEXT
);

-- Withdrawals
CREATE TABLE withdrawals (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  amount_idr INTEGER NOT NULL,
  destination_type TEXT NOT NULL, -- bank, btc_wallet, eth_wallet
  destination_detail TEXT NOT NULL, -- bank acc number or wallet address
  bank_code TEXT,
  status TEXT DEFAULT 'pending', -- pending, processing, completed, failed
  midtrans_iris_id TEXT,
  admin_note TEXT,
  created_at TEXT DEFAULT (datetime('now')),
  processed_at TEXT
);

-- Affiliate Network (3-tier tree)
CREATE TABLE affiliate_tree (
  user_id INTEGER PRIMARY KEY REFERENCES users(id),
  sponsor_id INTEGER REFERENCES users(id),        -- L1 (direct upline)
  sponsor_l2_id INTEGER REFERENCES users(id),      -- L2 (sponsor's sponsor)
  sponsor_l3_id INTEGER REFERENCES users(id),      -- L3 (sponsor's sponsor's sponsor)
  rank TEXT DEFAULT 'member', -- member, miner, foreman, supervisor, director, ambassador
  total_l1_count INTEGER DEFAULT 0,
  total_l2_count INTEGER DEFAULT 0,
  total_l3_count INTEGER DEFAULT 0,
  active_l1_count INTEGER DEFAULT 0, -- with active contracts
  network_total_idr INTEGER DEFAULT 0, -- total network contract value
  total_earned_idr INTEGER DEFAULT 0,
  joined_at TEXT DEFAULT (datetime('now'))
);

-- Affiliate Commissions (daily, per-reward)
CREATE TABLE affiliate_commissions (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  affiliate_id INTEGER NOT NULL REFERENCES users(id),   -- who earns
  source_user_id INTEGER NOT NULL REFERENCES users(id), -- whose activity generated it
  level INTEGER NOT NULL, -- 1, 2, or 3
  commission_type TEXT NOT NULL, -- mining_daily, staking_daily, purchase_bonus, convert_bonus, rank_bonus
  source_id INTEGER, -- mining_rewards.id, staking_rewards.id, or payments.id
  gross_fee_btc REAL, -- platform fee that commission is based on
  commission_pct REAL NOT NULL, -- 5-15%
  amount_btc REAL DEFAULT 0,
  amount_idr INTEGER DEFAULT 0,
  status TEXT DEFAULT 'pending', -- pending, credited, withdrawn
  created_at TEXT DEFAULT (datetime('now'))
);
CREATE INDEX idx_aff_comm_affiliate ON affiliate_commissions(affiliate_id, status);
CREATE INDEX idx_aff_comm_date ON affiliate_commissions(created_at);

-- Affiliate Withdrawals
CREATE TABLE affiliate_withdrawals (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  affiliate_id INTEGER NOT NULL REFERENCES users(id),
  amount_idr INTEGER NOT NULL,
  destination_type TEXT NOT NULL, -- bank, ewallet
  destination_detail TEXT NOT NULL,
  bank_code TEXT,
  status TEXT DEFAULT 'pending', -- pending, processing, completed, failed
  midtrans_iris_id TEXT,
  created_at TEXT DEFAULT (datetime('now')),
  processed_at TEXT
);

-- Affiliate Rank History
CREATE TABLE affiliate_rank_history (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER NOT NULL REFERENCES users(id),
  old_rank TEXT,
  new_rank TEXT NOT NULL,
  bonus_idr INTEGER DEFAULT 0, -- rank-up bonus
  promoted_at TEXT DEFAULT (datetime('now'))
);

-- Education Articles (SEO)
CREATE TABLE articles (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  slug TEXT UNIQUE NOT NULL,
  title TEXT NOT NULL,
  title_en TEXT,
  excerpt TEXT,
  content TEXT NOT NULL, -- markdown
  category TEXT, -- mining, staking, beginner, market, tutorial
  cover_image TEXT,
  meta_description TEXT,
  published INTEGER DEFAULT 0,
  view_count INTEGER DEFAULT 0,
  created_at TEXT DEFAULT (datetime('now')),
  updated_at TEXT
);

-- Price History (for charts)
CREATE TABLE price_history (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  asset TEXT NOT NULL, -- btc, eth
  price_usd REAL NOT NULL,
  price_idr REAL NOT NULL,
  timestamp TEXT DEFAULT (datetime('now'))
);

-- Pool Stats (for transparency dashboard)
CREATE TABLE pool_stats (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  pool_name TEXT NOT NULL,
  total_hashrate_ths REAL,
  blocks_found_24h INTEGER,
  avg_block_reward_btc REAL,
  timestamp TEXT DEFAULT (datetime('now'))
);

-- Audit Log
CREATE TABLE audit_log (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  user_id INTEGER,
  action TEXT NOT NULL,
  details TEXT,
  ip_address TEXT,
  created_at TEXT DEFAULT (datetime('now'))
);

-- Config (dynamic settings)
CREATE TABLE config (
  key TEXT PRIMARY KEY,
  value TEXT NOT NULL,
  updated_at TEXT DEFAULT (datetime('now'))
);

Cron Schedule

Trigger Frequency Job
*/5 * * * * Every 5 min update-prices — fetch BTC/ETH/IDR from CoinGecko
0 * * * * Hourly sync-pool-stats — fetch hashrate, blocks from pool API
0 1 * * * Daily 01:00 UTC distribute-rewards — calculate + credit mining/staking rewards
0 7 * * * Daily 07:00 UTC expire-contracts — mark expired mining contracts
0 */6 * * * Every 6 hours process-payouts — batch Midtrans Iris payouts for withdrawals
0 2 * * 1 Weekly Monday difficulty-adjust — recalculate plan pricing based on new difficulty
0 2 * * * Daily 02:00 UTC calc-affiliate-commissions — calculate L1/L2/L3 commissions from yesterday's rewards
0 3 * * 1 Weekly Monday check-rank-promotions — evaluate affiliate ranks, process rank-up bonuses
0 */6 * * * Every 6 hours process-affiliate-payouts — batch Midtrans Iris payouts for affiliate withdrawals

Payment Flow (Midtrans Snap)

User selects plan → POST /api/payments/create
  ├─ Creates payment record (status: pending)
  ├─ Calls Midtrans Snap API → createTransaction(order_id, amount, item_details)
  ├─ Returns snap_token → frontend opens Snap.js payment popup
  │   (Snap handles all payment methods: QRIS, GoPay, OVO, DANA, BCA VA, etc.)
  │
  ├─ User pays via QRIS / GoPay / OVO / Bank Transfer
  │
  └─ Midtrans notification → POST /webhooks/midtrans
      ├─ Verify SHA-512 signature (order_id + status_code + gross_amount + server_key)
      ├─ Check transaction_status: 'capture'/'settlement' = paid
      ├─ Update payment status → 'paid'
      ├─ If mining: activate contract, start hashrate
      ├─ If staking: create position, convert IDR→ETH at market rate
      ├─ Credit referral bonus (if referred)
      └─ Send WA notification to user

Midtrans Snap advantage: One integration handles ALL payment methods. No separate code paths for QRIS, eWallet, VA. The Snap popup auto-detects available methods based on user's device and shows the best options first.

Withdrawal Flow

User requests withdrawal → POST /api/wallet/withdraw
  ├─ Validate: balance >= amount, min IDR 50,000
  ├─ KYC check: must be verified for > IDR 1,000,000
  ├─ Create withdrawal record (status: pending)
  ├─ Queue: bitmine-id-payouts
  │
  └─ Cron processes queue every 6h:
      ├─ Batch payouts via Midtrans Iris API (createPayout)
      ├─ Update status → 'completed' / 'failed'
      └─ WA notification to user

5. Pages & UI Structure

Information Architecture

bitmine.id/
├── /                          # Landing page (hero + plans + trust signals + CTA)
├── /tambang                   # BTC Mining plans listing
├── /tambang/:slug             # Plan detail + purchase flow
├── /staking                   # ETH Staking plans listing
├── /staking/:slug             # Staking plan detail + deposit flow
├── /kalkulator                # Mining profitability calculator (SEO magnet)
├── /harga                     # Live BTC/ETH prices + charts
│
├── /simulasi                  # Simulation landing (explain + start free)
├── /simulasi/leaderboard      # Simulation leaderboard (monthly)
│
├── /dashboard                 # User dashboard (overview of all contracts + rewards)
├── /dashboard/tambang         # My mining contracts (real + simulation tabs)
├── /dashboard/staking         # My staking positions (real + simulation tabs)
├── /dashboard/dompet          # Wallet: balance, deposit, withdraw, history
├── /dashboard/afiliasi        # Affiliate: network tree, commissions, ranks
├── /dashboard/afiliasi/tarik  # Affiliate commission withdrawal
├── /ref/:code                 # Affiliate landing page (personalized)
├── /dashboard/profil          # Profile, KYC upload, security settings
│
├── /akademi                   # Education hub (article listing)
├── /akademi/:slug             # Article detail (SSR for SEO)
├── /glossary                  # Crypto glossary A-Z
├── /faq                       # FAQ page (with FAQPage schema)
│
├── /tentang                   # About us + team + transparency report
├── /transparansi              # Live pool stats, hashrate proof, block explorer links
├── /syarat                    # Terms of service
├── /privasi                   # Privacy policy
├── /kontak                    # Contact + WA link
│
├── /api/v1/                   # Public API (rates, plans, stats)
├── /llms.txt                  # AI agent discovery
├── /sitemap.xml               # Dynamic sitemap
└── /admin                     # Admin panel (CF Access protected)

Landing Page Sections (Mobile-First)

  1. Hero — "Mulai Tambang Bitcoin dari HP — Coba GRATIS Dulu!" + animated hashrate counter + dual CTA: "Coba Simulasi (Gratis)" | "Langsung Tambang"
  2. Trust bar — "10,000+ Penambang | 500+ BTC Ditambang | Rating 4.8/5"
  3. Simulation teaser — "Dapat IDR 1 Juta virtual. Tambang 30 hari. Lihat hasilnya. Gratis." + Start button
  4. How it works — 3-step horizontal swipe cards (Coba Gratis → Lihat Hasil → Tambang Beneran)
  5. Mining plans — Horizontal card carousel with snap-scroll
  6. Staking section — APY comparison cards
  7. Live stats — Real-time BTC price, network hashrate, difficulty
  8. Calculator widget — Inline profitability calc (enter budget → see daily/monthly estimate)
  9. Testimonials — Swipeable user stories with WA-style message bubbles
  10. Education teaser — Latest 3 articles
  11. Simulation leaderboard preview — Top 5 simulation miners this month
  12. FAQ accordion — Top 5 questions (with FAQPage schema)
  13. CTA — "Coba Tambang Simulasi — GRATIS" → bottom-fixed button on mobile (lowers barrier vs "buy now")

Dashboard (Post-Login)

  • Overview tab: Total balance (BTC + ETH + IDR), today's earnings, active contracts chart
  • Mining tab: Contract cards with hashrate gauge, daily reward history chart
  • Staking tab: Position cards with APY indicator, reward compounding visualizer
  • Wallet tab: Balance cards, deposit/withdraw buttons, transaction history with filters
  • Referral tab: Shareable link, commission tracker, leaderboard

6. Trust & Transparency System

This is the #1 differentiator. Indonesian crypto users have been burned by scams.

Transparency Dashboard (/transparansi)

  • Live pool hashrate — real data from pool API, updated hourly
  • Block explorer links — every mined block linked to blockchain.com/btc.com
  • Total users / Total hash power — aggregate stats (anonymized)
  • Reward distribution history — last 30 days of payouts with on-chain proof
  • Mining facility photos — (from partner, R2-hosted)
  • Third-party audit badge — when available

Trust Signals (Every Page)

  • "Terdaftar di Bappebti" badge (when applicable, or "proses pendaftaran")
  • SSL + Cloudflare security badge
  • Midtrans verified merchant badge
  • Real-time "X orang sedang menambang" (live mining counter via Durable Object)
  • WhatsApp CS button (always visible)
  • Google Reviews / Trustpilot widget

Anti-Fraud Measures

  • KYC required for withdrawals > IDR 1,000,000
  • Withdrawal cooling period (24h for first withdrawal)
  • 2FA via WhatsApp OTP
  • Suspicious activity alerts
  • Rate limiting on all financial endpoints

7. SEO & Growth Strategy

Programmatic SEO Pages

  • /tambang-bitcoin-{city} — "Tambang Bitcoin di Jakarta/Surabaya/Bandung/..." (514 cities)
  • /berapa-hasil-tambang-{x}-thash — "Berapa Hasil Tambang {X} TH/s?" (dynamic calculator)
  • /perbandingan/{a}-vs-{b} — "Bitcoin vs Ethereum Mining" comparisons
  • /harga-bitcoin-hari-ini — Daily updated price page (huge search volume)

Target Keywords (Bahasa Indonesia)

Keyword Search Vol (est) Difficulty
"cloud mining bitcoin" 5,400/mo Medium
"tambang bitcoin" 3,600/mo Low
"staking ethereum" 2,900/mo Medium
"mining bitcoin gratis" 8,100/mo High
"cara menambang bitcoin" 6,600/mo Medium
"penghasilan mining bitcoin" 1,900/mo Low
"cloud mining terpercaya" 1,300/mo Low
"harga bitcoin hari ini" 40,500/mo High

Content Calendar (First 90 Days)

  • Week 1-4: 20 foundational articles (what is mining, how staking works, etc.)
  • Week 5-8: 10 comparison articles + calculator tools
  • Week 9-12: City-specific landing pages (top 50 cities)
  • Ongoing: Weekly market updates, monthly portfolio reports

Growth Channels

  1. WhatsApp Communities — "Komunitas Penambang Indonesia" groups, max 1024 members each

    • Daily: BTC price update + mining tip
    • Weekly: Top earner spotlight
    • Monthly: AMA with team
  2. TikTok / Reels — Short-form content

    • "Berapa hasil tambang IDR 50,000 sehari?" — show dashboard
    • "Bitcoin mining di HP?!" — behind the scenes
    • "Gaji pertama dari mining" — user testimonials
  3. Simulation viral loop (the killer growth hack)

    • "Coba tambang Bitcoin gratis — tanpa deposit" → share to WA/TikTok
    • Auto-generated shareable cards: "Aku sudah 'menambang' IDR 12,000 dalam 10 hari (simulasi). Coba juga!"
    • Simulation leaderboard competitions → share rank on social
    • "Tantang teman" — challenge friends to beat your simulation returns
  4. Referral viral loop

    • "Ajak 3 teman, dapat 1 TH/s GRATIS" — time-limited campaigns
    • Shareable earning cards (OG image with personalized stats)
  5. Telegram group — For crypto-native audience

  6. IndexNow — Instant indexing for new articles/price pages

  7. Cross-site via flio.net — Interlink with other portfolio sites

AEO (AI Engine Optimization)

  • /llms.txt — Site purpose, product descriptions, FAQ answers
  • FAQPage schema on every informational page
  • "Apa itu cloud mining?" definitional paragraphs at top of articles
  • Structured data: Product schema on plans, Organization schema site-wide

8. Regulatory & Compliance

Indonesian Crypto Regulation

  • Bappebti (now transitioning to OJK as of Jan 2025) regulates crypto as commodity futures
  • Cloud mining is not explicitly regulated as an exchange, but financial service rules apply
  • Required: PSE registration (Penyelenggara Sistem Elektronik) with Kominfo
  • KYC/AML: Required for transactions > IDR 1,000,000 (PP 68/2024)
  • Tax: Crypto income taxed as PPh 22 (0.1% on transaction value) + PPN 0.11%

Compliance Checklist

  • PSE registration with Kominfo
  • Bappebti/OJK consultation letter (advisory)
  • Terms of Service with risk disclaimers (Bahasa Indonesia)
  • Privacy Policy (UU PDP compliant — UU 27/2022)
  • KYC process: KTP photo + selfie + phone verification
  • AML monitoring: flag transactions > IDR 100,000,000
  • Tax reporting features for users (annual earnings summary)
  • Risk warnings on every purchase page ("Investasi crypto memiliki risiko tinggi")

Legal Disclaimers (Every Page Footer)

Peringatan Risiko: Cloud mining dan staking cryptocurrency memiliki risiko tinggi
termasuk kehilangan seluruh modal. Hasil di masa lalu tidak menjamin hasil di masa
depan. bitmine.id bukan penasihat investasi. Lakukan riset sendiri sebelum berinvestasi.

9. Monetization Math

Conservative Scenario (Year 1)

Metric Month 1 Month 3 Month 6 Month 12
Registered users (simulation) 2,000 15,000 50,000 150,000
Simulation → Real conversion 2.5% 3% 4% 5%
Paying users 50 450 2,000 7,500
Avg contract value IDR 200K IDR 300K IDR 400K IDR 500K
Monthly revenue IDR 10M IDR 135M IDR 800M IDR 3.75B
Maintenance fee income IDR 1.5M IDR 20M IDR 120M IDR 562M
Staking commission IDR 200K IDR 5M IDR 35M IDR 150M
Monthly profit IDR 1.7M IDR 25M IDR 155M IDR 712M

Simulation economics: Simulation users cost almost nothing to serve (same cron calculates rewards for real + virtual using real market data, no pool fees on virtual). The only cost is D1 storage (~$0.001/user/month). At 5% conversion, each simulation user is worth ~IDR 25,000 in LTV — far cheaper than paid acquisition.

Cost Structure

Item Monthly Cost
Cloudflare (Workers Paid) $5
Mining pool partnership Revenue share (included in maintenance fee)
Midtrans transaction fees ~2.9% of GMV (QRIS 0.7%, eWallet 2%, VA IDR 4K flat)
WA Business API IDR 500K
Content creation IDR 2M
Customer support (1 person) IDR 5M
Legal/compliance IDR 3M (amortized)
Total fixed cost ~IDR 11M/mo

10. Implementation Phases

Phase 1: MVP — Simulation + Real Mining (2 weeks)

Goal: Launch simulation mode (free) + BTC cloud mining with Midtrans payments

  • CF Worker + D1 schema + R2 bucket setup
  • Landing page (SSR, mobile-first, SEO-optimized)
  • User auth (phone OTP via WA Business API)
  • Simulation mode: auto-start 1 TH/s virtual contract on signup
  • Simulation dashboard with real market data rewards
  • Simulation leaderboard (monthly)
  • Simulation → Real conversion prompts (WA drip messages)
  • Mining plan listing + detail pages (real contracts)
  • Midtrans Snap payment integration (unified checkout — all methods in one)
  • Basic dashboard (real + simulation tabs, clearly labeled)
  • Webhook handler for payment confirmation
  • Mining profitability calculator page
  • 5 seed education articles
  • /llms.txt, sitemap.xml, robots.txt
  • OG images + social sharing
  • WhatsApp CS button

Note: Simulation uses real BTC difficulty + price data to calculate virtual rewards. Real contracts also use pool averages initially while partner integration is finalized (clearly labeled as "estimated").

Phase 2: Real Mining Integration (2 weeks)

Goal: Connect to mining pools, distribute real rewards

  • Mining pool API integration (Foundry/Antpool)
  • Daily reward calculation cron
  • Real-time hashrate dashboard
  • Wallet system (BTC balance + IDR conversion)
  • Withdrawal flow (Midtrans Iris payout to bank)
  • Transparency dashboard with pool proof
  • KYC upload + verification flow
  • Email/WA notifications for rewards
  • 10 more education articles

Phase 3: ETH Staking (2 weeks)

Goal: Add staking product

  • Staking plan listing + deposit flow
  • ETH price feed integration
  • Staking reward distribution cron
  • Unstaking + withdrawal flow
  • Staking dashboard tab
  • Comparison tools (mining vs staking)
  • 10 staking education articles

Phase 4: Affiliate Engine + Growth (2 weeks)

Goal: 3-tier member-get-member affiliate system + programmatic SEO

  • Affiliate tree (sponsor_id → L1/L2/L3 auto-populated on signup)
  • Daily affiliate commission calculation cron (% of platform fees)
  • Affiliate ranks + auto-promotion cron
  • Affiliate dashboard (network tree, commissions, rank progress)
  • Affiliate withdrawal via Midtrans Iris payout
  • Personalized referral landing page (/ref/:code)
  • Auto-generated shareable content (WA templates, "bukti transfer" cards)
  • Affiliate leaderboard (top earners this month)
  • Programmatic city pages (top 50)
  • Calculator variations for SEO
  • TikTok content strategy launch
  • WhatsApp community setup (5 initial groups)
  • IndexNow integration
  • Push notifications via Service Worker

Phase 5: Advanced Features (Ongoing)

  • Durable Object: live visitor/miner count
  • AI chat support (Workers AI — answer mining questions)
  • Advanced analytics dashboard (charts, projections)
  • Multi-language (EN toggle)
  • API for third-party integrations
  • Mobile app wrapper (Capacitor.js)
  • Premium tier with priority support
  • Telegram bot for price alerts + reward notifications

11. Cloudflare Resource Map

Resource Name Purpose
Worker bitmine-id-web Main app (SSR + API)
D1 bitmine_id_db All relational data
R2 bitmine-id-assets Images, KYC docs, receipts
KV bitmine-id-sessions Auth sessions
KV bitmine-id-cache Price feeds, pool stats
KV bitmine-id-config Feature flags, plan configs
Queue bitmine-id-payouts Withdrawal processing
Queue bitmine-id-rewards Daily reward distribution
DO MiningCoordinator Live counters, rate limiting
Cron 7 triggers See cron schedule above
Custom domain bitmine.id, www.bitmine.id

Wrangler Secrets

MIDTRANS_SERVER_KEY       # Midtrans Server Key (sandbox/production)
MIDTRANS_CLIENT_KEY       # Midtrans Client Key (for Snap.js frontend)
MIDTRANS_IRIS_KEY         # Midtrans Iris API Key (payouts/disbursements)
WA_BUSINESS_TOKEN         # WhatsApp Business API
COINGECKO_API_KEY         # Price feeds (free tier OK)
MINING_POOL_API_KEY       # Pool API access
ADMIN_PASSWORD            # Admin panel auth
JWT_SECRET                # Session signing

12. Risk Mitigation

Risk Likelihood Impact Mitigation
BTC price crash Medium High Dynamic pricing, transparent disclaimers, staking as hedge
Mining difficulty spike Medium Medium Weekly price recalculation, transparent fee display
Pool downtime Low High Multi-pool failover, clear SLA communication
Regulatory crackdown Medium High PSE registration, legal counsel, compliance-first design
Midtrans account suspension Low Critical Keep reserve funds, comply with Midtrans TOS, backup payment provider (DOKU, Flip)
Scam reputation High Critical Transparency dashboard, block explorer proofs, KYC, WA support
Competition Medium Medium Indonesian language moat, local payments, education content

13. Key Differentiators vs International Competitors

  1. Free simulation mode — "coba dulu gratis" eliminates trust barrier, no competitor offers this
  2. 3-tier affiliate commissions — HYIP-style member-get-member, earn from 3 levels of downline
  3. Bahasa Indonesia first — not a translation, native UX
  4. IDR micro-entry — IDR 50,000 minimum ($3), not $100+
  5. QRIS/GoPay/OVO — pay like buying pulsa, not wire transfer
  6. WhatsApp-native support — not email tickets
  7. Transparency obsession — pool proof, block explorer, real hashrate
  8. Education-first — teach before selling, build trust
  9. Referral engine — Indonesian word-of-mouth culture
  10. AI chat — answer mining questions 24/7 in Bahasa
  11. IDR payouts — withdraw to local bank, not crypto-only
  12. Mobile-first UX — designed for 95% mobile Indonesian internet users

14. Design System — "Digital Gold" (Adapted from inihari.com)

Same native-app architecture as inihari.com (auto-hide header, bottom nav, glass cards, blur blobs, skeleton loading, pull-to-refresh), but with a crypto/mining identity: dark-default, amber/gold for BTC, indigo/purple for ETH.

Color Palette

Dark Theme (Default)

:root, html.dark {
  /* Backgrounds — near-black, subtle warm tint */
  --bg-base: #0a0a0c;
  --bg-card: #111114;
  --bg-card-hover: #17171b;
  --bg-elevated: #1c1c21;
  --bg-input: #0d0d10;
  --bg-sidebar: #0e0e11;

  /* Borders */
  --border: #222228;
  --border-hover: #333340;
  --border-accent: rgba(245, 158, 11, 0.3);

  /* Text */
  --text-primary: #fafafa;
  --text-secondary: #a0a0ab;
  --text-muted: #666675;
  --text-inverse: #0a0a0c;

  color-scheme: dark;
}

Light Theme

html.light {
  --bg-base: #f9f9fb;
  --bg-card: #ffffff;
  --bg-card-hover: #f2f2f5;
  --bg-elevated: #eaeaef;
  --bg-input: #ffffff;
  --bg-sidebar: #f2f2f5;
  --border: #dde0e6;
  --border-hover: #ccd0d8;
  --border-accent: rgba(217, 119, 6, 0.2);
  --text-primary: #1a1a2e;
  --text-secondary: #4a5060;
  --text-muted: #888898;
  --text-inverse: #fafafa;
  color-scheme: light;
}

Accent Colors (Shared)

:root {
  /* Primary: Amber/Gold — Bitcoin identity, wealth, trust */
  --accent: #f59e0b;
  --accent-light: #fbbf24;
  --accent-dark: #d97706;
  --accent-glow: rgba(245, 158, 11, 0.15);
  --accent-glow-strong: rgba(245, 158, 11, 0.3);

  /* Secondary: Indigo — ETH staking, technology, depth */
  --secondary: #6366f1;
  --secondary-light: #818cf8;
  --secondary-dark: #4f46e5;
  --secondary-glow: rgba(99, 102, 241, 0.15);

  /* Financial indicators */
  --profit: #22c55e;       /* Green — gains, active, success */
  --profit-glow: rgba(34, 197, 94, 0.15);
  --loss: #ef4444;         /* Red — losses, errors, warnings */
  --loss-glow: rgba(239, 68, 68, 0.15);
  --neutral: #eab308;      /* Yellow — pending, caution */

  /* Product-specific */
  --btc: #f7931a;          /* Official Bitcoin orange */
  --btc-glow: rgba(247, 147, 26, 0.15);
  --eth: #627eea;          /* Official Ethereum blue */
  --eth-glow: rgba(98, 126, 234, 0.15);

  /* Simulation mode */
  --sim: #f97316;          /* Orange — clearly different from real */
  --sim-glow: rgba(249, 115, 22, 0.15);

  /* Affiliate ranks */
  --rank-member: #64748b;
  --rank-miner: #f59e0b;
  --rank-foreman: #f97316;
  --rank-supervisor: #ef4444;
  --rank-director: #a855f7;
  --rank-ambassador: #fbbf24;

  /* Gradients */
  --gradient-start: #f59e0b;  /* Gold */
  --gradient-mid: #f97316;    /* Orange */
  --gradient-end: #ef4444;    /* Red — energy/power */

  /* ETH gradient */
  --gradient-eth-start: #627eea;
  --gradient-eth-mid: #6366f1;
  --gradient-eth-end: #818cf8;
}

Typography

@theme inline {
  --font-sans: "Inter", system-ui, -apple-system, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, monospace;
}

html { font-size: 14px; }
Element Size Weight Color
Page title 20px 700 --text-primary
Section header 15px 700 --text-primary
Card title 14px 600 --text-primary
Body text 14px 400 --text-secondary
Label/caption 12px 500 --text-muted
Badge text 11px 600 varies
Data number (large) 24-32px 700 --accent / --profit
Monospace data 13px 400 --font-mono

Component System (Ported from inihari.com)

Glass Cards

.glass-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px; /* slightly more rounded than inihari's 8px — more app-like */
  transition: border-color 0.2s ease;
}
.glass-card:hover { border-color: var(--border-hover); }

Mining-Specific Cards

/* Active mining contract card — subtle gold border glow */
.mining-card-active {
  background: var(--bg-card);
  border: 1px solid rgba(247, 147, 26, 0.3);
  border-radius: 12px;
  box-shadow: 0 0 20px rgba(247, 147, 26, 0.05);
}

/* Staking position card — subtle ETH blue glow */
.staking-card-active {
  background: var(--bg-card);
  border: 1px solid rgba(98, 126, 234, 0.3);
  border-radius: 12px;
  box-shadow: 0 0 20px rgba(98, 126, 234, 0.05);
}

/* Simulation card — orange dashed border */
.sim-card {
  background: var(--bg-card);
  border: 2px dashed rgba(249, 115, 22, 0.4);
  border-radius: 12px;
  position: relative;
}
.sim-card::after {
  content: "SIMULASI";
  position: absolute;
  top: 8px;
  right: 8px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--sim-glow);
  color: var(--sim);
}

Hashrate Gauge (Mini Component)

┌──────────────────────────┐
│ ⛏ Hashrate              │
│ ████████████░░░ 78.3%    │
│ 50 TH/s aktif            │
└──────────────────────────┘
  • Progress bar with --btc fill color
  • Monospace number display
  • Subtle pulse animation when actively mining

Profit/Loss Number Display

.num-profit { color: var(--profit); font-family: var(--font-mono); }
.num-loss { color: var(--loss); font-family: var(--font-mono); }
.num-btc { color: var(--btc); font-family: var(--font-mono); }
.num-eth { color: var(--eth); font-family: var(--font-mono); }

Navigation (Same as inihari.com)

Auto-Hide Header (48px)

  • Compact, blur-glass backdrop
  • Logo ("bitmine" in gradient-text, mono font)
  • BTC/ETH price ticker (scrolling)
  • Theme toggle, user avatar
  • Auto-hides on scroll down, reveals on scroll up

Bottom Nav (4 items — mobile only)

┌─────────────────────────────────┐
│  ⛏ Tambang  │  📊 Dashboard  │  👥 Afiliasi  │  👤 Profil  │
└─────────────────────────────────┘
  • Fixed bottom, blur-glass background
  • Active state: amber accent color
  • Safe-area-inset for notched phones
  • 48px touch targets

Side Drawer (swipe from left)

  • Full navigation menu
  • Quick stats: BTC balance, active contracts
  • Theme toggle
  • Language toggle (ID/EN)

Animations & Micro-interactions

/* Mining pulse — subtle gold glow on active contracts */
@keyframes mining-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(247, 147, 26, 0.2); }
  50% { box-shadow: 0 0 12px 4px rgba(247, 147, 26, 0.1); }
}

/* Staking spin — slow rotate on staking icon */
@keyframes staking-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* Reward credited — green flash on balance update */
@keyframes reward-flash {
  0% { background: transparent; }
  20% { background: var(--profit-glow); }
  100% { background: transparent; }
}

/* Background blobs — same as inihari, gold/orange tint */
.blob-1 {
  width: 600px; height: 600px;
  background: var(--accent);
  opacity: 0.06;
  filter: blur(120px);
}
.blob-2 {
  width: 500px; height: 500px;
  background: var(--secondary);
  opacity: 0.04;
  filter: blur(120px);
}

Skeleton Loading (from inihari.com)

.skeleton {
  background: linear-gradient(90deg,
    var(--bg-elevated) 25%,
    var(--bg-card-hover) 50%,
    var(--bg-elevated) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  border-radius: 8px;
}

Mobile-First Patterns (from inihari.com)

  • overscroll-behavior-y: contain — prevent pull-to-refresh on Chrome Android
  • -webkit-tap-highlight-color: transparent — no blue flash on tap
  • scroll-snap-type: x mandatory — carousel snap
  • env(safe-area-inset-*) — notch safety
  • font-size: 16px on inputs — prevent iOS zoom
  • View Transitions API for smooth page transitions

15. Programmatic SEO Engine

Auto-generate thousands of long-tail pages to capture Indonesian crypto search traffic. Each page template is SEO-optimized with structured data, internal linking, and AI-generated content.

Page Templates

Template 1: Mining Calculator Pages

URL pattern: /kalkulator/bitcoin/{hashrate}-ths and /kalkulator/bitcoin/{budget}-rupiah Examples:

  • /kalkulator/bitcoin/10-ths → "Berapa Penghasilan Mining 10 TH/s Bitcoin?"
  • /kalkulator/bitcoin/500000-rupiah → "Hasil Mining Bitcoin dengan Modal IDR 500.000"
  • /kalkulator/ethereum/staking-1000000-rupiah → "Hasil Staking Ethereum Modal IDR 1 Juta"

Variations: 50+ hashrate values × 2 (BTC + ETH) = 100+ pages

Content structure:

  1. H1: "Kalkulator Mining Bitcoin {X} TH/s — Estimasi Penghasilan Harian"
  2. Interactive calculator (pre-filled with URL param)
  3. Results table (daily/weekly/monthly/yearly projections)
  4. "Apa yang mempengaruhi hasil mining?" explanation (unique per hashrate tier)
  5. CTA: "Mulai Tambang {X} TH/s Sekarang" or "Coba Simulasi Gratis"
  6. Related calculators (internal links)
  7. FAQ section (3-5 Q&As)

Schema: FAQPage + HowTo + Product

Template 2: Price Tracking Pages

URL pattern: /harga/{coin}/hari-ini and /harga/{coin}/prediksi-{period} Examples:

  • /harga/bitcoin/hari-ini → "Harga Bitcoin Hari Ini dalam Rupiah" (40K+ searches/mo)
  • /harga/ethereum/hari-ini → "Harga Ethereum Hari Ini dalam Rupiah"
  • /harga/bitcoin/prediksi-2026 → "Prediksi Harga Bitcoin 2026"

Variations: 10 coins × 5 periods = 50+ pages

Content:

  1. Live price widget (updated every 5 min via cron)
  2. 24h / 7d / 30d / 1y price chart
  3. Key stats (market cap, volume, supply, dominance)
  4. "Apakah sekarang waktu yang tepat untuk mining/staking?" — AI-generated analysis
  5. Historical price table
  6. CTA: "Mulai Tambang Bitcoin Sekarang"

Schema: Product + FAQ

Template 3: City-Specific Landing Pages

URL pattern: /tambang-bitcoin/{city} Examples:

  • /tambang-bitcoin/jakarta → "Cloud Mining Bitcoin di Jakarta — Mulai dari IDR 50.000"
  • /tambang-bitcoin/surabaya → "Tambang Bitcoin Online di Surabaya"
  • /tambang-bitcoin/bandung → "Staking & Mining Crypto di Bandung"

Variations: Top 100 Indonesian cities = 100 pages

Content:

  1. H1: "Cloud Mining Bitcoin di {City} — Tanpa Perangkat, Mulai dari IDR 50.000"
  2. City-specific crypto adoption stats (if available, otherwise general)
  3. Why cloud mining works for {City} residents (no electricity cost, mobile-first)
  4. Local payment methods available
  5. Testimonial from {City} area user (template)
  6. Plans available with local currency comparison
  7. FAQ: "Apakah mining Bitcoin legal di {City}?"

Schema: LocalBusiness + FAQPage + Product

Template 4: Comparison Pages

URL pattern: /perbandingan/{a}-vs-{b} Examples:

  • /perbandingan/mining-vs-staking → "Mining vs Staking: Mana yang Lebih Menguntungkan?"
  • /perbandingan/bitcoin-vs-ethereum → "Mining Bitcoin vs Staking Ethereum 2026"
  • /perbandingan/bitmine-vs-nicehash → "bitmine.id vs NiceHash: Perbandingan Lengkap"
  • /perbandingan/cloud-mining-vs-beli-asic → "Cloud Mining vs Beli ASIC: Mana Lebih Untung?"

Variations: 20-30 comparison pairs = 30 pages

Content:

  1. H1 with clear comparison frame
  2. Side-by-side comparison table
  3. Pros/cons for each
  4. "Mana yang cocok untuk Anda?" decision guide
  5. Calculator comparing ROI of both options
  6. CTA: "Coba Keduanya — Simulasi Gratis"

Schema: FAQ + ComparisonTable (custom)

Template 5: Education & Guide Articles

URL pattern: /akademi/{slug} Categories: mining, staking, beginner, advanced, market, security, tax

Pillar content (manually curated, AI-assisted):

  1. "Panduan Lengkap Cloud Mining Bitcoin untuk Pemula" (3,000+ words)
  2. "Apa Itu Staking Ethereum dan Cara Kerjanya" (2,500+ words)
  3. "Cara Menghitung Penghasilan Mining Bitcoin" (2,000+ words)
  4. "Mining Bitcoin Halal atau Haram? Panduan Syariah" (2,000+ words — massive Indonesian search volume)
  5. "Pajak Crypto di Indonesia: Panduan PPh & PPN" (2,000+ words)
  6. "Cara Memilih Cloud Mining yang Aman & Terpercaya" (2,000+ words)
  7. "Bitcoin Halving 2024: Dampak untuk Cloud Mining" (1,500+ words)
  8. "Risiko Cloud Mining yang Harus Kamu Tahu" (1,500+ words — trust builder)
  9. "Staking vs Mining vs Trading: Perbandingan Lengkap" (2,500+ words)
  10. "Glossarium Crypto A-Z untuk Pemula Indonesia" (reference page)

Supporting articles (AI-generated, human-reviewed):

  • 50+ "Apa Itu {Term}?" glossary articles
  • 20+ "Cara {Action}" how-to guides
  • 10+ market analysis articles (refreshed monthly)

Total: 100+ education pages

Template 6: Q&A Community Pages

URL pattern: /tanya/{slug} Examples:

  • /tanya/berapa-minimal-investasi-mining-bitcoin → community Q&A
  • /tanya/apakah-cloud-mining-aman → expert + community answers
  • /tanya/cara-tarik-hasil-mining-ke-bank-bca → practical Q&A

How it works:

  1. Seed 200+ questions from common crypto queries (Google autocomplete, Quora Indonesia, Reddit)
  2. AI-generated initial "expert answer" (by "Tim bitmine.id")
  3. Users can submit their own answers (logged-in only)
  4. Upvote/downvote system
  5. Top answer displayed first
  6. New questions submitted via form → moderated → published

Content per page:

  1. Question as H1
  2. Expert answer (from bitmine.id team or AI)
  3. Community answers with vote counts
  4. Related questions (internal links)
  5. CTA: "Ada pertanyaan lain? Tanya di sini"

Schema: QAPage

Total: 200+ seed Q&A pages, growing organically

Content Generation Pipeline

1. Keyword Research (monthly)
   ├── Google Autocomplete API → "mining bitcoin" suggestions
   ├── Ahrefs/SEMrush free data → volume estimates
   └── Competitor content gap analysis

2. Content Generation (via cron)
   ├── Dynamic pages: calculator, price, city → auto-generated from data
   ├── Articles: Llama 3.3 70B via Workers AI → draft in Bahasa
   ├── Human review queue → admin panel approval
   └── Published → IndexNow ping

3. Content Refresh (weekly cron)
   ├── Update all price pages with latest data
   ├── Recalculate all calculator outputs
   ├── Refresh "hari ini" date-sensitive content
   └── Check for stale articles → flag for update

Internal Linking Strategy

Every page links to 5-7 related pages:

Calculator page → Related calculators + relevant article + Q&A + plans page
Article page → Related articles + calculator + Q&A + plans page
Q&A page → Related Q&As + relevant article + calculator
City page → Plans + calculator + relevant article + Q&A
Price page → Calculator + plans + related articles
Plans page → Calculator + relevant articles + Q&A + city pages

Cross-site via flio.net: Link to/from other portfolio sites:

  • dokterdewa.com → "Investasi kesehatan vs crypto"
  • beasiswa.net → "Beasiswa vs mining: passive income comparison"
  • kunci.org → "Belajar crypto di kunci.org"

Schema Markup per Page Type

Page Type Schema
Homepage Organization + WebSite + Product (plans)
Mining plans Product + AggregateOffer
Calculator HowTo + FAQPage
Article Article + FAQPage + BreadcrumbList
Q&A QAPage + BreadcrumbList
Price Product + FAQPage
City LocalBusiness + FAQPage + Product
Comparison FAQPage + BreadcrumbList

Total Programmatic Pages

Template Count Growth
Calculator 100+ Static (update data)
Price tracking 50+ Add coins over time
City landing 100+ Add cities
Comparison 30+ Add pairs
Education articles 100+ +10/month
Q&A community 200+ +50/month organic
Total 580+ Growing

SEO Authority Building Timeline

Month Action Expected Impact
1 Launch 100 calculator + 50 price + 10 pillar articles Index 160 pages
2 Add 100 city pages + 30 comparisons + 50 Q&A seeds Index 340 more
3 Add 50 glossary articles + 100 Q&A seeds + IndexNow all 500+ indexed
4 First organic Q&A submissions, refresh all content 600+ pages
5 Backlink campaign (GitHub, npm, Archive.org) DA growth
6 "harga bitcoin hari ini" ranking attempt + TikTok content Traffic inflection
9 Featured snippets for "apa itu mining" queries Authority established
12 1,000+ pages, 50+ organic Q&As/month Sustainable SEO moat

AEO (AI Engine Optimization)

/llms.txt — bitmine.id is Indonesia's BTC cloud mining + ETH staking platform.
             Products: cloud mining contracts, ETH staking, simulation mode.
             Key pages: /tambang, /staking, /simulasi, /kalkulator, /akademi, /tanya
             API: /api/v1/ (rates, plans, stats)

/llms-full.txt — Auto-generated dump of all plans, pricing, FAQ answers,
                  education articles, Q&A content. Updated daily by cron.
  • Every article starts with a definitive answer paragraph (AI snippets pull from top)
  • FAQPage schema on every page → direct answer boxes
  • "Apa Itu X" headings match ChatGPT/Perplexity query patterns
  • Structured data tables for AI extraction

16. AUDIT REPORT: Indonesian Market Feasibility & Regulation

A. Regulatory Landscape — Current Status (May 2026)

OJK Takeover from Bappebti

  • Effective January 10, 2025, regulatory authority over crypto assets transferred from Bappebti to OJK
  • OJK Regulation No. 27 of 2024 classifies crypto as digital financial asset
  • Businesses must comply with updated capital, consumer protection, and AML rules by July 2025
  • OJK enforces banking-grade standards: risk management, corporate governance, customer fund transparency, periodic audits

Does bitmine.id Need a License?

PFAK (Pedagang Fisik Aset Kripto) — Crypto Physical Trader License:

  • Required for exchanges that trade crypto assets
  • 19 platforms currently licensed (Indodax, Tokocrypto, Pintu, Pluang, Reku, Upbit, etc.)
  • bitmine.id is NOT an exchange — it's a cloud mining service provider
  • Cloud mining is NOT explicitly regulated under PFAK or OJK frameworks
  • Falls in a regulatory gray zone — not exchange, not custodial wallet, not payment

PSE (Penyelenggara Sistem Elektronik):

  • REQUIRED for any online platform operating in Indonesia (Kominfo registration)
  • Simple registration process, mandatory for all digital businesses
  • Must register before launch

SIUPL (Direct Selling License) for Affiliate Program:

  • Required for MLM/direct selling businesses under PP 29/2021
  • 3-tier affiliate system COULD trigger SIUPL requirement if:
    • Commission is the primary income for affiliates (it's not — it's supplementary)
    • Focus is on recruitment over product sales (it's not — commission comes from mining fees)
  • Risk assessment: Our affiliate program is closer to Shopee/Tokopedia affiliate (product-based) than MLM (recruitment-based)
  • Recommendation: Consult APLI (Asosiasi Penjualan Langsung Indonesia) pre-launch. If SIUPL needed, process takes 2-3 months

VERDICT: No PFAK needed (not an exchange). PSE required (easy). SIUPL possibly required for affiliate (consult lawyer). Cloud mining itself = gray zone.

Tax Implications (PMK 50/2025)

Tax Rate Applies To
PPh (Income Tax) Standard rates (5-35%) Mining income, platform revenue
PPN (VAT) NOT applicable (PMK 50/2025) Crypto asset transfers treated like securities, exempt from VAT
PPh 22 on crypto transactions 0.1% Of transaction value (previously applied, may change under OJK)

Key change: PMK 50/2025 eliminates VAT on crypto transfers — this is GOOD for bitmine.id (lower user costs).

KYC/AML Requirements

  • Full KYC required for all financial crypto services
  • Minimum: KTP (ID card) + selfie verification
  • Travel Rule: identity data sharing for transactions above threshold
  • Our plan: KYC for withdrawals > IDR 1,000,000 — aligns with regulation

Sources:


B. Market Data — Indonesia Crypto (Real Numbers)

Metric Value Source
Registered crypto users 20+ million (end 2025) OJK/Bappebti
Q1 2025 transaction volume IDR 109.29 trillion (~$6.9B) ICN
Licensed platforms 19 PAKD-licensed OJK
Permitted tokens 1,444 OJK
Crypto tax revenue (to Feb 2025) IDR 126.4 billion DJP
User citizenship 99.7% Indonesian Bappebti
YoY growth (users) ~35% from 2023→2024 Bappebti
72% of exchanges Still unprofitable despite 20M users BitcoinEthereumNews

Market insight: 20M users but 72% of exchanges are unprofitable = the market is crowded for exchanges but EMPTY for value-add services like cloud mining. This is the gap.

Sources:


C. Mining Economics Reality Check (May 2026)

BTC Mining — The Hard Numbers

Parameter Current Value
Bitcoin Price ~$77,220 USD
Mining Difficulty 135.59 T
Block Reward 3.125 BTC (post-halving April 2024)
Revenue per TH/s per day ~$0.0036 USD = ~IDR 57
Revenue per 10 TH/s per day ~$0.036 USD = ~IDR 570
Revenue per 50 TH/s per day ~$0.18 USD = ~IDR 2,850
Revenue per 390 TH/s per day (top ASIC) $13.96 USD (before electricity)
Electricity cost at $0.05/kWh ~$8.66/day for 390 TH/s
Net profit (390 TH/s) $5.30/day (37.99% margin)

CRITICAL RED FLAG: Plan Pricing vs Reality

Our plan says: 1 TH/s for 30 days = IDR 50,000, est. daily yield ~IDR 1,200/day Reality: 1 TH/s produces ~IDR 57/day gross, ~IDR 48/day after 15% fee

THE PLAN'S YIELD ESTIMATES ARE OFF BY 20x. At current difficulty, 1 TH/s cannot possibly yield IDR 1,200/day. The real yield is IDR 48-57/day.

To earn IDR 1,200/day, you'd need ~21 TH/s — which at current ASIC costs would require an IDR 50K contract to have a much lower hash rate, OR the pricing must be adjusted to reflect reality.

Corrected Contract Tiers

Tier Hash Power Duration Realistic Price Real Daily Yield (net)
Starter 10 TH/s 30 days IDR 150,000 ~IDR 485/day
Basic 50 TH/s 90 days IDR 700,000 ~IDR 2,425/day
Pro 200 TH/s 180 days IDR 2,500,000 ~IDR 9,700/day
Elite 1,000 TH/s 365 days IDR 11,000,000 ~IDR 48,500/day

Note: These yields fluctuate daily with difficulty, BTC price, and fees. Must be clearly labeled "estimasi, bukan jaminan."

ETH Staking — The Numbers

Parameter Current Value
Base staking APY 2-3% APY
With MEV-Boost 4-5.69% APY
Lido fee 10% of rewards
RocketPool fee 14% of rewards

Our plan says: 3.0-5.0% APY — This is realistic for 2026 staking yields. Staking economics check out.

Key risk: ETH staking yield has been declining (was 4-5% in 2024, now 2-3% base). Our "5% APY for 365-day lock" may be aggressive. Recommend capping at 4% APY for long-term plans.

Sources:


D. Cloud Mining Industry Reputation

Global Scam Statistics (2024-2025)

  • Cloud mining scams defrauded investors of $500M+ in 2024 alone
  • Fake mining apps with malware ("AndroidOS_FakeMinerPay") specifically targeted Indonesian users charging ~IDR 215,000/month for non-existent mining
  • 120+ fraudulent crypto mining apps remained online (Trend Micro)
  • Common patterns: guaranteed returns, no proof of hashrate, exit after 3-6 months

Red Flags Users Look For

  1. Guaranteed return promises ("pasti untung 10%/bulan")
  2. No proof of mining infrastructure
  3. Anonymous team
  4. No physical address
  5. Withdrawal delays/limits
  6. Too-good-to-be-true yields
  7. Heavy recruitment focus (pyramid signals)

How bitmine.id MUST Differentiate

  • NEVER promise guaranteed returns — always "estimasi berdasarkan kondisi pasar"
  • Real-time pool proof — link to blockchain explorer, show actual blocks mined
  • Named team with verifiable identities
  • Indonesian business registration (PSE, potentially PT)
  • Transparent fee structure — show exactly where the 15% goes
  • Withdrawal processed within 24h — no delays
  • Risk disclaimers on every page — not hidden in footer

Sources:


E. Affiliate/MLM Legal Analysis

Indonesian Law on Multi-Tier Referrals

  • UU No. 7/2014 (Trade Law) Article 105: pyramid schemes are ILLEGAL, punishable by law
  • PP 29/2021: governs direct selling (MLM), requires SIUPL license
  • Key distinction: Legitimate MLM = commission from PRODUCT SALES. Pyramid = commission from RECRUITMENT.

bitmine.id Affiliate Assessment

Criterion Pyramid Scheme bitmine.id Affiliate Status
Income source New member deposits Platform maintenance fees SAFE
No product = no commission? Commission even without product Zero commission if no mining activity SAFE
Focus Recruitment above all Product (mining/staking) primary SAFE
Tiers Unlimited depth Max 3 levels SAFE
Commission cap None (exponential) Max IDR 10M/month SAFE
SIUPL required? N/A (illegal) Possibly — consult APLI CHECK

VERDICT: Our 3-tier affiliate is legally defensible because commissions derive from platform revenue (maintenance fees on actual mining), not from new member deposits. However:

  • Must NOT advertise "passive income from recruiting" — always frame as "bonus from mining activity"
  • Must have clear products (mining contracts) that provide real value independent of recruitment
  • Recommend: Get written legal opinion from Indonesian fintech lawyer before launch

Sources:


F. Payment Processor — Midtrans (RESOLVED)

Xendit was initially planned but EXPLICITLY PROHIBITS cryptocurrency businesses ("Bitcoin and other cryptocurrencies" is listed as prohibited). Switched to Midtrans instead.

Midtrans crypto policy: Midtrans does NOT explicitly list cryptocurrency in its prohibited business categories. Their prohibited list covers: illegal drugs, pornography, gambling, counterfeit products, government-prohibited items, dangerous goods, swipe-for-cash, and Ponzi schemes. Cryptocurrency is absent from this list.

Key distinction: bitmine.id is NOT a crypto exchange. Users pay IDR for cloud mining contracts (a service). The Midtrans transaction is a standard IDR service purchase. BTC rewards come from mining pools on the backend, not from Midtrans. This positions the platform as a SaaS vendor, not a crypto business.

Midtrans products used:

  1. Snap API — unified checkout for payments (QRIS, GoPay, OVO, DANA, BCA/BNI/BRI VA, credit card)
  2. Iris API — payouts/disbursements for withdrawals and affiliate commissions to bank accounts
  3. Notification URL — webhook for payment status updates (SHA-512 signature verification)

Risk: The catch-all clause "Products or services that are prohibited by the Indonesian Government" could theoretically apply if OJK classifies cloud mining as an illegal financial product. Mitigation: get written confirmation from Midtrans merchant onboarding team before launch, describing the business model clearly.

Backup payment processors (if Midtrans declines):

  1. DOKU — oldest Indonesian payment gateway, check crypto policy
  2. Flip.id — B2B payments, bank-to-bank
  3. Direct bank VA APIs — BCA, BNI, BRI all offer VA SDKs
  4. Licensed exchange partnership — partner with Indodax/Pintu/Reku for custody + payment layer

Sources:


G. Risk Matrix — Updated After Audit

Risk Severity Likelihood Mitigation Residual Risk
Yield estimates were 20x too high CRITICAL CONFIRMED Corrected in plan. Use real calculator data. LOW (fixed)
Regulatory gray zone HIGH MEDIUM PSE registration, legal counsel, OJK consultation MEDIUM
Scam perception HIGH HIGH Transparency dashboard, team identity, pool proofs, risk disclaimers MEDIUM
Midtrans crypto policy LOW LOW Get written confirmation from Midtrans onboarding LOW (resolved — crypto not in prohibited list)
SIUPL requirement for affiliate MEDIUM MEDIUM Consult APLI, get legal opinion MEDIUM
BTC difficulty spike MEDIUM MEDIUM Weekly repricing, transparent communication LOW
ETH APY decline MEDIUM HIGH Cap at 4%, adjust plans quarterly LOW
Competition from licensed exchanges MEDIUM LOW Different product (mining, not trading) LOW
Mining pool partner risk HIGH LOW Multi-pool setup, SLA agreements MEDIUM

H. Pre-Launch Legal Checklist (MANDATORY)

  • PSE registration with Kominfo — required for all online platforms
  • PT (Perseroan Terbatas) registration — Indonesian legal entity
  • Legal opinion from fintech lawyer on cloud mining regulatory status
  • APLI consultation on affiliate program — determine if SIUPL needed
  • Midtrans approval — get written confirmation from Midtrans onboarding that cloud mining service is accepted
  • Risk disclaimer text — approved by lawyer, in Bahasa Indonesia
  • Terms of Service — UU PDP (Privacy Law) compliant, approved by lawyer
  • Tax structure — consult tax advisor on PPh obligations for platform revenue
  • Mining pool partnership agreement — legal contract with pool provider
  • KYC process — select KYC provider (e.g., Verihubs, Privy) for KTP verification

I. GO/NO-GO Assessment — REVISED After Deep Research

Factor Assessment Decision
Market size 20M+ crypto users, #3 globally, 335% YoY growth GO
Competition Near-zero in cloud mining for Indonesia GO
Regulatory No KBLI code, no licensing path, OJK sandbox likely required BLOCKER
Capital requirement IDR 100 billion (~$6.2M) if classified as PAKD BLOCKER
Mining economics 1 TH/s = $0.036/day — micro-contracts not viable REDESIGN NEEDED
Staking economics 2-3% APY realistic but razor-thin margins MARGINAL
Trust environment Cloud mining = #1 scam category. PT SAI shut down Q4 2024 HIGH RISK
Payment rails Midtrans does NOT prohibit crypto — resolved GO
Affiliate legality 3-tier on financial products = close to pyramid territory HIGH RISK
Technical feasibility 100% CF stack proven across portfolio GO

BLOCKERS STATUS

  1. OJK Sandbox Required — Staking-as-a-service explicitly requires OJK regulatory sandbox (12 months). Cloud mining contracts almost certainly do too. STILL BLOCKER
  2. Xendit Prohibits CryptoRESOLVED: Switched to Midtrans. Midtrans does NOT list crypto in prohibited categories. Payment rail is clear.
  3. No KBLI Code — No Indonesian Standard Industrial Classification code exists for crypto mining. No licensing path. STILL BLOCKER
  4. PT SAI Precedent — "AI server investment + daily returns" (structurally identical to cloud mining) was shut down by Satgas PASTI in Q4 2024. STILL HIGH RISK
  5. Capital Requirement — If classified as PAKD, need IDR 100 billion (~$6.2M) minimum paid-up capital. STILL BLOCKER

REVISED OVERALL ASSESSMENT: PIVOT REQUIRED

The original business model (selling cloud mining contracts directly to Indonesian consumers) faces 4 remaining regulatory blockers (payment rail blocker resolved via Midtrans). Proceeding as planned risks:

  • Platform shutdown by Satgas PASTI (OJK enforcement)
  • Criminal penalties: 5-10 years prison, fines IDR 1-1,000 billion
  • Classification as "investasi bodong" (illegal investment)

RECOMMENDED PIVOT OPTIONS

Option A: Education + Affiliate Platform (Lowest Risk)

bitmine.id as crypto mining/staking education hub + affiliate to licensed platforms

  • Build the programmatic SEO engine (calculators, articles, Q&A) — this is 100% legal
  • Earn revenue through affiliate partnerships with licensed PAKD platforms (Indodax, Pintu, Reku)
  • When users want to mine/stake, redirect to licensed partners
  • Revenue: affiliate commissions (typically 20-50% of partner's fees)
  • No regulatory risk: it's a content/education platform, not a financial product
  • Can pivot to Option B later when/if OJK creates a mining framework

Option B: OJK Sandbox Application (High Investment, Long Timeline)

  • Engage fintech law firm (SSEK, ABNR, Assegaf Hamzah)
  • Apply for OJK regulatory sandbox (12 months)
  • Secure IDR 100B+ in capital (investor/VC required)
  • Build compliant platform during sandbox period
  • Timeline: 18-24 months to launch
  • Only viable with significant funding

Option C: Licensed Exchange Partnership (Medium Risk)

  • Partner with an existing PAKD-licensed exchange (e.g., Reku, Pluang)
  • bitmine.id provides the mining service UX/frontend
  • Partner handles: KYC, custody, payments, regulatory compliance
  • Revenue split with partner
  • Still needs legal opinion on whether mining service layer requires its own license

Option D: International Entity + Indonesian Marketing (Gray Zone)

  • Register company in Singapore/UAE/Estonia (crypto-friendly jurisdiction)
  • Operate mining service internationally
  • Indonesian users access voluntarily (like they access NiceHash, ECOS today)
  • Marketing/education content in Bahasa Indonesia
  • Risk: OJK can still block the domain (has blocked 796 entities in Q4 2024 alone)
  • Not recommended as primary strategy

RECOMMENDED PATH: Option A (Education + Affiliate) → Option C (Exchange Partnership)

Phase 1 (Immediate, 0 risk): Launch bitmine.id as Indonesia's #1 crypto mining/staking education platform with programmatic SEO, calculators, Q&A community, and affiliate links to licensed exchanges. This captures the market, builds brand authority, and generates revenue from day 1 with ZERO regulatory risk.

Phase 2 (6-12 months): Once brand authority is established and regulatory landscape clarifies, pursue Option C (licensed exchange partnership) to offer actual mining/staking products through a compliant partner.

Phase 3 (If regulations evolve): If OJK creates a specific framework for mining services, apply for own license leveraging established brand and user base.

This approach builds the entire SEO moat, brand recognition, and user base NOW while avoiding all regulatory blockers. The programmatic SEO engine (580+ pages), education content, and community become the sustainable competitive advantage — even if the mining product model changes.

CRITICAL ACTION: Fix the pricing/yield estimates before any public-facing content goes live. The original estimates were off by 20x and publishing them would be misleading and potentially illegal under consumer protection law.


J. Key Data from Research Agents

Indonesian Market (Full Data)

  • #3 globally in Chainalysis 2024 Crypto Adoption Index (up from #7)
  • $157.1 billion total crypto value received (Jul 2023 - Jun 2024)
  • 2024 transaction volume: IDR 650.6 trillion (~$40.2B) — 335% YoY surge
  • 60%+ of investors are aged 18-30
  • 63.6% of investors are on Java Island
  • 97.74 million unbanked adults (48% of population) — 4th largest globally
  • QRIS: 59 million users, 42 million merchants, Q2 2025 up 148.5% YoY
  • Android: 88-90% of mobile devices, Chrome 84.21% browser share
  • Only ~893,541 were actively trading in any given month (May 2024) — 95% dormant
  • 72% of exchanges still unprofitable despite 20M users

Cloud Mining Economics (Hard Numbers)

  • Hashprice: $36.46/PH/s/day = $0.03646/TH/s/day
  • 1 TH/s produces: 0.000000470 BTC/day = $0.0362/day = IDR 573/day
  • Cost to provide 1 TH/s for 30 days: $1.53+ (electricity + hardware + overhead)
  • Revenue from 1 TH/s for 30 days: $1.09
  • Net margin per TH/s: NEGATIVE at micro scale
  • Break-even electricity rate: $0.04-0.06/kWh (achievable only at large scale in cheap regions)
  • No mining pool offers white-label/reseller programs — must operate own hardware or use NiceHash marketplace

ETH Staking (Current Yields)

  • Base network yield: ~4.67% (before fees)
  • Lido (stETH): 2.3-4.2% APY (after 10% protocol fee)
  • User-facing after platform fee: 1.5-2.5% APY — barely beats inflation

Enforcement Precedent

  • 796 entities blocked by Satgas PASTI in Q4 2024 alone
  • 12,185 total illegal financial entities shut down since 2017
  • PT SAI Technology Group (AI server + daily returns) — blocked Q4 2024, structurally identical to cloud mining
  • 29 platforms on OJK whitelist — all others considered illegal
  • Penalties: 5-10 years prison, fines IDR 1 billion to 1 trillion

⚙ HARD CONSTRAINTS (enforced for all sites)

This domain MUST operate within these constraints — no exceptions:

  • 100% Cloudflare serverless — Workers + D1 + R2 + KV + Workers AI + Vectorize. NEVER PM2, NEVER VPS, NEVER Docker in production path.
  • 100% AI-automated — every customer interaction, every moderation decision, every transaction reconcile = AI. No manual queue, no live human chat support, no physical fulfillment.
  • 1-operator solo — one person can run the entire operation from a phone. No team meetings, no shared inbox, no shift rotation.
  • WhatsApp AI bot for all support (24/7, instant response, no SLA promises that need humans).
  • Mayar QRIS for all Indonesian payments (subscription auto-renew, no manual invoicing).
  • Indonesian UI primary — bahasa-first, English fallback only where unavoidable.
  • Privacy — opt-in only, delete-on-request honored within 24h (cron-driven).
  • No physical goods, no inventory — digital products + affiliate referrals only.

If the plan above describes any flow that violates these constraints, treat the plan as ASPIRATIONAL only and rework before building. The constraint trifecta wins.

AI ASSISTANT

Ask AI to research, improve, or generate content.

Try: "Research competitors for this niche"

Actions