My App

DApps

Living Mission decentralized applications

Living Mission DApps

Living Mission provides a suite of decentralized applications for interacting with the network.

Official DApps

Staking Dashboard

The main application for staking, delegation, and validator management.

URL: https://app.fene.network

Features:

  • Connect wallet (MetaMask, WalletConnect, etc.)
  • View and compare validators
  • Stake/unstake LGM
  • Claim rewards
  • Manage referral keys
  • Track earnings and analytics

Block Explorer

Explore blocks, transactions, and addresses on the network.

URL: https://explorer.fene.network

Features:

  • Search transactions, blocks, addresses
  • View validator statistics
  • Contract verification
  • Token tracking
  • API access

Geo Map

Visualize the global distribution of validators and nodes.

URL: https://app.fene.network/geo-maps

Features:

  • Interactive 3D globe
  • Real-time node locations
  • Network statistics overlay
  • Validator distribution by region

DApp Architecture

The Living Mission DApps are built with modern web technologies:

┌─────────────────────────────────────────────────────────────┐
│                     LGM DApps Stack                          │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                    Frontend                          │   │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────────────────┐ │   │
│  │  │Next.js  │  │ React   │  │   TailwindCSS       │ │   │
│  │  │  16+    │  │  19+    │  │   + Radix UI        │ │   │
│  │  └─────────┘  └─────────┘  └─────────────────────┘ │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   Web3 Layer                         │   │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │   │
│  │  │   Wagmi     │  │ RainbowKit  │  │    Viem     │ │   │
│  │  │  (Hooks)    │  │  (Wallet)   │  │  (Client)   │ │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘ │   │
│  └─────────────────────────────────────────────────────┘   │
│                           │                                  │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   Data Layer                         │   │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │   │
│  │  │  Fene SDK   │  │React Query  │  │   Zustand   │ │   │
│  │  │   (API)     │  │  (Cache)    │  │  (State)    │ │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘ │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                              │
└─────────────────────────────────────────────────────────────┘

Key Features

Overview Dashboard

The main dashboard provides:

  • Welcome Header: Personalized greeting and quick stats
  • Section Cards: Key metrics at a glance
  • Validator Analytics: Performance charts
  • Epoch Cycle Card: Current epoch progress
  • Staking Grid: Visual stake distribution
  • Recent Activity: Latest validator actions

Validator Management

For validators:

  • Registration Form: Register with metadata
  • Staking Interface: Stake and manage funds
  • Delegator Management: View and manage delegators
  • Referral System: Create and track referral keys
  • Reward Claims: Claim accumulated rewards
  • Analytics: Performance metrics and history

Delegator Interface

For delegators:

  • Validator Browser: Search and filter validators
  • Staking Form: Stake to selected validator
  • Portfolio View: All stakes across validators
  • Reward Tracking: Pending and claimed rewards
  • Proximity Position: Your position in the chain

Leaderboard

Competitive rankings:

  • Top Validators: By total stake
  • Top Delegators: By stake amount
  • Hall of Fame: Historical achievements
  • Floating Showcase: Featured validators

Settings

User preferences:

  • Theme: Light/dark mode
  • Notifications: Alert preferences
  • Geo Settings: Location sharing
  • Account: Wallet management

Technology Stack

Frontend

TechnologyPurpose
Next.js 16React framework
React 19UI library
TypeScriptType safety
TailwindCSS 4Styling
Radix UIAccessible components
RechartsData visualization
MapLibre GL3D globe/maps
Framer MotionAnimations

Web3

TechnologyPurpose
WagmiReact hooks for Ethereum
RainbowKitWallet connection
ViemTypeScript Ethereum client
@fenelabs/fene-sdkLGM API client

State Management

TechnologyPurpose
React QueryServer state & caching
ZustandClient state
React Hook FormForm handling
ZodValidation

Building Custom DApps

Setup

# Create new Next.js app
npx create-next-app@latest my-lgm-dapp
cd my-lgm-dapp

# Install dependencies
pnpm add @fenelabs/fene-sdk wagmi viem @rainbow-me/rainbowkit @tanstack/react-query

Configure Wagmi

// config/wagmi.ts
import { createConfig, http } from 'wagmi';
import { defineChain } from 'viem';

export const livingMission = defineChain({
  id: 5881,
  name: 'Living Mission',
  nativeCurrency: {
    decimals: 18,
    name: 'Living Mission',
    symbol: 'LGM',
  },
  rpcUrls: {
    default: { http: ['https://rpc.fene.network'] },
  },
  blockExplorers: {
    default: { name: 'Explorer', url: 'https://explorer.fene.network' },
  },
});

export const config = createConfig({
  chains: [livingMission],
  transports: {
    [livingMission.id]: http(),
  },
});

Use SDK

// hooks/useValidators.ts
import { useQuery } from '@tanstack/react-query';
import { createResonanceClient } from '@fenelabs/fene-sdk';

const client = createResonanceClient({
  baseUrl: 'https://api.fene.network',
});

export function useValidators() {
  return useQuery({
    queryKey: ['validators'],
    queryFn: () => client.getValidators(),
  });
}

export function useNetworkStats() {
  return useQuery({
    queryKey: ['networkStats'],
    queryFn: () => client.getNetworkStats(),
    refetchInterval: 10_000,
  });
}

Interact with Contracts

// hooks/useStaking.ts
import { useWriteContract, useReadContract } from 'wagmi';
import { parseEther } from 'viem';
import { RESONANCE_SYSTEM_ABI } from '@/config/abis';

const RESONANCE_SYSTEM = '0x0000000000000000000000000000000000001000';

export function useStakeToValidator() {
  const { writeContract, isPending } = useWriteContract();

  const stake = async (validatorAddress: string, amount: string) => {
    await writeContract({
      address: RESONANCE_SYSTEM,
      abi: RESONANCE_SYSTEM_ABI,
      functionName: 'stakeToValidator',
      args: [validatorAddress],
      value: parseEther(amount),
    });
  };

  return { stake, isPending };
}

export function useValidatorInfo(address: string) {
  return useReadContract({
    address: RESONANCE_SYSTEM,
    abi: RESONANCE_SYSTEM_ABI,
    functionName: 'getValidatorInfo',
    args: [address],
  });
}

Resources