Skip to content

ZafranYusof/codeterminal

Repository files navigation

CodeTerminal

A Terminal + IDE hybrid mobile app built with Flutter. Edit code on your phone, connect to remote servers via SSH, run commands, and see output — like a lightweight VS Code Mobile focused on SSH workflow.

Features

Code Editor

  • Syntax highlighting for 11+ languages (Dart, JS, Python, Java, C, HTML, CSS, JSON, YAML, Bash, Markdown)
  • Line numbers with monospace font
  • Auto-indent and bracket matching
  • Multiple file tabs with modification indicators
  • Find & replace
  • Adjustable font size
  • 5 editor themes: Monokai, Dracula, One Dark, Solarized Dark, GitHub Dark
  • Extra keyboard toolbar row (Tab, Ctrl, Alt, arrows, brackets, quotes, operators)

Terminal Emulator

  • Local terminal with simulated shell commands
  • SSH connection UI (host, port, user, key/password)
  • Saved server profiles (CRUD)
  • Multiple terminal sessions with tabs
  • Terminal themes matching editor themes
  • Scrollback buffer with copy/paste support
  • Clear terminal button

File Manager

  • Local file browser (app sandbox)
  • Create/rename/delete files and folders
  • File type icons with language-specific colors
  • Recent files tracking
  • Create new file with templates (HTML boilerplate, Python script, etc.)

Git Integration

  • Git status view (modified, staged, untracked files)
  • Stage/unstage files
  • Commit with message
  • Push/Pull buttons
  • Branch selector and creation
  • Diff viewer

AI Assistant

  • Slide-out panel from right
  • "Explain this code" functionality
  • "Fix this error" with suggestions
  • "Generate code" from description
  • Chat interface with history
  • Suggested prompts based on context

Snippet Library

  • Pre-built snippets by language (Dart, Python, JavaScript, Bash)
  • Categories: Loops, Functions, Classes, API Calls, Error Handling
  • Quick insert into editor
  • Search and filter
  • Custom snippet creation

Settings

  • Editor: font size, tab size, word wrap, line numbers, minimap
  • Terminal: font size, scrollback lines, bell
  • Theme selector (applies to both editor + terminal)
  • About page

Onboarding

  • 3-slide intro: "Code Anywhere", "Connect to Servers", "AI-Powered"
  • Skip button, only shows on first launch

Tech Stack

  • Framework: Flutter 3.29.3
  • Language: Dart
  • State Management: Provider
  • Package: com.zafran.codeterminal
  • Min SDK: 21
  • Target SDK: 34

Dependencies

  • provider - State management
  • shared_preferences - Local storage
  • path_provider - File system paths
  • google_fonts - JetBrains Mono & Inter fonts
  • flutter_highlight - Syntax highlighting support

Project Structure

lib/
├── main.dart              # Entry point
├── app.dart               # App widget with providers
├── theme/
│   ├── app_theme.dart     # Material theme (GitHub Dark style)
│   └── editor_themes.dart # 5 editor color themes
├── models/
│   ├── file_model.dart    # File/directory model
│   ├── server_profile.dart # SSH server profile
│   ├── snippet.dart       # Code snippet model
│   └── terminal_session.dart # Terminal session model
├── providers/
│   ├── editor_provider.dart   # Open files, tabs, search
│   ├── terminal_provider.dart # Sessions, commands
│   ├── file_provider.dart     # File operations
│   ├── git_provider.dart      # Git operations
│   ├── settings_provider.dart # App settings
│   └── ai_provider.dart       # AI chat state
├── screens/
│   ├── home_screen.dart       # Main scaffold + bottom nav
│   ├── editor_screen.dart     # Code editor view
│   ├── terminal_screen.dart   # Terminal view
│   ├── files_screen.dart      # File manager
│   ├── git_screen.dart        # Git status/operations
│   ├── settings_screen.dart   # Settings page
│   ├── onboarding_screen.dart # First-launch intro
│   ├── snippet_screen.dart    # Snippet library
│   └── ai_panel.dart          # AI assistant panel
├── widgets/
│   ├── code_editor.dart       # Editor widget
│   ├── terminal_widget.dart   # Terminal output/input
│   ├── file_tree.dart         # Collapsible file tree
│   ├── extra_keys_bar.dart    # Extra keyboard row
│   ├── split_view.dart        # Resizable split pane
│   ├── tab_bar.dart           # Editor file tabs
│   └── syntax_highlighter.dart # Regex-based highlighter
├── services/
│   ├── file_service.dart      # File I/O operations
│   ├── ssh_service.dart       # Mock SSH client
│   ├── git_service.dart       # Mock git operations
│   ├── snippet_service.dart   # Built-in snippets
│   ├── ai_service.dart        # Mock AI responses
│   └── storage_service.dart   # SharedPreferences wrapper
└── utils/
    ├── constants.dart         # App constants, file icons
    └── helpers.dart           # Utility functions

Design

  • Theme: Dark theme primary (GitHub Dark inspired)
    • Background: #0D1117
    • Surface: #161B22
    • Accent: #58A6FF
  • Typography: Inter (UI), JetBrains Mono (code)
  • Design Language: Material 3
  • Navigation: Bottom navigation bar (Editor, Terminal, Files, Git, More)

Getting Started

# Clone the project
cd codeterminal

# Get dependencies
flutter pub get

# Run analysis
flutter analyze

# Run on device
flutter run

Notes

  • SSH connections are simulated (mock responses) — no actual SSH library is used
  • Git operations are mocked for demo purposes
  • AI responses are pre-generated templates
  • File operations work within the app's sandbox directory
  • The app is designed to be extended with real SSH/Git/AI backends

License

MIT

About

Android Terminal

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors