{"id":20663541,"url":"https://github.com/desktop-cgi/desktop-cgi","last_synced_at":"2026-04-02T02:49:57.852Z","repository":{"id":64497010,"uuid":"503218247","full_name":"desktop-cgi/desktop-cgi","owner":"desktop-cgi","description":"Desktop-CGI Application Tooling/Framework for Hybrid Desktop Applications. Desktop-CGI is a desktop executable tool that is created using electron, nodejs based server that serves - CGI files, embedded webserver served CGI apps (PHP, Ruby, Python, Perl, CGI, JSP, ASPX, Other Interpreted Languages), or remote proxy webserver apps (any)","archived":false,"fork":false,"pushed_at":"2023-09-19T03:00:20.000Z","size":1012,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-17T12:35:16.298Z","etag":null,"topics":["android","cgi-js","cgijs","cli","desktop-app","desktop-application","desktop-cgi","desktop-cgi-cli","desktopcgi","desktopcgi-cli","ios","linux","mac","perl","php","python","rust","tooling","webapp","windows"],"latest_commit_sha":null,"homepage":"","language":"EJS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/desktop-cgi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-06-14T05:17:24.000Z","updated_at":"2024-01-12T18:31:52.000Z","dependencies_parsed_at":"2024-11-16T21:16:26.343Z","dependency_job_id":null,"html_url":"https://github.com/desktop-cgi/desktop-cgi","commit_stats":null,"previous_names":["desktop-cgi/desktop-cgi-application"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-cgi%2Fdesktop-cgi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-cgi%2Fdesktop-cgi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-cgi%2Fdesktop-cgi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/desktop-cgi%2Fdesktop-cgi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/desktop-cgi","download_url":"https://codeload.github.com/desktop-cgi/desktop-cgi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242821496,"owners_count":20190654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["android","cgi-js","cgijs","cli","desktop-app","desktop-application","desktop-cgi","desktop-cgi-cli","desktopcgi","desktopcgi-cli","ios","linux","mac","perl","php","python","rust","tooling","webapp","windows"],"created_at":"2024-11-16T19:18:36.173Z","updated_at":"2025-12-30T19:59:31.745Z","avatar_url":"https://github.com/desktop-cgi.png","language":"EJS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# desktop-cgi\n\nDesktop-CGI is a desktop executable app that can be created from any CGI files or CGI web apps that can be served from an file, an embedded web server using proxy, or an remote proxy web server. It supports embedding and managing embeddable databases and executables. It supports all major Operating systems supported by electron like Windows, Linux, and MacOS supported by Electron.\n\n`[Funding Invited]`\n\n`[Team and Community Managers Invited]`\n\n![Desktop CGI](./dev_support/assets/desktop-cgi.jpeg)\n\n# Highlights\n\nDesktop-CGI can serve any CGI files, OR CGI / Scripted / Interpreted languages like `PHP`, `Ruby`, `Python`, `Perl`, `JSP`, `ASPX`, `Other Interpreted` Languages through `embedded webservers` (along with `embedded databases` or `embedded executables`), OR any `remote proxy` (any protocol / webserver) apps using the `cgifiles`, `processes`, and the `proxy` modules respectively.\n\nDesktop-CGI runs an Electron - Node - Express based application under the hood and supports major Operating systems like Windows, Linux, Mac or any operating systems supported by Electron.\n\n# Setup Desktop-CGI [IN DEVELOPMENT]\n\n* Generate the `executable using shell scripts`\n  * Download and Install Dependencies using `shell` scripts\n  * Run the `setup.bat` or `setup.ps1` in Windows or `setup.sh` in linux/ mac to download dependencies and set up the repository\n    * Following steps are run when the setup shell command is run\n      * Install `node.js` from [https://www.nodejs.org](https://nodejs.org/en/download/).\n      * (A) `Golang` for `wails` based, (B) `Rust` for `tauri` based, and (C) `nodejs` and `electron` for `electron` based\n      * Other dependencies\n        * For [base-electron](https://github.com/desktop-cgi/base-electron): Install [dependencies](https://github.com/desktop-cgi/base-electron/blob/a885d410503438e01a86758a67fe65f04b580091/readme.install.dependencies.links.txt)\n        * For [base-wails](https://github.com/desktop-cgi/base-wails): Install GoLang and [dependencies](https://github.com/desktop-cgi/base-wails/blob/14f76e6aa99c3bb641ed1ac174eb6ca2a07ff9eb/readme.install.dependencies.links.txt)\n        * For [base-tauri](https://github.com/desktop-cgi/base-tauri): Install [dependencies](https://github.com/desktop-cgi/base-tauri/blob/ebdc2cc29502518ab0e60b60bafbe21c4f5fe546/readme.install.dependencies.links.txt)\n      * Clone the [Git repository](https://github.com/desktop-cgi/desktop-cgi) (Alternatively, download the git repository)\n      * Change to the git repository directory / folder `cd path/to/desktop-cgi` from command line / shell / powershell\n      * Setup the repository for creation of executables with all needed dependencies\n  * Run the `genexe.bat` (win) or `genexe.sh` (linux/ mac) with its arguments as needed for `www`, `config` folder and `other arguments` to generate the executable as needed\n* Generate the `executable using docker command`\n  * Run the `docker` run command with its arguments as needed for `www`, `config` folder and `other arguments` to generate the executable as needed\n\n\u003c!-- * Run command `npm install`\n* Add your application in the respective `www` folder or sub-folder [TODO - Simplify]\n* Check and modify `server/config/config-**template**.json` file for your application's configuration needs\n* Check if your electron app runs using command `npm run electron`\n* Run command `npm run electronbuild` [TODO - Simplify]\n* [Demo] A demo app is placed in the folder [www\\demoapp](./www/demoapp) --\u003e\n\n# Functionality Details\n\nThe Desktop-CGI based executable can be created using `electron`, `wails` (todo), and `tauri` (todo) and your own web application made from any web scripting language of your choice.\n\n\n#### Functionality Progress\n\n\n* [P] Multiple Executable Build/ Generation formats\n    * [P] Electron\n    * [T] Wails\n    * [T] Tauri\n* [P] Multiple Languages Support for Hybrid Apps\n    * [D] PHP\n    * [D] Nodejs\n    * [D] JSP\n    * [D] ASPX\n    * [D] Ruby\n    * [D] Perl\n    * [P] Binary Executable based web apps\n        * [P] Java\n        * [P] GoLang\n* [P] Multiple Modes\n    * [D] File Access/ Execution\n    * [D] Proxy for Web App\n    * [P] Web Server\n        * [P] Direct Access\n        * [P] Proxy Access\n* [P] Multiple Bases\n    * [P] Nodejs - Express\n    * [T] Nodejs - Extendible Other frameworks\n* [P] Multiple (Embedded: E) Server Options\n    * [D] Remote Server (using proxy)\n    * [P] (E) Nginx\n    * [P] (E) Apache\n    * [P] (E) Mongoose\n    * [P] (E) Putty\n    * [P] (E) Tomcat\n    * [T] (E) Nodejs Server\n    * [T] (E) Loadbalanced Nodejs Server\n* [P] Multiple (Embedded: E) Database Options\n    * [P] (E) SQLite\n    * [P] (E) MySQL\n    * [P] (E) Maria DB\n    * [P] (E) Postgres\n    * [P] (E) MongoDB\n    * [P] (E) Redis\n    * [P] (E) Others (Extendable)\n* [P] Multiple Embedding Options\n    * [P] Any (E) executable\n    * [P] Binary Executable based web apps\n        * [P] Java\n        * [P] GoLang\n\n\nThe functionality details are as follows:\n\n* You should be able to run all files created from `php`, `aspx`, `jsp`, `nodejs`, `python`, `ruby`, `perl` or other scripting languages of your choice using the `cgifiles` definition section of the config file.\n* You should also be able to run and manage other executable binaries like `web server`, `message queues` or `databases` for any of your requirements using the `processes` definition section of the config file.\n* It pipes web applications created from `php`, `aspx`, `jsp`, `nodejs`, `python`, `ruby`, `perl` or other scripting languages of your choice using a embedded web server of your choice using the `processes` definition section of the config file.\n* If your web application is a binary executable that serves an entire web application and web server on its own like `golang`, `c++`/ `c`, or a `java` based executable the Desktop-CGI can manage this as an embedded binary using the `processes` and the `proxies` definition sections of the config file.\n* Creation of an `electron` or `wails` based executable can be as simple as creating your `config.json` file, specifying the `www`, `binaries` resources folder, and running the `genexe` script or `docker` command.\n\n##### Desktop-CGI application runs a CGIJS based CGI serving Server whether using a `Electon`, `Wails`, `Tauri` based base\n\n* Desktop-CGI uses any nodejs framework along with `cgijs` to serve any `CGI` file, `web apps`, `local`/ `remote` `proxies` to create a native-like desktop executable.\n* `cgijs` is Nodejs package which is framework independent / agnostic for serving CGI or interpreted scripting apps via files, or server based web apps via proxies.\n  * `Express` Recommended and used for demo.\n  * Any other Nodejs framework like `koa`, `fastify`, etc can be used to create similar `cgijs` based applications. `cgijs` is framework `independent` and `agnostic`.\n* Allows running `any interpreted script files` that supports CGI based file script serving - using `cgijs file` module\n* Allows running `any host` that serves a `web app` - using `cgijs proxy` module\n  * In App / Local / Remote proxy support\n* Allows `embedding servers` like `httpd`, `nginx`, etc to serve web applications - using `cgijs process` module\n* Allows `embedding database servers` (in development) - using `cgijs process` module\n* Allows `embedding executables` (in development) - using `cgijs process` module\n* Allows\n  * running multiple language interpreters in one app\n  * running multiple proxies (currently `http`, `websockets`. Other protocols like `tcp`, `udp`, `grpc`, `sockets` planned) in one app\n  * managing multiple embedded (http) servers in one app\n  * managing multiple embedded executables in one app\n\n##### The script should pipe all interpreted language files below\n\n* Python (2.x, 3.x)\n* Perl (Version Independent)\n* PHP (Version Independent)\n* Ruby (Version Independent)\n\u003c!-- * .NET (Version Independent) --\u003e\n\u003c!-- * JSP (Version Independent) --\u003e\n\n##### The script will pipe all proxies of above languages and following (to be tested)\n\n* Jsp (With Tomcat embedded)\n* Aspx (Version Independent - With local IIS proxy, Apache embedded)\n* Any app using local / remote proxy (currently http, websockets. tcp, udp, grpc, socket planned)\n\n##### The script should currently allow embedding following servers for proxy [TODO: In Development]\n\n* Apache HTTPD (Allows Embed \u0026 Proxy)\n* Apache TomCat (Allows Embed \u0026 Proxy)\n* Nginx (Allows Embed \u0026 Proxy)\n* Mongoose http server (Allows Embed \u0026 Proxy)\n\nThe script can proxy to any File, most embeddable web servers, and/ or Proxy-able local / remote servers; even IIS Server (Allows Proxy)\n\n\n#### Note\n\n#### Electron Base Package Dependencies\n\n* Library dependencies:\n  * Nodejs: (\u003e 8.x)\n\n* Application Dependencies:\n  * cgi-js: (\u003e=1.1.0)\n  * electron\": (\u003e=18.1.0)\n  * relevant compiling packages\n\n* Application Demo Dependencies:\n  * body-parser: (\u003e=1.20.0)\n  * ejs: (\u003e=3.1.7)\n  * express: (\u003e=4.18.0)\n  * fsevents: (\u003e=2.3.2)\n  * socket.io: (\u003e=4.5.0)\n  * ws: (\u003e=8.5.0)\n\n# Technical Specifications\n\n...  * Technical specifications to be added\n\n# Wiki\n\n...  * Wiki link to be added\n\n# Status\n\n    In active development\nYou can track development status here [desktop-cgi/projects](https://github.com/orgs/desktop-cgi/projects/2)\n\n# Open Unmoderated Communities\n\n[Facebook](https://www.facebook.com/groups/732258757997109), [Quora](https://desktopcgi.quora.com/), [Github Discussion](https://github.com/desktop-cgi/desktop-cgi/discussions)\n\n# Issues and Contributions\n\n[Raise an Issue or Contribute](https://github.com/desktop-cgi/desktop-cgi/issues). Active Contributors are invited.\n\n# Todo\n\nCheck file - [.todo](https://github.com/desktop-cgi/desktop-cgi/blob/main/dev_support/todo/.todo)\n\n# References\n\n[Electron Application Distribution](https://www.electronjs.org/docs/tutorial/application-distribution)\n\n[Wails Application Distribution](https://wails.io/docs/gettingstarted/building)\n\n[Tauri Application Distribution](https://tauri.app/v1/guides/distribution/publishing)\n\n# License\n\nThe MIT License (MIT) - See [LICENSE](./LICENSE) for further details\n\nCopyright © 2019 - till library works:\n    Ganesh B \u003cdesktopcgi@gmail.com\u003e\n\nThe project is intended to be maintained seriously.\n\u003c!-- Consider latest version feature: https://api.github.com/repos/DEDAjs/deda-service-manager/releases/latest --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesktop-cgi%2Fdesktop-cgi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdesktop-cgi%2Fdesktop-cgi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesktop-cgi%2Fdesktop-cgi/lists"}