Architecture/System Overview
GitHub

Architecture

How the frontend, oracle backend, and smart contract work together.

Overview

Frontier Pulse follows a three-tier architecturewith two distinct data paths. The Oracle Backend acts as the intelligence layer — it reads raw game data from the World API, computes scores and reputation, then persists results on-chain. The Frontend reads from both the live World API and the on-chain PulseRegistry to render the dashboard.

System Architecture

Frontend

Next.js 16 + React 19

Galaxy ViewHeartbeat EKGTrust CompassCHI GaugeAlerts UI
reads

API Routes

Next.js Server Routes

/universe/chi/system/:id/player/:addr/alerts/pulse-card
scores
fetches

Oracle Backend

Node.js + cron (10 min)

ScoringReputationCHIAnomaly Detection

World API

EVE Frontier

SystemsAssembliesKillmailsGates
writes PTBs
feeds

Sui Blockchain

PulseRegistry (Testnet)

SystemHealthPlayerReputationCHIAlerts
frontend also reads Sui directly as fallback

Dual Data Paths

1. Oracle Path (Write)

  1. Oracle polls World API every 10 minutes
  2. Fetches all solar systems, smart assemblies, and killmails
  3. Computes system health, player reputation, global CHI, anomalies
  4. Writes results on-chain via batched Programmable Transaction Blocks

2. Frontend Path (Read)

  1. Next.js API routes serve the dashboard
  2. Reads galaxy data from World API (24,502 systems)
  3. Reads CHI and scores from Sui RPC (PulseRegistry)
  4. Merges both sources with priority: on-chain > live-computed > fallback
The dual-path design ensures the dashboard works even when the oracle is offline — the frontend can compute scores locally using the same deterministic hash function as the oracle.

On-Chain Layer

The PulseRegistry is a shared object on Sui Testnet that stores all civilization health data. Anyone can read; only authorized oracles can write.

frontier_pulse.move
public struct PulseRegistry has key {
    id: UID,
    reputations: Table<address, PlayerReputation>,  // player → trust profile
    systems: Table<u64, SystemHealth>,               // system → health snapshot
    chi: CivilizationHealthIndex,                    // global composite score
    total_players: u64,
    total_systems: u64,
    last_updated_ms: u64,
    endorsement_counts: Table<u64, u64>,             // user-driven signals
    endorsement_records: Table<vector<u8>, bool>,
}

Capability Model

Write access is controlled by a two-tier capability system following Sui's object-centric security:

CapabilityHolderPowers
AdminCapDeployer (auto-transferred at publish)Issue OracleCap to backend services
OracleCapOracle backend walletWrite system health, player reputation, CHI, alerts

Data Pipeline

Each oracle cycle follows this sequential pipeline:

INGEST

World API

01
fetchAllSystems()24,502 solar systems
fetchSmartAssemblies()player infrastructure
fetchKillmails()PvP combat records

PROCESS

Scoring Engine

02
computeSystemHealth()activity, trust, infra, combat
computePlayerReputation()5 dimensions + archetype
computeGlobalCHI()6 sub-indices + diagnosis
detectAnomalies()pattern matching → alerts

STORE

Sui Blockchain

03
writeSystemHealthBatch()batched PTB (50/batch)
writePlayerReputationBatch()batched PTB (50/batch)
writeGlobalCHI()single PTB call
emitAlertsBatch()on-chain events (10/batch)
Cycle interval: 10 min
Batch size: 50 systems/txMax per cycle: 500 systems

Deployed Contracts

ResourceID / URL
Package0x6618...bbc9
PulseRegistry0x945f...32c4
NetworkSui Testnet
RPChttps://fullnode.testnet.sui.io:443