Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2ee5820
feat: implement network monitoring with real-time stats and history t…
chojuninengu May 14, 2026
bf3ea2e
feat: add network monitoring tab with live bandwidth and interface st…
chojuninengu May 14, 2026
11d6c2f
feat: add real-time network monitoring with backend stats collection …
chojuninengu May 14, 2026
22c29b1
feat: implement network monitoring tab with real-time interface stati…
chojuninengu May 14, 2026
6864408
feat: add system network monitoring with real-time stats and history …
chojuninengu May 14, 2026
e80f173
feat: implement network monitoring with real-time stats and history t…
chojuninengu May 14, 2026
2050b22
feat: add network monitoring state, history tracking, and Tauri comma…
chojuninengu May 14, 2026
72abfed
feat: implement system information PDF report export functionality
chojuninengu May 14, 2026
90923fd
feat: add real-time hardware temperature monitoring with alert thresh…
chojuninengu May 14, 2026
0cc6148
feat: implement command-line interface for system monitoring and tele…
chojuninengu May 14, 2026
7080f5a
feat: implement light mode support across application components and …
chojuninengu May 14, 2026
5a62a6d
feat: add system fan monitoring and motherboard temperature tracking …
chojuninengu May 14, 2026
c9295c9
feat: implement SQLite history tracking with automated snapshots and …
chojuninengu May 14, 2026
5fc3c58
chore: prepare v0.3.0 release
chojuninengu May 14, 2026
2da2018
feat: dynamic live refresh interval display in TopBar using settings …
chojuninengu May 14, 2026
1badbaa
Removed duplicated lines in readme
chojuninengu May 14, 2026
4843048
feat: initialize sysora core library with system monitoring and batte…
chojuninengu May 15, 2026
c6a53e4
fix: make fans vector mutable and remove unused underscore from unins…
chojuninengu May 15, 2026
4302c18
refactor: update UI styling, add escape key support to modals, and im…
chojuninengu May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Contributing to Sysora

First off, thank you for considering contributing to Sysora! It's people like you that make Sysora such a great tool for everyone.

## Code of Conduct

By participating in this project, you agree to abide by our terms. We expect all contributors to be respectful and collaborative.

## How Can I Contribute?

### Reporting Bugs
* Check the existing issues to see if the bug has already been reported.
* If not, open a new issue. Include a clear title, a description of the problem, and steps to reproduce the issue.
* Attach screenshots or logs if possible.

### Suggesting Enhancements
* Open a new issue with the tag `enhancement`.
* Explain why the feature would be useful and how it should work.

### Your First Code Contribution
1. **Fork the repo**: Click the "Fork" button at the top right of this page.
2. **Clone your fork**:
```bash
git clone https://github.com/YOUR_USERNAME/sysora.git
cd sysora
```
3. **Install dependencies**:
```bash
npm install
```
4. **Create a branch**:
```bash
git checkout -b feat/your-feature-name
```
5. **Make your changes**: Ensure your code follows the existing style.
6. **Test your changes**: Run `npm run tauri dev` to verify.
7. **Commit your changes**:
```bash
git commit -m "feat: add some cool feature"
```
8. **Push to your fork**:
```bash
git push origin feat/your-feature-name
```
9. **Open a Pull Request**: Submit your PR against the `main` branch of the original repo.

## Tech Stack Knowledge
To contribute effectively, you should be familiar with:
* **Rust**: Used for the backend logic and OS integrations.
* **Tauri v2**: The bridge between Rust and the web frontend.
* **React**: Used for building the dashboard UI.
* **Tailwind CSS**: Used for all styling and the dark/light theme system.
* **SQLite (rusqlite)**: Used for historical data persistence.

## Development Commands

```bash
# Run in dev mode (with HMR)
npm run tauri dev

# Build production bundles
npm run tauri build
```

---

*Happy hacking!* 🚀
92 changes: 43 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Sysora — System Monitor & Manager

> Cross-platform desktop app to monitor memory, kill hungry processes, inspect system specs, scan disk usage, and check battery health — all from a modern dark dashboard with a tray icon.
> Cross-platform desktop app to monitor memory, kill hungry processes, inspect system specs, scan disk usage, track fans, and view historical usage trends — all from a modern dark/light dashboard or your terminal.

Built with **Rust + Tauri v2** on the backend and **React 19 + Vite + Tailwind CSS** on the frontend. Runs natively on **Ubuntu**, **macOS**, and **Windows**.

---

## 📥 Download Latest Release

Get the latest stable version (Phase 2) for your operating system:
Get the latest stable version (Phase 3) for your operating system:

| Platform | Installer | Portability |
|---|---|---|
Expand All @@ -18,23 +18,32 @@ Get the latest stable version (Phase 2) for your operating system:

---

## 🚀 Features (Phase 2 Stable)
## 🚀 Features (Phase 3 Stable)

### 📊 Real-time Monitoring
- **Resource Pulse**: Live CPU and RAM usage history sparklines (last 60s).
- **Process Manager**: Kill hungry processes with one click, search by name, and sort by memory usage.
- **Stat Cards**: Instant glance at RAM, CPU, Disk, and Battery health/status.
- **Fan Monitoring**: Track fan speeds (RPM) and system temperatures in real-time (Linux).

### 📈 Observability & History
- **SQLite History**: Periodic system snapshots stored in a local database.
- **Trend Charts**: Visualize CPU, RAM, and Disk usage over the last 1h, 6h, 24h, or 7 days.
- **Usage Peaks**: Automatically calculate average and peak resource usage for any time range.

### 💾 Storage & Files
- **Disk usage**: Monitor all mounted partitions and removable drives.
- **Deep Scanner**: Find what's eating your space! Scan any directory to find the largest files and folders.
- **Safe Purge**: Delete heavy files/folders directly from the scanner with confirmation.

### ⌨️ CLI Interface
- **Headless Mode**: Run `sysora status` for a quick system snapshot in your terminal.
- **Tooling**: Export JSON data for scripts or check specific sensors with `sysora fans`.

### ⚙️ App Management & Settings
- **Theme Toggles**: Seamlessly switch between **Dark**, **Light**, and **System** themes.
- **Installed Apps**: List and manage installed applications.
- **Persistence**: Save your preferences for refresh rates and alert thresholds.
- **Tray Power**: Complete control from the system tray: quick specs, settings, and one-click toggle.
- **Native Experience**: "Close to Tray" and "Start minimized" support.
- **Tray Power**: Complete control from the system tray: quick specs, settings, and history access.

---

Expand All @@ -43,20 +52,20 @@ Get the latest stable version (Phase 2) for your operating system:
```
┌──────────────────────────────────────────────────────┐
│ React 19 + Vite frontend │
│ Memory Processes │ Apps │ Disk │ Sys Info │
│ Memory Processes │ Network │ History │ Sys Info
└──────────────────┬───────────────────────────────────┘
│ invoke() / emit() (Tauri IPC)
┌──────────────────▼───────────────────────────────────┐
│ Tauri v2 bridge │
│ Commands: scan_directory · kill_process · settings
│ Commands: get_history · get_fans · save_settings
│ Events: scan-progress · process-update │
│ Tray: toggle · system-info · settings · quit │
└──────────────────┬───────────────────────────────────
│ Tray: toggle · status · settings · quit
└──────────────────┬───────────────────────────────────
┌──────────────────▼───────────────────────────────────┐
│ Rust backend │
sysinfo crate WalkDir scannerBattery reader│
/proc · WMI · sysctl (cross-platform OS APIs)
SQLite (rusqlite) sysinfo cratehwmon reader
Background Task │ Battery reader │ CLI (clap)
└───────────────────────────────────────────────────────┘
Runs on Ubuntu · macOS · Windows
```
Expand All @@ -68,6 +77,8 @@ Get the latest stable version (Phase 2) for your operating system:
| Layer | Technology |
|---|---|
| **Backend** | Rust, Tauri v2 |
| **Database** | SQLite (rusqlite) |
| **CLI** | Clap v4 |
| **Frontend** | React 19, Vite, Tailwind CSS |
| **State** | Zustand, TanStack Query |
| **Charts** | Recharts |
Expand All @@ -81,11 +92,13 @@ Get the latest stable version (Phase 2) for your operating system:
sysora/
├── src/ # React frontend
│ ├── components/
│ │ ├── charts/ # History graphs
│ │ ├── tabs/ # Memory, Apps, Disk, Settings
│ │ └── layout/ # Shell, Sidebar, StatCards
│ │ ├── charts/ # History & Network graphs
│ │ ├── tabs/ # Memory, History, Disk, Settings
│ │ └── layout/ # Shell, Sidebar, TopBar
├── src-tauri/ # Rust backend
│ ├── src/lib.rs # Core logic & Commands
│ ├── src/db.rs # SQLite persistence
│ ├── src/cli.rs # CLI command handling
│ └── capabilities/ # Security & Permissions
├── images/ # Project assets (Logo, Icons)
└── .github/workflows/ # CI/CD Release pipeline
Expand All @@ -99,11 +112,7 @@ sysora/
- **Node.js** ≥ 20
- **Rust** (stable)
- **Tauri v2 CLI** (`npm install -g @tauri-apps/cli`)
- **Linux (Ubuntu/Debian) dependencies**:
```bash
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
```
- **Linux dependencies**: `libwebkit2gtk-4.1-dev`, `libayatana-appindicator3-dev`, etc.

### Run in development

Expand All @@ -125,46 +134,31 @@ npm run tauri dev

### ✅ Phase 1 — Foundation
- [x] Live process list + Kill button
- [x] Disk usage bars
- [x] System specs + Battery health
- [x] Tray popup snapshot

### ✅ Phase 2 — Management (Current)
### ✅ Phase 2 — Management
- [x] **App Manager**: List installed applications.
- [x] **Settings**: Refresh rate, startup behavior, and persistence.
- [x] **Disk Scanner**: Find largest files/folders with deletion support.
- [x] **Resource History**: 60s CPU/RAM chart in Memory tab.
- [x] **Persistence**: Save user settings to JSON.

### 🔲 Phase 3 — Polish
- [ ] Notifications: Alert when RAM/CPU crosses threshold.
- [ ] Branded icon + Splash screen.
- [ ] Export system report as PDF.
- [ ] Full Windows uninstallation logic.

---
- [x] **Settings**: Refresh rate, startup behavior.
- [x] **Disk Scanner**: Find largest files/folders.

## Battery Health — How It Works
### ✅ Phase 3 — Polish & Observability (Current)
- [x] **Dark/Light Themes**: Full Tailwind support.
- [x] **CLI Snapshot**: `sysora status` command.
- [x] **SQLite Tracking**: 30-day historical trends.
- [x] **Cooling & Fans**: Real-time RPM tracking.

Sysora distinguishes between two different battery numbers that most tools confuse:

| Metric | What it means |
|---|---|
| **Current charge** | How full the battery is right now (0–100%) |
| **Battery health** | Current max capacity vs the original design capacity |
### 🔲 Phase 4 — Enterprise
- [ ] Export system report as PDF.
- [ ] Network traffic breakdown per process.
- [ ] Custom alert rules (Email/Slack notifications).

A battery with **60% health** that is fully charged will only last 60% as long as it did when it was new — even though it shows "100% charge".
---

This is read from `/sys/class/power_supply/BAT*/` on Linux (`energy_full` vs `energy_full_design`). macOS and Windows native APIs are supported via the `battery` crate.

---

## Contributing

1. Fork the repo
2. Create a feature branch: `git checkout -b feat/my-feature`
3. Commit changes: `git commit -m "feat: add feature"`
4. Open a PR against `main`
We love contributions! Please see our [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to get started.

---

Expand Down
14 changes: 12 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "sysora",
"private": true,
"version": "0.2.0",
"version": "0.3.0",
"type": "module",
"scripts": {
"dev": "vite",
Expand All @@ -13,6 +13,7 @@
"@tanstack/react-query": "^5.56.2",
"@tauri-apps/api": "^2.0.0",
"@tauri-apps/plugin-autostart": "^2.5.1",
"@tauri-apps/plugin-dialog": "^2.7.1",
"@tauri-apps/plugin-notification": "^2.3.3",
"@tauri-apps/plugin-shell": "^2.0.0",
"lucide-react": "^0.441.0",
Expand Down
Loading