{"id":22100765,"url":"https://github.com/data-forge-notebook/data-forge-notebook","last_synced_at":"2025-04-09T14:13:29.747Z","repository":{"id":38393566,"uuid":"451648260","full_name":"data-forge-notebook/data-forge-notebook","owner":"data-forge-notebook","description":"Data-Forge Notebook is a cross-platform notebook application for JavaScript","archived":false,"fork":false,"pushed_at":"2025-03-26T00:46:29.000Z","size":16134,"stargazers_count":77,"open_issues_count":15,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-26T01:27:06.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.data-forge-notebook.com ","language":"TypeScript","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/data-forge-notebook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"ashleydavis"}},"created_at":"2022-01-24T22:03:32.000Z","updated_at":"2025-03-26T00:26:13.000Z","dependencies_parsed_at":"2023-02-15T14:32:02.585Z","dependency_job_id":"e74a9817-8b8e-459b-8960-142f02e89636","html_url":"https://github.com/data-forge-notebook/data-forge-notebook","commit_stats":null,"previous_names":["data-forge-notebook/data-forge-notebook","data-forge-notebook/editor-core"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-forge-notebook%2Fdata-forge-notebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-forge-notebook%2Fdata-forge-notebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-forge-notebook%2Fdata-forge-notebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-forge-notebook%2Fdata-forge-notebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/data-forge-notebook","download_url":"https://codeload.github.com/data-forge-notebook/data-forge-notebook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054193,"owners_count":21039952,"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":[],"created_at":"2024-12-01T05:15:42.127Z","updated_at":"2025-04-09T14:13:29.741Z","avatar_url":"https://github.com/data-forge-notebook.png","language":"TypeScript","funding_links":["https://github.com/sponsors/ashleydavis"],"categories":[],"sub_categories":[],"readme":"# data-forge-notebook\n\nData-Forge Notebook is a cross-platform notebook application for JavaScript and TypeScript.\n\nThe is the mono repo for Data-Forge Notebook.\n\n**DFN v2 has been released**. [Jump into the releases page and download the build for your platform](https://github.com/data-forge-notebook/data-forge-notebook/releases)\n\n[Home page](http://www.data-forge-notebook.com/)\n\n[Intro video](https://www.youtube.com/watch?v=-kmjIBJMWsU)\n\n[Read the wiki](https://github.com/data-forge-notebook/data-forge-notebook/wiki)\n\n[See the issues page and contribute](https://github.com/data-forge-notebook/data-forge-notebook/issues)\n\n[Support the developer](https://codecapers.com.au/about#support-my-work)\n\n## Project structure\n\nA birds eye view of this project:\n\n```\n└───data-forge-notebook ------ The DFN v2 monorepo.\n    ├───packages --------------- Packages shared within the monorepo.\n    │   ├───host-bridge ------------ Communication between DFN and plugins.\n    │   ├───evaluation-engine ------ Implements the code evaluation engine.\n    │   ├───model ------------------ The data model for a notebook.\n    │   ├───notebook-editor -------- Implements the notebook editor.\n    │   └───plugins ---------------- Contains compiled plugins.\n    ├───plugins ---------------- Visualization plugins.\n    │   ├───apex ------------------- Uses Apex to plot charts.\n    │   ├───data ------------------- Visualizes structured data.\n    │   ├───geo -------------------- Uses Leaflet to plot maps.\n    │   ├───html ------------------- Renders HTML markup.\n    │   ├───table ------------------ Renders data in a table.\n    │   └───text ------------------- Displays text data.\n    ├───scripts ---------------- Scripts for building and serving plugins.\n    └───shells ----------------- Various implementations of DFN.\n        ├───browser ---------------- Runs DFN in the browser.\n        ├───electron --------------- Runs DFN in Electron.\n        ├───evaluation-engine ------ HTTP server for the code evaluation engine.\n        ├───testbed ---------------- A browser-based testbed for UI components.\n        └───testbed-cli ------------ A cli-based testbed.\n```\n## Quickstart - Electron\n\n```bash\ncd data-forge-notebook\npnpm install\npnpm run compile\npnpm run electron:dev\n```\n\n## Quickstart - Browser\n\n```bash\ncd data-forge-notebook\npnpm install\npnpm run compile\npnpm run start\n```\n\n## Setup \n\nClone this repo locally, open a terminal and change to the local directory.\n\nThis projects uses `pnpm` instead of `npm` because it's so much faster.\n\nInstall pnpm:\n\n```bash\nnpm install -g pnpm\n```\n\nInstall dependencies for this project:\n\n```bash\ncd data-forge-notebook\npnpm install\n```\n\n## Compile all packages\n\nBefore you should do anything you should compile all TypeScript code to JavaScript. You only have to do this once at the start and you only need to recompile packages when you change code in them.\n\n```bash\npnpm run compile\n```\n\nCompiled JavaScript code is output to the `build` subdirectory for each project.\n\nYou can also compile all packages in watch mode which can be useful if you are changing code and want them to recompile automatically:\n\n```bash\npnpm run compile:watch\n```\n\n## Build plugins\n\nFor static (precompiled, no live reload) builds, you must also build the web pages for all plugins:\n\n```bash\npnpm run build-plugins\n```\n## Run the browser shell\n\nThis runs the whole notebook editor in the browser.\n\n```bash\npnpm start\n```\n\nThe plugins (which are complete web pages in their own right) and also served in \"dev\" mode from the `./plugins` directory. You can edit the code for the plugins, but you might have to manually refresh the browser to see updated plugins.\n\n## Build a static web page\n\nThis builds the notebook editor to a static web page:\n\n```bash\npnpm run build-browser\n```\n\nThe static web page is generated to `./shells/browser/dist/browser`.\n\nThe plugins are automatically built and inlined into the package.\n\n## Run the Electron shell\n\nThis runs the whole notebook editor in Electron (with a static build):\n\n```bash\npnpm run electron:static\n```\n\nTo run in Electron in dev mode:\n\n```bash\npnpm run electron:dev\n```\n\n## Build the Electron installer\n\nFirst set the parent temporary directory required for building. \n\nOn Windows:\n\n```bash\nset BUILD_PARENT_DIR=c:\\temp\n```\n\nOn MacOS / Linux:\n\n```bash\nexport BUILD_PARENT_DIR=/tmp\n```\n\nRun one of the scripts depending on the OS you are on building for:\n\n```bash\npnpm run build-electron-win\npnpm run build-electron-linux\npnpm run build-electron-mac\n```\n\nFor complete build details see [./shells/electron/README.md](./shells/electron/README.md).\n\n## Run the testbed\n\nThe testbed is used for testing selected UI components.\n\n```bash\npnpm run testbed\n```\n\n## Run automated tests\n\n```bash\npnpm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata-forge-notebook%2Fdata-forge-notebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdata-forge-notebook%2Fdata-forge-notebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata-forge-notebook%2Fdata-forge-notebook/lists"}