Ziya/README.md
2025-06-21 14:05:50 +07:00

4.8 KiB

Ziya Token Monitor

A modern Electron-based desktop application for monitoring Solana token creation, CEX findings, and developer balance source graphs. Built with React, Redux, and TypeScript.

Architecture

This project follows a modular architecture with three main packages:

📦 Packages

  • @ziya/shared - Shared types, utilities, and domain models
  • @ziya/frontend - React frontend with Redux state management
  • @ziya/backend - Electron main process with Redis integration

🏗️ Tech Stack

  • Frontend: React 18, Redux Toolkit, TypeScript, Styled Components, Vite
  • Backend: Electron, Node.js, TypeScript, Redis (ioredis)
  • Shared: TypeScript, Winston (logging)
  • Development: Yarn Workspaces, ESLint, Prettier

Features

  • 📊 Real-time Dashboard - Monitor token activity at a glance
  • 🪙 Token Management - Track discovered tokens and their metadata
  • 🕸️ Graph Visualization - Visualize connection graphs for developer relationships
  • 📝 Event Streaming - Real-time events from the Rust backend via Redis
  • 🌙 Dark/Light Theme - Modern UI with theme switching
  • 🔔 Notifications - Real-time notifications for important events

Prerequisites

  • Node.js 16+
  • Yarn (recommended)
  • Redis server running on localhost:6379
  • Rust backend (muhafidh) running and publishing events

Installation

  1. Clone and install dependencies:

    cd ziya
    yarn install
    
  2. Build shared module:

    yarn workspace @ziya/shared build
    

Development

Start Development Server

# Start both frontend and backend in development mode
yarn dev

This will:

  • Start the React frontend on http://localhost:5173
  • Start the Electron backend in development mode
  • Enable hot reload for both frontend and backend

Individual Package Commands

# Frontend only
yarn workspace @ziya/frontend start

# Backend only
yarn workspace @ziya/backend dev

# Shared module
yarn workspace @ziya/shared dev

Production Build

# Build all packages
yarn build

# Package the Electron app
yarn package

Event Integration

The application listens for these Redis events from the muhafidh Rust backend:

token_cex_updated

{
  "mint": "string",
  "name": "string", 
  "uri": "string",
  "dev_name": "string",
  "cex_name": "string",
  "cex_address": "string",
  "cex_updated_at": "string",
  "node_count": "number",
  "edge_count": "number",
  "graph": {
    "nodes": [...],
    "edges": [...]
  }
}

max_depth_reached

{
  "mint": "string",
  "name": "string",
  "uri": "string", 
  "bonding_curve": "string",
  "updated_at": "string",
  "node_count": "number",
  "edge_count": "number",
  "graph": {
    "nodes": [...],
    "edges": [...]
  }
}

Configuration

Redis Configuration

Set environment variables:

REDIS_HOST=localhost
REDIS_PORT=6379

Electron Configuration

The app uses secure defaults:

  • Context isolation enabled
  • Node integration disabled
  • Preload script for secure IPC

Project Structure

ziya/
├── packages/
│   ├── shared/               # Shared types and utilities
│   │   ├── src/
│   │   │   ├── types/        # TypeScript interfaces
│   │   │   └── utils/        # Shared utilities
│   │   └── package.json
│   ├── frontend/             # React frontend
│   │   ├── src/
│   │   │   ├── components/   # React components
│   │   │   ├── pages/        # Page components
│   │   │   ├── store/        # Redux store and slices
│   │   │   ├── services/     # Frontend services
│   │   │   └── styles/       # Styled components
│   │   └── package.json
│   └── backend/              # Electron backend
│       ├── src/
│       │   ├── services/     # Backend services
│       │   ├── main.ts       # Electron main process
│       │   └── preload.ts    # Preload script
│       └── package.json
├── package.json              # Root workspace config
└── README.md

Scripts

  • yarn dev - Start development servers
  • yarn build - Build all packages
  • yarn start - Start production app
  • yarn package - Package Electron app
  • yarn clean - Clean all build artifacts
  • yarn lint - Run linters
  • yarn test - Run tests

Security

  • Electron app uses context isolation and disables node integration
  • IPC communication uses secure preload scripts
  • Redis connections use proper error handling and reconnection logic

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and linting
  5. Submit a pull request

License

MIT License - see LICENSE file for details.