## Work in progress!
The new website will:
- be a 100% Hyperloop SPA (featuring Components, Stores, Routes and Operations)
- be built with Opal and Webpack (no Middleman)
- demonstrate the use of hyperloop-js as a simple alternative deployment method (hyperloop-js coming in via NPM)
- consist of just three files (index.html, app.js and app.css)
- have super fast client-side search
- will use HyperRouter for routing
- ultra-responsive UI based on SemanticUIReact (we are ditching bootstrap)
- work online and offline
- HTTP.get all DOCS pages directly from the gems with client-side markdown
- have live editing with (hopefully) a Ruby linter and good error messages
- will be as SEO friendly as the current site (through pre-rendering)
- be beautiful to behold!
## Setup and build
bundle
yarn
- To build packs.js and app.js:
yarn run webpack
(-p for production mode) - To build app.js:
bundle exec rake build
We use Rack and OpelHotReloader as a development environment. Website Components are rebuilt by sprockets on server start. You will need to build bundle.js (yarn run webpack
).
To start the server:
foreman start
Browse http://localhost:9292/
- Add a route to the Router
app/components/router/app_router.rb
- Add a menu item to
app/components/shared/app_menu.rb
- Create folder in components and add a
xxx_page.rb
component which will be rendered by the router. See one of the other examples, each folder has three files -xxx_page.rb
,xxx_body.rb
andxxx_sidebar.rb
(assuming your want the three column layout)
Not all sections need to load pages, but if you do then:
- See the
init
method inapp/stores/site_store
, you will need to add a loader which loads the pages an sets a new key in the@section_stores
hash - Pass the store to
PageBody
andPageToc
and they will redner the Toc and current page and will also handle all navigation and loading of the correct page
- There is one singleton Store -
SiteStore
which contains many instances ofSectionStore
(one per section)
Code blocks need to render properly in Github and also on the site. Some code blocks are live and runanle.
Normal code block - (three-backticks ruby)
```ruby class MyComp < Hyperloop::Component render(DIV) do H1 { 'Hello world' } end end ```
Runable code block - (three-backticks ruby runable)
```ruby runable class MyComp < Hyperloop::Component render(DIV) do H1 { 'Hello world' } end end ```
All runable code blocks must have a Hyperloop Component class Anything < Hyperloop::Component
somewhere near the beginning of the code block.