A modern, feature-rich SSH client application built with React, TypeScript, and Tauri.
Features β’ Installation β’ Documentation β’ Contributing β’ License
This project is a learning and practice project for vibe coding methodology. It demonstrates:
- π¨ AI-Generated Frontend: The entire frontend UI is generated from Figma designs using Figma Make
- π€ AI-Assisted Development: The complete development process is powered by GitHub Copilot
- π Modern Workflow: Experience the efficiency of AI-driven development with minimal manual coding
Note: This is an experimental project to explore the capabilities and limitations of AI-assisted development workflows. The goal is to understand how far we can go with AI pair programming tools in building a complete desktop application.
π View the Figma Design: Check out the Figma Make preview to see how the frontend was generated.
R-Shell is a desktop SSH client that provides a beautiful and intuitive interface for managing SSH connections, file transfers, and remote system monitoring. Built with modern web technologies and packaged as a native desktop application using Tauri.
- Multi-Session Support: Manage multiple SSH connections simultaneously with an intuitive tabbed interface
- Connection Profiles: Save and organize your SSH connection profiles for quick access
- Session Persistence: Automatically save and restore your sessions across application restarts
- Secure Authentication: Support for password and SSH key-based authentication
- Full-Featured PTY Terminal: Powered by xterm.js with complete terminal emulation
- Customizable Themes: Choose from multiple terminal color schemes and appearance settings
- Keyboard Shortcuts: Extensive keyboard shortcuts for improved productivity
- Terminal Addons: Advanced features including search, web links, and fit addon support
- Integrated SFTP Browser: Browse, upload, and download files directly from the interface
- Drag-and-Drop Support: Easily transfer files between local and remote systems
- File Operations: Complete file management with rename, delete, move, and permission editing
- Dual-Panel View: Side-by-side local and remote file browsing
- Real-Time Metrics: Monitor CPU, memory, disk, and network usage in real-time
- Resource Visualization: Beautiful charts and graphs using Recharts
- Network Monitor: Track network traffic and connection statistics
- Performance Logs: View detailed system logs and application events
- Modern Design: Clean and intuitive interface built with Radix UI primitives
- Responsive Layout: Resizable panels and flexible workspace arrangement
- Dark/Light Themes: Support for multiple UI themes
- Accessibility: Built with accessibility in mind using WAI-ARIA compliant components
- Native Speed: Powered by Tauri for true native performance
- Low Memory Footprint: Efficient resource usage compared to Electron-based alternatives
- Fast Startup: Quick application launch and connection establishment
- Cross-Platform: Works seamlessly on Windows, macOS, and Linux
- React 19: Modern React with latest features
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Accessible component primitives
- Lucide Icons: Beautiful icon set
- React Hook Form: Form state management
- Recharts: Data visualization
- Tauri 2: Build native desktop apps with web technologies
- Rust: Fast and memory-efficient backend
r-shell/
βββ src/
β βββ components/ # React components
β β βββ ui/ # Reusable UI components (Radix-based)
β β βββ pty-terminal.tsx # PTY terminal with xterm.js
β β βββ integrated-file-browser.tsx # SFTP file browser
β β βββ session-manager.tsx # Connection management
β β βββ system-monitor.tsx # Real-time metrics
β β βββ connection-dialog.tsx # SSH connection form
β β βββ session-tabs.tsx # Tab navigation
β β βββ menu-bar.tsx # Application menu
β β βββ settings-modal.tsx # Settings dialog
β β βββ ... # Other components
β βββ lib/ # Utility functions
β β βββ session-storage.ts # Persistent session profiles
β β βββ terminal-config.ts # Terminal appearance settings
β β βββ utils.ts # Helper utilities
β βββ styles/ # Global styles
β βββ App.tsx # Main application shell
β βββ main.tsx # React entry point
β βββ index.css # Global CSS with Tailwind directives
βββ src-tauri/ # Tauri/Rust backend
β βββ src/
β β βββ ssh/ # SSH/SFTP implementation
β β βββ commands.rs # Tauri command handlers
β β βββ websocket_server.rs # WebSocket terminal I/O
β β βββ session_manager.rs # Session lifecycle
β β βββ lib.rs # Library setup
β β βββ main.rs # Application entry
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # Tauri configuration
βββ docs/ # Documentation
βββ index.html # HTML entry point
- Node.js (v18 or higher)
- pnpm (recommended) or npm
- Rust and Cargo (for Tauri)
- Clone the repository:
git clone <repository-url>
cd r-shell- Install dependencies:
pnpm install- Run in development mode:
# Web only
pnpm run dev
# Desktop with Tauri
pnpm tauri dev# Build web assets
pnpm run build
# Build desktop application
pnpm tauri buildpnpm run dev- Start Vite development serverpnpm run build- Build for productionpnpm run preview- Preview production buildpnpm tauri dev- Run Tauri app in development modepnpm tauri build- Build Tauri app for production
Main application component that manages:
- Session state and tabs
- Dialog modals (connection, SFTP, settings)
- Layout with resizable panels
- Session selection and navigation
Provides terminal emulation with:
- Command input/output
- Session management
- Terminal themes
- Copy/paste support
Tree-view interface for:
- Organizing connections
- Quick connection access
- Folder-based grouping
- Connection details
Integrated file management:
- Remote file browsing
- File upload/download
- Drag-and-drop support
- File operations (rename, delete, etc.)
Real-time monitoring:
- CPU usage
- Memory usage
- Network statistics
- Disk usage
Contributions are welcome! Please feel free to submit a Pull Request.
We welcome contributions from the community! This project is an experiment in AI-assisted development, and we're excited to see how the community can enhance it.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read our Contributing Guidelines and Code of Conduct before contributing.
- π Bug fixes and issue reports
- π Documentation improvements
- β¨ Feature enhancements
- π§ͺ Test coverage
- π Internationalization (i18n)
- π¨ UI/UX improvements
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this project useful, please consider giving it a star! β
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Pull Requests: GitHub PRs
- Built with components from shadcn/ui
- UI design generated from Figma Make
- Icons from Lucide
- Powered by GitHub Copilot
Made with β€οΈ and π€ AI
If you like this project, please give it a β!
