What is Roost?

  • Roost consists of three crates:

    • roost: A server binary crate to be run on our machine. (Depends upon roost-app)
    • roost-app: An application crate that is a library handling most of the components of Roost.
      • app/src/views: Handles the available views in Roost, such as a FileView and a DirView respectively
      • app/src/state: Handles the application state of Roost, such as obtaining the file and directory contents.
    • roost-client: A client crate that is built to web assembly and served by the roost crate. (Depends upon roost-app)
  • Roost is a fork of the isomorphic web app example within Percy's Github repository.

    • Percy allows for modern web app development features such as:
      • A virtual DOM
      • Server side rendering of a single page application (SPA)
    • Since Roost is an isomorphic web app, other clients could be added such as an electron client.
    • Writing HTML and CSS with Percy is simple because of the html! and css! macros.
      • Examples that use the html! and css! macros can be found in app/src/views/
    • Roost was forked from Percy's isomorphic web app example shortly after the on_visit attribute was added to the route handlers in app/src/lib.rs.
      • This on_visit attribute was a key element of the download example I added to Percy.
  • At the moment Roost allows you to navigate the current state of contents in a local Pijul repository.

    • The repository contents that Roost currently allows you to view are:
      • File contents from the latest patch
      • Current state of directory contents
        • Any changes made to the repository are characterized with colored backgrounds in the directory view
      • Information about previous patches applied to the current file or directory
    • By "current state", it is meant that if you make adjustments to the local repository, those adjustments are reflected in Roost.