{"id":13393640,"url":"https://github.com/netgusto/nodebook","last_synced_at":"2025-05-15T17:01:40.909Z","repository":{"id":40513581,"uuid":"147491459","full_name":"netgusto/nodebook","owner":"netgusto","description":"Nodebook - Multi-Lang Web REPL + CLI Code runner","archived":false,"fork":false,"pushed_at":"2024-05-15T05:19:08.000Z","size":4163,"stargazers_count":1644,"open_issues_count":36,"forks_count":84,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-03-31T20:11:13.996Z","etag":null,"topics":["c","clojure","cpp","csharp","elixir","fsharp","go","haskell","java","lua","nodejs","ocaml","php","python","r","repl","ruby","rust","swift","typescript"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netgusto.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":"2018-09-05T09:14:30.000Z","updated_at":"2025-03-27T06:58:02.000Z","dependencies_parsed_at":"2024-12-14T00:06:02.300Z","dependency_job_id":null,"html_url":"https://github.com/netgusto/nodebook","commit_stats":{"total_commits":123,"total_committers":11,"mean_commits":"11.181818181818182","dds":0.2764227642276422,"last_synced_commit":"fc83e60b85ead528e6aadf39447cdacca778c239"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgusto%2Fnodebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgusto%2Fnodebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgusto%2Fnodebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgusto%2Fnodebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netgusto","download_url":"https://codeload.github.com/netgusto/nodebook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247730069,"owners_count":20986404,"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":["c","clojure","cpp","csharp","elixir","fsharp","go","haskell","java","lua","nodejs","ocaml","php","python","r","repl","ruby","rust","swift","typescript"],"created_at":"2024-07-30T17:00:57.794Z","updated_at":"2025-04-07T21:15:41.282Z","avatar_url":"https://github.com/netgusto.png","language":"Go","readme":"# nodebook\n\nNodebook - Multi-Language REPL with Web UI + CLI code runner\n\nUseful to practice algorithms and datastructures for coding interviews.\n\n## What is it?\n\nNodebook is an in-browser REPL supporting many programming languages. Code's on the left, Console's on the right. Click \"Run\" or press \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e or \u003ckbd\u003eCmd\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e to run your code.\nCode is automatically persisted on the file system.\n\n**You can also use Nodebook directly on the command line**, running your notebooks upon change.\n\n![nodebook](https://user-images.githubusercontent.com/4974818/45320903-2cdec280-b544-11e8-9b2e-067b646de751.png)\n\nA notebook is a folder containing an `{index|main}.{js,py,c,cpp,...}` file. The homepage lists all of the available notebooks.\n\n![home](https://user-images.githubusercontent.com/4974818/45383977-fde05380-b60c-11e8-91cc-06548dd4fae8.png)\n\n## Supported environments\n\n* C11 `(.c)`\n* C++14 `(.cpp)`\n* C# `(.cs)`\n* Clojure `(.clj)`\n* Elixir `(.ex)`\n* Fsharp `(.fs)`\n* Go `(.go)`\n* Haskell `(.hs)`\n* Java `(.java)`\n* NodeJS `(.js)`\n* Lua `(.lua)`\n* OCaml `(.ml)`\n* PHP `(.php)`\n* Python 3 `(.py)`\n* R `(.r, .R)`\n* Ruby `(.rb)`\n* Rust `(.rs)` — Uses `cargo run` if `Cargo.toml` is present, and `rustc` otherwise\n* Swift `(.swift)`\n* TypeScript `(.ts)`\n\nIf `--docker` is set on the command line, each of these environments will run inside a specific docker container.\n\nOtherwise, the local toolchains will be used.\n\n## Install from release\n\nHead to [Releases](https://github.com/netgusto/nodebook/releases/latest) and download the binary built for your system (mac, linux).\n\nRename it to `nodebook` and place it in your path.\n\n## Install from source\n\nBuilding requires go.\n\n```bash\n$ make deps\n$ make install\n# nodebook should be available under $GOPATH/bin/nodebook or $GOBIN/nodebook\n```\n\n## Run with Web UI\n\n```\n# With dockerized toolchains\n$ nodebook --docker path/to/notebooks\n\n# With local toolchains\n$ nodebook path/to/notebooks\n```\n\n# Run on CLI (watch and run mode)\n\n```\n$ nodebook cli --docker path/to/notebooks\n# Or\n$ nodebook cli path/to/notebooks\n```\n\n## Usage\n\n### Create a Notebook (Web UI)\n\nClick on the **+ Notebook** button on the Home page, then select the language of the notebook to be created.\n\nOnce on the notebook edition page, you can rename the notebook by clicking on it's name.\n\nNotebooks are created in the directory specified by the parameter `--notebooks`.\n\n### Create a Notebook manually (WebUI, CLI)\n\nIn the directory where you want your notebooks to be stored, simply create a folder containing a file named `{index|main}.{js,py,c,cpp,...}`.\n\nThe notebook's name will be the name of the folder. The notebook language is determined automatically.\n\n### Command line options\n\n* **--docker**: Execute code in disposable docker containers instead of local system; defaults to `false`\n\n**Web UI only**:\n\n* **--bindaddress**: IP address the http server should bind to; defaults to `127.0.0.1`\n* **--port**: Port used by the application; defaults to `8000`\n\n### Notebook environment\n\nIf your notebook dir contains a `.env` file, the corresponding environment will be set up during notebook execution.\n\nExemple `.env`:\n\n```\nHELLO=World!\n```\n\nMore information about the expected file format here: \u003chttps://github.com/motdotla/dotenv#rules\u003e\n\n## ⚠️ A bit of warning ⚠️\n\nDo not run the Web UI on a port open to public traffic! Doing so would allow remote code execution on your machine.\n\nBy default, the server binds to `127.0.0.1`, which allows connection from the localhost only. You can override the bind address using `--bindaddress`, but do it only if you know what you're doing.\n\n","funding_links":[],"categories":["Go","TypeScript","开源类库","Repositories","Open source library","Helper Components"],"sub_categories":["运行器","Runner"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgusto%2Fnodebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetgusto%2Fnodebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgusto%2Fnodebook/lists"}