A beautiful, modern terminal application built with React, Electron, and TypeScript, featuring advanced SSH capabilities, file management, and a stunning user interface.
- Password & Key Authentication: Support for both password and private key authentication
- Encrypted Storage: Connection details are securely encrypted and stored locally
- Multiple Connections: Manage multiple server connections simultaneously
- Connection Management: Import/export connections, edit existing ones, and test connections
- Multiple Terminals: Run multiple terminal sessions in different layouts
- Layout Options: Single, split, and grid layouts for efficient multitasking
- Interactive Input: Full keyboard support with command history
- Real-time Output: Live command execution and output display
- Remote File Browser: Browse and manage files on remote servers
- File Operations: Upload, download, create, and delete files
- Directory Navigation: Easy navigation through remote file systems
- Search & Filter: Find files quickly with search functionality
- Modern Design: Built with shadcn/ui components for a professional look
- Responsive Layout: Adapts to different screen sizes and orientations
- Dark Theme: Beautiful dark theme with customizable colors
- Smooth Animations: Framer Motion animations for a polished experience
- Command History: Track and reuse previous commands
- Documentation: Built-in help and documentation
- Settings Panel: Customize terminal appearance and behavior
- Status Monitoring: Real-time connection and terminal status
- Node.js 18+
- npm or yarn
- Git
-
Clone the repository
git clone https://github.com/yourusername/flyterm.git cd flyterm -
Install dependencies
npm install
-
Start development server
npm run dev
-
Build for production
npm run build npm run electron:build
flyterm/
├── src/
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui components
│ │ ├── Sidebar.tsx # Main sidebar navigation
│ │ ├── TerminalArea.tsx # Terminal management area
│ │ ├── TerminalTab.tsx # Individual terminal tabs
│ │ ├── ConnectionModal.tsx # Connection management
│ │ ├── FileManager.tsx # File management interface
│ │ ├── CommandHistory.tsx # Command history tracking
│ │ ├── Documentation.tsx # Help and documentation
│ │ └── SettingsModal.tsx # Application settings
│ ├── services/ # Business logic services
│ │ ├── ssh-service.ts # SSH connection handling
│ │ └── connection-storage.ts # Connection persistence
│ ├── store/ # State management
│ │ └── terminal-store.ts # Zustand store
│ ├── lib/ # Utility functions
│ │ └── utils.ts # Common utilities
│ ├── App.tsx # Main application component
│ └── index.css # Global styles
├── electron/ # Electron main process
├── public/ # Static assets
├── tailwind.config.js # Tailwind CSS configuration
└── package.json # Project dependencies
- Click "New Connection" in the sidebar
- Fill in server details (host, port, username)
- Choose authentication method (password or private key)
- Test the connection
- Save and connect
- Create a new terminal from the terminal area
- Choose layout (single, split, or grid)
- Switch between terminals using tabs
- Maximize terminals for focused work
- Close terminals when done
- Open File Manager from the sidebar
- Navigate through remote directories
- Upload/download files
- Create new folders
- Delete files and directories
- Font family and size
- Color scheme
- Line numbers display
- Status bar visibility
- Theme preferences
- Default ports
- Timeout values
- Security levels
- Key file paths
- Encrypted Storage: Connection details are encrypted using AES encryption
- Secure Authentication: Support for SSH keys and secure password handling
- Local Storage: All sensitive data stays on your local machine
- No Cloud Sync: Complete privacy and control over your data
- Built-in dark theme
- Customizable color schemes
- Responsive design for all screen sizes
- Collapsible sidebar
- Multiple terminal layouts
- Customizable toolbar
- Flexible window management
- Frontend: React 18 + TypeScript
- UI Components: shadcn/ui + Radix UI
- Styling: Tailwind CSS
- State Management: Zustand
- Animations: Framer Motion
- Desktop: Electron
- Build Tool: Vite
# Start development server
npm run dev
# Build for production
npm run build
# Run Electron in development
npm run electron:dev
# Build Electron app
npm run electron:build
# Run tests
npm run test
# Lint code
npm run lint
# Format code
npm run format- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: Report bugs and request features on GitHub
- Discussions: Join community discussions
- Documentation: Check the built-in help system
- Contributing: We welcome contributions!
- shadcn/ui for beautiful UI components
- Radix UI for accessible primitives
- Tailwind CSS for utility-first styling
- Framer Motion for smooth animations
- Zustand for state management
Made with ❤️ by the FlyTerm Team