{"id":22497769,"url":"https://github.com/helgesverre/jadx-webgui","last_synced_at":"2026-05-06T10:32:57.876Z","repository":{"id":264967294,"uuid":"860169645","full_name":"HelgeSverre/jadx-webgui","owner":"HelgeSverre","description":"🧪 Experimental Web GUI for real-time APK decompilation using JADX, Docker, Flask, and SocketIO.","archived":false,"fork":false,"pushed_at":"2024-09-25T01:02:25.000Z","size":699,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T21:35:13.908Z","etag":null,"topics":["docker","docker-compose","flask-application","jadx","jadx-gui","svelte","webapp"],"latest_commit_sha":null,"homepage":"","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HelgeSverre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-20T00:27:14.000Z","updated_at":"2024-09-25T01:03:03.000Z","dependencies_parsed_at":"2024-11-27T01:47:03.963Z","dependency_job_id":"8f902c4c-9726-41ca-b1a1-791c09aba94a","html_url":"https://github.com/HelgeSverre/jadx-webgui","commit_stats":null,"previous_names":["helgesverre/jadx-webgui"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HelgeSverre/jadx-webgui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelgeSverre%2Fjadx-webgui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelgeSverre%2Fjadx-webgui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelgeSverre%2Fjadx-webgui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelgeSverre%2Fjadx-webgui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HelgeSverre","download_url":"https://codeload.github.com/HelgeSverre/jadx-webgui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HelgeSverre%2Fjadx-webgui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32689141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T08:33:17.875Z","status":"ssl_error","status_checked_at":"2026-05-06T08:33:17.221Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","flask-application","jadx","jadx-gui","svelte","webapp"],"created_at":"2024-12-06T20:40:58.642Z","updated_at":"2026-05-06T10:32:57.844Z","avatar_url":"https://github.com/HelgeSverre.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌩️ APK Decompiler - In the *Cloud* 😱\n\n## ✨ Overview\n\nThis project demonstrates real-time output streaming from a backend process to a frontend using SocketIO and Python.\nIt uses [JADX](https://github.com/skylot/jadx) to decompile an uploaded APK file, streaming the output to the frontend\nin real-time. Additional features\ninclude browsing decompiled files and scanning for URLs and Firebase keys.\n\nThe project serves as a testbed for ideas, exploring how to build upon this concept. It's not intended for production\nuse but as a learning tool for working with websockets, Docker, and Flask, and building tools for APK analysis.\n\nFeel free to fork and play around with it.\n\n## 🚀 Features\n\n- **Real-Time Output Streaming**: Uses SocketIO to stream live output from the backend process (JADX) to the frontend,\n  providing immediate feedback.\n- **Wrapping a Complex Process**: Demonstrates how to handle and stream output from a non-trivial task like APK\n  decompilation.\n- **Dockerized Environment**: Both backend and frontend are containerized using Docker, making it easy to build and run\n  the application.\n- **Tech Stack**:\n    - **Backend**: Flask (Python) for the API, with SocketIO for real-time communication.\n    - **Frontend**: Svelte with TailwindCSS for building a responsive user interface.\n\n## 🛠️ Setup and Installation\n\n### Clone the Repository\n\nClone the repository to your local machine:\n\n```shell\ngit clone git@github.com:HelgeSverre/jadx-webgui.git\ncd jadx-webgui\n```\n\n### Quick Start with Docker Compose\n\nTo build and run the application using Docker Compose:\n\n```shell\n# Build and run the containers\ndocker compose up --build -d\n\n# Stop and remove containers\ndocker compose down\n```\n\nAccess the application at `http://localhost:8080`.\n\n### Backend Setup\n\nTo build and run the backend separately:\n\n```shell\n# Navigate to the API directory\ncd api\n\n# Format the Python code\npipx run black app.py\n\n# Build the Docker image\ndocker build -t decompiler-backend .\n\n# Run the Docker container\ndocker run -p 8080:5000 \\\n  -v $(pwd)/uploads:/tmp/uploads \\\n  -v $(pwd)/decompiled:/tmp/decompiled \\\n  decompiler-backend\n\n# Or as a one-liner\ndocker build -t decompiler-backend . \u0026\u0026 docker run -p 8080:5000 -v $(pwd)/uploads:/tmp/uploads -v $(pwd)/decompiled:/tmp/decompiled decompiler-backend\n```\n\n### Frontend Setup\n\n#### Using Docker 🐳\n\n```shell\n# Build the Docker image\ndocker build -t decompiler-frontend .\n\n# Run the Docker container\ndocker run -p 3000:3000 decompiler-frontend\n```\n\n#### Without Docker 🚀\n\n```shell\n# Navigate to the web directory\ncd web\n\n# Install dependencies\nyarn install\n\n# Format the code\nyarn format\n\n# Run the development server\nyarn dev\n```\n\n## 🧹 Code Formatting\n\nTo maintain code consistency:\n\n```shell\n# Format backend Python code\npipx run black api/app.py\n\n# Format frontend code\nyarn --cwd web format\n\n# One-liner for both\npipx run black api/app.py \u0026\u0026 yarn --cwd web format\n```\n\n## 📝 Notes\n\nThis project is primarily an experiment to see how to stream output from a backend process to the frontend in real-time\nusing sockets. It serves as a practical example of handling complex tasks within a Dockerized environment and streaming\ntheir output, rather than focusing solely on the APK decompilation.\n\n## ⚠️ Disclaimer\n\n\u003e This project is provided for educational and research purposes only. The authors and contributors are not responsible\n\u003e for any misuse or damage that may result from using this tool. Users should ensure they have the right to decompile\n\u003e and\n\u003e analyze any APK files they process with this tool.\n\u003e\n\u003e Remember that decompiling applications without permission may violate terms of service, copyright laws, or other legal\n\u003e agreements. Always respect intellectual property rights and use this tool responsibly and ethically.\n\u003e\n\u003e By using this software, you agree to these terms and acknowledge that you use it at your own risk.\n\nYou know the drill.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelgesverre%2Fjadx-webgui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelgesverre%2Fjadx-webgui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelgesverre%2Fjadx-webgui/lists"}