/nbook

Beautiful notebook for javscript enthusiasts, data analysts and more.

Primary LanguageJavaScriptMIT LicenseMIT

nbook

Beautiful notebook for javscript enthusiasts, data analysts and more.

This project is under active development and it has no stable release yet.

TODO

  • General
    • Dockerization
    • Use json-rpc on top of socket.io instead of only events
    • Publish on dockerhub
    • Publish server on npm
    • Write better readme
    • Write documentation
    • Write some typescript declarations for packages
    • Authentication
    • Notebook Auto-save
    • Notebook Auto-backup
    • Notebook versioning / checkpoints
    • SSR for notebook renderers
    • Service worker for cache and handling offline
    • Add more examples
    • Use linux namespaces (or docker) for runtime isolation
  • File explorer
    • File navigation
    • Open notebook from file explorer
    • Filesystem CRUD
  • Notebook editor
    • Code editor using Microsoft Monaco Editor
    • Visualization mode
    • Show runtime resource usage
    • Hotkeys for saving and running block
    • Allow user to reload runtime
    • Allow user to run garbage collector on runtime process
    • Allow user to disable edition (Lock Block)
    • Allow user to disable cache for a block
    • Allow user to mark block as visible in visualization mode
    • Allow user to mark block for running out of the main block context
    • Print button
    • Show timings for blocks
    • Show code suggestions and docs considering context and installed packages
    • Stop button
    • Cache renderer assets
    • Show runtime log
    • Repl mode
    • Locked editor mode (lock full view)
    • Allow user to move blocks (reorder)
    • Allow user to mark block as disabled (runtime should not run that block)
  • Notebook runtime
    • Allow top-level await on blocks
    • Block level cache
    • Block level error handling
    • Register block timings
    • Install npm packages from block
    • Require npm packages and js/json files from block
    • Programmatically stop execution
    • Programmatically skip block execution
    • Add functionality to export block results to the frontend
    • Store and provide secrets
    • Skip disabled blocks
    • Block level logging
    • Block breakpoints and debugging
    • Secure access to filesystem
  • Packages
    • @nbook/core (runtime)
    • @nbook/md (markdown renderer)
    • @nbook/plot (chart.js data renderer)
    • @nbook/table (data table renderer)
    • @nbook/request (synchronic requests for nbook)
    • @nbook/result (move from @nbook/core)
    • @nbook/dev (toolkit for nbook package development)
    • @nbook/p5 (processing.js renderer)
  • Examples
    • Install packages from block
    • Results
    • Secrets
    • @nbook/request
    • @nbook/plot
    • @nbook/md
    • @nbook/table
    • mongodb connection
    • mysql connection
    • google spreadsheets connection
    • access filesystem