Skip to content

NERVA is a sleek, real-time Raspberry Pi monitoring app built with Flutter, featuring futuristic UI, live system stats, and smart connectivity.

License

Notifications You must be signed in to change notification settings

CrayFish0/nerva

Repository files navigation

🚀 NERVA - Raspberry Pi Stats Monitor

NERVA Logo

A sleek, modern, and minimalistic Flutter app for monitoring your Raspberry Pi's system statistics in real-time. Features a clean dark theme with smooth animations and intuitive design.

✨ Features

🎯 Real-Time Monitoring

  • Live System Stats: CPU, Memory, Disk, Network, Temperature
  • Real-Time Charts: Historical data visualization with smooth animations
  • Process Monitoring: Top CPU processes with detailed information
  • Per-Core CPU Usage: Individual core performance tracking

🎨 Futuristic UI/UX

  • Dark Theme: Sleek black background with neon accent colors
  • Glassmorphism Cards: Modern frosted glass effect containers
  • Neon Borders: Animated glowing borders for critical alerts
  • Smooth Animations: Fluid transitions and micro-interactions
  • Responsive Design: Optimized for mobile devices

🔌 Smart Connectivity

  • Auto-Discovery: Automatic network scanning for Raspberry Pi devices
  • WebSocket Connection: Real-time data streaming
  • Auto-Reconnect: Handles disconnections gracefully
  • Connection Testing: Verify device accessibility before connecting

📊 Advanced Visualizations

  • Circular Progress Indicators: CPU, Memory, Storage usage
  • Linear Progress Bars: Process-specific resource usage
  • Real-Time Line Charts: Historical trends over time
  • Color-Coded Status: Green/Yellow/Red indicators based on thresholds

� Screenshots

🏠 Dashboard Screen

Dashboard showing real-time system stats

📊 System Monitoring

Real-time charts and performance metrics

⚙️ Process Monitor

Top CPU processes and core usage

🔌 Connection Screen

Device connection and auto-discovery

⚙️ Settings

App settings and configuration

�🛠️ Technical Architecture

📁 Project Structure

lib/
├── core/
│   ├── theme/
│   │   └── app_theme.dart          # Futuristic dark theme
│   ├── constants/
│   │   └── app_constants.dart      # App-wide constants
│   └── utils/
│       └── helpers.dart            # Utility functions
├── data/
│   ├── models/
│   │   └── system_stats.dart       # Data models for Pi stats
│   └── services/
│       └── websocket_service.dart  # WebSocket communication
├── providers/
│   └── system_stats_provider.dart  # State management
├── screens/
│   ├── dashboard/
│   │   └── dashboard_screen.dart   # Main monitoring dashboard
│   ├── connection/
│   │   └── connection_screen.dart  # Device connection interface
│   ├── processes/
│   │   └── processes_screen.dart   # Process monitoring
│   └── settings/
│       └── settings_screen.dart    # App settings
├── widgets/
│   ├── cards/
│   │   └── futuristic_card.dart    # Custom card components
│   ├── charts/
│   │   └── real_time_chart.dart    # Chart widgets
│   └── indicators/
│       └── progress_indicators.dart # Progress visualizations
└── main.dart                       # App entry point

🎨 Design System

Color Palette

  • Primary: #00D4FF (Cyan)
  • Secondary: #6C63FF (Purple)
  • Accent: #00FFA3 (Green)
  • Background: #0A0A0A (Deep Black)
  • Surface: #1A1A1A (Dark Gray)
  • Success: #00FFA3 (Green)
  • Warning: #FFB800 (Orange)
  • Error: #FF4757 (Red)

Typography

  • Font Family: Inter (Google Fonts)
  • Heading Styles: Bold, increased letter spacing
  • Body Text: Regular weight, optimized readability
  • Monospace: Code and numeric values

🚀 Getting Started

Prerequisites

  1. Flutter SDK (3.5.4+)
  2. Dart SDK (3.5.4+)
  3. Android Studio or VS Code with Flutter extensions
  4. Raspberry Pi with WebSocket stats server running

Installation

  1. Clone the Repository

    git clone https://github.com/yourusername/nerva.git
    cd nerva
  2. Install Dependencies

    flutter pub get
  3. Run the App

    flutter run

🔧 Configuration

Raspberry Pi Setup

Your Raspberry Pi needs to run a WebSocket server that broadcasts system stats. The server should:

  • Listen on port 8765
  • Broadcast JSON data every second
  • Include all system metrics (CPU, memory, disk, network, etc.)

App Configuration

The app includes several configurable constants in lib/core/constants/app_constants.dart:

  • WebSocket port and connection settings
  • UI spacing and animation durations
  • Performance thresholds for warnings
  • Chart data retention limits

📱 App Screens

🏠 Dashboard

  • System Overview: Uptime, process count, load average, temperature
  • Performance Metrics: Real-time CPU, memory, and storage usage
  • Live Charts: Historical performance data
  • System Details: Hardware specifications and network information

⚙️ Processes

  • Process Overview: Total process count and system usage
  • Top CPU Processes: Detailed breakdown of resource-intensive processes
  • CPU Core Usage: Per-core performance monitoring

🔌 Connection

  • Manual Connection: Enter IP address manually
  • Auto Discovery: Scan network for Raspberry Pi devices
  • Connection Testing: Verify device accessibility
  • Connection Status: Real-time connection monitoring

⚙️ Settings

  • Connection Management: View status and disconnect options
  • Display Settings: Theme and update interval configuration
  • About Information: App details and requirements

🎯 Key Features

Real-Time Data Processing

  • Efficient WebSocket handling with automatic reconnection
  • Smart data throttling to prevent UI blocking
  • Historical data retention with configurable limits
  • Error handling and graceful degradation

Performance Optimizations

  • Lazy loading for large data sets
  • Efficient chart rendering with fl_chart
  • Memory management for continuous data streams
  • Background processing for network operations

User Experience

  • Intuitive navigation with bottom tab bar
  • Contextual error messages and status indicators
  • Smooth animations and transitions
  • Responsive design for different screen sizes

🔧 Dependencies

Core Flutter Packages

  • provider: State management
  • web_socket_channel: WebSocket communication
  • fl_chart: Chart visualizations

UI/UX Packages

  • google_fonts: Typography
  • animated_text_kit: Text animations
  • shimmer: Loading animations
  • glassmorphism: Glass effect containers

Utility Packages

  • intl: Date and number formatting
  • network_info_plus: Network information
  • connectivity_plus: Network connectivity monitoring

🚀 Performance Thresholds

The app uses intelligent color-coding based on performance thresholds:

CPU Usage

  • Green: 0-70% (Normal)
  • Yellow: 70-85% (Warning)
  • Red: 85-100% (Critical)

Memory Usage

  • Green: 0-75% (Normal)
  • Yellow: 75-90% (Warning)
  • Red: 90-100% (Critical)

Temperature

  • Green: Below 65°C (Normal)
  • Yellow: 65-80°C (Warning)
  • Red: Above 80°C (Critical)

🔮 Future Enhancements

  • Multiple Pi support with device switching
  • Historical data export (CSV/JSON)
  • Custom alert thresholds
  • Push notifications for critical events
  • Widget support for home screen
  • Remote command execution
  • Custom dashboard layouts
  • Data analytics and trends

🤝 Contributing

We welcome contributions! Please follow these 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.

🎨 Logo & Branding

The NERVA logo is located at assets/icon/icon.png and represents the modern, tech-focused nature of this Raspberry Pi monitoring application.

🙏 Acknowledgments

  • Flutter Team for the amazing framework
  • Raspberry Pi Foundation for the incredible hardware
  • Open Source Community for the fantastic packages used in this project

Built with ❤️ using Flutter

About

NERVA is a sleek, real-time Raspberry Pi monitoring app built with Flutter, featuring futuristic UI, live system stats, and smart connectivity.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published