Ziya is part of BismillahDAO project for one stop shop trading application
- Migrate from legacy .eslintrc.json to modern flat config system - Remove conflicting ESLint configuration files - Fix auto-generation of eslint.config.mjs by Nuxt - Update ESLint rules to use single quotes and proper formatting - Add comprehensive theme switching system with 24 palettes - Implement proper daisyUI theme integration - Add theme store with persistence and dark/light mode support - Create ThemeSwitcher component with enhanced UI - Fix package.json scripts to work with new ESLint flat config - Update VS Code settings for proper ESLint integration - Add changelogen scripts for proper changelog management BREAKING CHANGE: ESLint configuration migrated to flat config system |
||
|---|---|---|
| .config | ||
| .vscode | ||
| app | ||
| electron | ||
| public | ||
| types | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| .prettierrc | ||
| eslint.config.mjs | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.json | ||
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
-
Clone and install dependencies:
cd ziya yarn install -
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 serversyarn build- Build all packagesyarn start- Start production appyarn package- Package Electron appyarn clean- Clean all build artifactsyarn lint- Run lintersyarn 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
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
License
MIT License - see LICENSE file for details.