Skip to content
Janis Jansen edited this page Dec 24, 2020 · 2 revisions

Welcome to the Codebook wiki!

All documentation for this project will happen here for now!

Because I want this to kind of be a success (at least so that I can use it and feel good), I feel like it's necessary to do a lot of documentation from the start. In this wiki you will find explanations of my thoughts, the code and the project architecture!

The idea behind Codebook

I love to use notebooks for writing things down, testing code, drawing plots or sharing knowledge. However, there are multiple issues I have with existing notebook software. Codebook aims to be more suitable for all users:

  1. You should be able to properly present your notebooks. This will be done with a nice presentation view.
  2. When you want to share your notebook, other people should not need to install dependencies again, make sure to have the same compiler versions, executing all the cells again... it should just work.
  3. It should work in the cloud but also offline. It should also be easy to versionize, for example using git.
  4. Code should be executed only in one way. I know there are reasons to execute cells in a different order, but that should be done in a nicer way.

Talking Tech!

  • The UI is developed as a PWA in Angular. This way users can easily run it in the cloud, but also offline or as a desktop app.
  • The Code is executed via WebAssembly, so it's really really fast and there is no need for a server (though it's definitely possible to use one).
  • The Code execution is written in Go and is maintained here.
  • Codebooks can be stored in firebase (that's already working, with automatic synchronization of changes), but of course it must also run offline! Codebooks can be downloaded as JSON-based files and then be used via the desktop app.
Clone this wiki locally