Skip to content

shreyaspapi/parity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Parity: Unraid Client

A modern, feature-rich mobile app for monitoring and managing your Unraid servers

License: MIT Expo React Native TypeScript

FeaturesInstallationAPI PermissionsDocumentationContributingSupport


Screenshots

Dashboard Servers Docker VMs Settings


Overview

Parity is an open-source, cross-platform mobile application that brings comprehensive Unraid server management to your iOS and Android devices. Built with React Native and Expo, it provides real-time monitoring, intuitive controls, and powerful notifications—all wrapped in a beautiful, native mobile interface.

Why Parity?

While Unraid 7.2+ offers a responsive web interface, Parity delivers a superior mobile experience with:

  • Native Push Notifications - Get instant alerts for critical events
  • Optimized Mobile UX - Purpose-built for touch interfaces
  • Biometric Security - Face ID/Touch ID support
  • Real-time Monitoring - Live server metrics at your fingertips
  • Dark Mode - Beautiful light and dark themes
  • Offline Support - View cached data when disconnected
  • Multi-Server - Manage multiple Unraid servers from one app

Features

Real-Time Monitoring

  • System Dashboard - CPU, RAM, network, disk I/O, and temperatures
  • Array Status - Disk health, parity status, and capacity monitoring
  • Smart Notifications - Get alerted to issues before they become critical

Docker Management

  • View all containers with status and resource usage
  • Start, stop, and restart containers
  • Monitor container logs
  • Quick access to container WebUIs

Virtual Machine Control

  • View VM status and resource allocation
  • Start, stop, pause, and resume VMs
  • Monitor VM resource usage

Intelligent Notifications

  • Critical alerts (disk failures, high temps, server offline)
  • Warning notifications (high resource usage, container crashes)
  • Configurable quiet hours
  • Per-server notification settings

Security & Privacy

  • API key-based authentication
  • Encrypted credential storage
  • Biometric authentication support (Face ID, Touch ID, Fingerprint)
  • No telemetry or data collection
  • Local-only data storage

Installation

Prerequisites

  • Node.js 18+ (Download)
  • pnpm (recommended) or npm/yarn
    npm install -g pnpm
  • Expo CLI
    npm install -g expo-cli
  • Unraid Server with OS v6.12+ (v7.2+ recommended)

Setup

  1. Clone the repository

    git clone https://github.com/yourusername/parity.git
    cd parity
  2. Install dependencies

    pnpm install
  3. Start the development server

    pnpm start
  4. Run on your device

    • iOS: Press i or scan the QR code with the Camera app
    • Android: Press a or scan with the Expo Go app
    • Web: Press w to open in browser (limited functionality)

Unraid Server Configuration

  1. Generate an API key on your Unraid server:

    unraid-api apikey --create
  2. Save the API key - You'll need it to connect the app

  3. Ensure the Unraid API is running:

    systemctl status unraid-api
  4. Configure firewall (if needed) to allow connections on port 3001


Required API Permissions

When creating your API key, you need to grant the following permissions for Parity to function properly:

✅ Required Permissions

Permission Description Used For
info System Information Dashboard: CPU, memory, OS info, uptime, hostname, kernel version
metrics System Metrics Real-time CPU & RAM usage charts
array Array Status Disk health, parity status, array capacity, boot device info
shares Share Information Display share sizes and usage
vars Server Variables Server name and Unraid version
registration License Info Display license type and status
docker Docker Management List containers, view status, start/stop containers
vms VM Management List virtual machines, view status, start/stop VMs
notifications Notifications View and manage server notifications

⚠️ Optional Control Permissions

These permissions enable control features. Without them, you can still monitor but not control:

Permission Description Used For
array.setState Array Control Start/Stop the array from the app
docker.start Start Containers Start Docker containers
docker.stop Stop Containers Stop Docker containers
vm.start Start VMs Start virtual machines
vm.stop Stop VMs Stop virtual machines

Creating an API Key with All Required Permissions

Option 1: Full Access (Recommended for personal use)

unraid-api apikey --create --name "Parity App" --description "Mobile app access"

Option 2: Specific Permissions (For restricted access)

unraid-api apikey --create --name "Parity App" \
  --scope info \
  --scope metrics \
  --scope array \
  --scope shares \
  --scope vars \
  --scope registration \
  --scope docker \
  --scope vms \
  --scope notifications

Troubleshooting Permission Issues

If you see errors like "Permission denied" or certain features don't work:

  1. Check your API key permissions:

    unraid-api apikey --list
  2. Delete and recreate with proper permissions:

    unraid-api apikey --delete --name "Parity App"
    unraid-api apikey --create --name "Parity App"
  3. Verify API is running:

    systemctl status unraid-api
    systemctl restart unraid-api  # If needed

Usage

First-Time Setup

  1. Launch the app
  2. Enter your server details:
    • Server Name: A friendly name (e.g., "Home Server")
    • Server IP/Hostname: Your Unraid server address (e.g., 192.168.1.100:3001)
    • API Key: The key generated in the previous step
  3. Tap "Connect" to validate and save

Dashboard

The main dashboard displays:

  • System uptime and Unraid version
  • Real-time CPU and RAM usage
  • Network activity
  • Array status
  • Active containers and VMs

Pull down to refresh or enable auto-refresh in settings.

Managing Servers

  • Tap the server name in the header to switch between servers
  • Add multiple servers in Settings → Manage Servers
  • Remove or edit server configurations anytime

Notifications

Configure notifications in Settings → Notifications:

  • Choose which alert types to receive
  • Set quiet hours for Do Not Disturb
  • Customize notification sounds

Architecture

Parity follows a clean, modular architecture:

src/
├── components/       # Reusable UI components
│   └── ui/          # Base design system components
├── config/          # App configuration
├── gql/             # GraphQL types and utilities
├── graphql/         # GraphQL queries and mutations
├── hooks/           # Custom React hooks
├── lib/             # Third-party integrations (Apollo Client)
├── providers/       # Context providers (Auth, Theme, Apollo)
├── screens/         # Screen components
├── services/        # Business logic layer
├── types/           # TypeScript type definitions
└── utils/           # Helper functions

Key Technologies

  • React Native & Expo - Cross-platform mobile framework
  • TypeScript - Type-safe development
  • Apollo Client - GraphQL data management
  • GraphQL Code Generator - Auto-generate TypeScript types
  • AsyncStorage - Secure local storage
  • Expo Router - File-based navigation

Documentation


Development

Available Scripts

pnpm start          # Start Expo development server
pnpm android        # Run on Android device/emulator
pnpm ios            # Run on iOS simulator
pnpm web            # Run in web browser
pnpm lint           # Run ESLint
pnpm codegen        # Generate GraphQL TypeScript types

GraphQL Code Generation

To generate TypeScript types from your Unraid GraphQL schema:

  1. Set environment variables:

    export UNRAID_SCHEMA_URL=http://YOUR_IP:3001/graphql
    export API_KEY=your_api_key
  2. Run code generation:

    pnpm codegen

Testing

# Run unit tests (coming soon)
pnpm test

# Run integration tests (coming soon)
pnpm test:integration

Building for Production

iOS

# Build with EAS
eas build --platform ios

# Or build locally
pnpm ios --configuration Release

Android

# Build APK with EAS
eas build --platform android

# Or build locally
pnpm android --variant=release

See the Expo EAS Build documentation for detailed instructions.


Contributing

We welcome contributions from the community! Whether it's:

  • Bug reports and fixes
  • New features and enhancements
  • Documentation improvements
  • UI/UX refinements

Please read our Contributing Guide to get started.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support & Community

Get Help

Connect with the Community

Reporting Issues

Found a bug? Have a feature request? Please open an issue with:

  • A clear, descriptive title
  • Steps to reproduce (for bugs)
  • Expected vs. actual behavior
  • Screenshots (if applicable)
  • Your environment (device, OS version, app version)

Acknowledgments

Powered by:

Inspired by:

  • unMobile by s3ppo
  • The amazing Unraid community

Roadmap

Current Version (MVP)

  • Real-time dashboard
  • Docker container management
  • VM control
  • Multi-server support
  • Push notifications
  • Dark mode

Upcoming Features

  • Historical performance graphs
  • Plugin management
  • File browser (read-only)
  • Multi-language support
  • Apple Watch & Wear OS support
  • Automation & scheduled actions

See our full roadmap for more details.


Star History

If you find Parity useful, please consider giving it a star on GitHub! It helps others discover the project.

Star History Chart


Made with care for the Unraid Community

Back to Top

About

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •