| Parameter | Architecture Specification |
|---|---|
| Runtime Target | Android 7.0 (Nougat, API 24) through Android 16 (Vanilla Ice Cream / Baklava, API 36) |
| Language & Toolchain | Kotlin 2.0+ / Kotlin Symbol Processing (KSP) / Coroutines Flow |
| User Interface | Modern Jetpack Compose (Material Design 3) with full edge-to-edge support |
| Storage Architecture | Android Storage Access Framework (SAF) Document & Tree Provider |
| Rendering Pipeline | Hardware-accelerated Canvas with dynamic line virtualization and viewport clipping |
| Execution Sandbox | Integrated WebKit WebView runtime with bi-directional JavaScript console bridge |
| Local Verification | Automated JVM Unit Tests, Robolectric Tests, and GitHub Actions CI/CD Pipeline |
Join the official developer channels for updates, discussions, bug reports, and direct contact:
| Channel | Handle / Server | Direct Link |
|---|---|---|
| Telegram Channel | @EPCD11 |
t.me/EPCD11 |
| Discord Server | Community Support | discord.gg/FkssmYFY |
ECODE features custom vector renderers designed to replicate official language branding:
+--------------------------------------------------------------------------+
| Android 7.0 - 16 Runtime |
+--------------------------------------------------------------------------+
|
v
+--------------------------------------------------------------------------+
| Jetpack Compose UI (M3) |
| |
| +------------------------------------------------------------------+ |
| | TopAppBar: Active Language Pill / Run / Save / Overflow Menu | |
| +------------------------------------------------------------------+ |
| | EditorTabBar: Dirty Tracking / Scrollable Multi-Tab Container | |
| +------------------------------------------------------------------+ |
| | CodeEditorView: Canvas Line Numbers / Syntax Spans / Selection | |
| +------------------------------------------------------------------+ |
| | SearchReplaceBar: Regex / Case-Sensitive / Token Matcher | |
| +------------------------------------------------------------------+ |
| | EditorBottomBar: Undo / Redo / Indent / Tab / Quick Symbols Bar | |
| +------------------------------------------------------------------+ |
| | EditorStatusBar: Line & Column / Storage State / Auto-Save | |
| +------------------------------------------------------------------+ |
| | FileExplorerDrawer: Scoped SAF Trees / Internal Workspace | |
+--------------------------------------------------------------------------+
|
v
+--------------------------------------------------------------------------+
| State Management & ViewModels |
| |
| - EditorViewModel (StateFlow<EditorUiState>, Intent Dispatchers) |
| - AutoSaveManager (Debounced Coroutine File I/O Engine) |
| - PhysicalKeyManager (Hardware Keyboard Shortcut Routing) |
+--------------------------------------------------------------------------+
|
v
+--------------------------------------------------------------------------+
| Engine Core & Services |
| |
| - MultiLanguageLexer (High-Speed Regex Tokenizer & Span Assembler) |
| - WebRunnerContentBuilder (HTML/CSS/JS Sandbox Payload Compiler) |
| - SafStorageManager (Document Trees, MIME Detection, Encoding) |
| - WebConsoleBridge (Two-Way JavaScript Log & REPL Evaluator) |
+--------------------------------------------------------------------------+
- Syntax tokenization covering programming languages, config files, and markup.
- Synchronized line numbering rendered on Canvas with zero scroll friction.
- Delimiter pairing for brackets, braces, parentheses, and quote wrappers.
- State-preserving Undo/Redo historical buffer stack.
- Regex Find & Replace with case sensitivity, whole-word matching, and occurrence counters.
- Zero-latency sandbox execution for HTML, CSS, JavaScript, SVG, and Markdown.
- Two-way bridge intercepting
console.log,console.info,console.warn, andconsole.error. - Interactive REPL terminal input bar for real-time JavaScript statement evaluation.
- Responsive preview viewports: Fullscreen, Desktop (1280px), Tablet (768px), and Mobile (375px).
- Full compliance with Android Scoped Storage policies (zero broad storage permissions).
- Open single documents (
ACTION_OPEN_DOCUMENT) and complete directory trees (ACTION_OPEN_DOCUMENT_TREE). - Background auto-save with configurable debounce intervals (5s, 10s, 30s, 60s).
- Encoding detection supporting UTF-8, UTF-8 with BOM, UTF-16, and ASCII.
- Pure AMOLED mode (
#000000) for zero battery draw on OLED/AMOLED pixels. - Monokai Dark (
#272822) with pastel syntax accents. - One Dark Pro (
#21252B) with balanced typography. - Dracula Night (
#282A36) with high-chroma violet accents. - GitHub Light (
#FFFFFF) for high ambient daylight readability.
| Combination | Target Action |
|---|---|
Ctrl + S |
Save active file to storage |
Ctrl + F |
Toggle Find bar |
Ctrl + H |
Toggle Find and Replace bar |
Ctrl + G |
Open line jump dialog |
Ctrl + W |
Close current tab session |
Ctrl + R |
Execute code in Web Runner |
Ctrl + Z |
Undo last edit |
Ctrl + Y |
Redo last reverted edit |
Ctrl + , |
Open Settings dialog |
A containerized, reproducible build workflow is implemented at .github/workflows/build-apk.yml.
- Automated Triggers: Runs on all
pushandpull_requestevents tomainandmaster. - Version Tagging: Pushing a tag (
git tag v1.0.0) automatically compiles and publishes a GitHub Release with APK binaries attached. - Manual Execution: Dispatched manually from the Actions tab with configurable options:
- Variant:
debug,release, orboth. - Unit tests: toggle test suite execution before packaging.
- Release creation: direct release drafting toggle.
- Variant:
- Artifact Retention: Automatically uploads
ECODE-debug.apkandSHA256SUMS.txtwith a 14-day retention window.
- JDK 21 (Temurin, OpenJDK, or Zulu)
- Android SDK with Platform 36 and Build-Tools 36.0.0
- Bash terminal (Linux, macOS, or WSL on Windows)
# 1. Clone repository
git clone https://github.com/amialhnina/ECODE.git
cd ECODE
# 2. Grant executable permissions to Gradle wrapper
chmod +x gradlew
# 3. Execute unit and Robolectric tests
./gradlew :app:testDebugUnitTest
# 4. Assemble debug APK
./gradlew :app:assembleDebug
# 5. Output binary path:
# app/build/outputs/apk/debug/app-debug.apk- No Remote Tracking: Zero analytics SDKs, trackers, or telemetries.
- Local Isolation: All files, projects, and editor buffers remain completely on the local device.
- Least Privilege: Only the bare minimum Android system permissions are requested.
- Offline Reliability: Fully functional without requiring an active internet connection.
This project is licensed under the Apache License 2.0. Full terms and conditions are available in the LICENSE file.