Giter Club home page Giter Club logo

project-helix.io's Introduction

project-helix.io

Project Helix documentation site based on… Helix!

Check www.project-helix.io.

Installation

Clone current repo and simply run hlx up.

If you want to see content from remote repository, run git submodule init

If you want to locally emulate the behaviors on the public host (especially when working with navigation links, multiple content repos with one code repo...), use:

hlx up --host www.project-helix.io

Deployment and publication

Setup

Ensure that you have the correct environment variables set in your .env file:

$ ln -s secrets/helix.env .env
$ cat .env
HLX_WSK_NAMESPACE=helix-pages
HLX_WSK_AUTH=...
HLX_FASTLY_NAMESPACE=...
HLX_FASTLY_AUTH=...

If the secrets/helix.env env file is missing, you need to decrypt it first. We're using BlackBox to encrypt sensitive information in the git repository, e.g. the secrets/helix.env file containing API tokens, keys etc. If you are new to BlackBox follow the Installation instructions and refer to the BlackBox Commands.

Once you've added yourself as an admin via blackbox_addadmin <email address> (and committed the changes), one of the existing admins will need to re-encrypt the files. Check the list of admins (blackbox_list_admins) and contact one of them. Once the admin re-encrypted the files you will be able to run:

blackbox_decrypt_all_files

Deploy

hlx deploy --default REPO_RAW_ROOT https://raw.githubusercontent.com --default REPO_API_ROOT https://api.github.com/

Publish

hlx publish

project-helix.io's People

Contributors

bdelacretaz avatar davidnuescheler avatar dependabot[bot] avatar kptdobe avatar rofe avatar stefan-guggisberg avatar trieloff avatar tripodsan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

project-helix.io's Issues

Pre-requisites in getting started?

Is having git installed really a pre-requisite to get started? i haven't tried without but i am not sure it really is...

I think at this stage MacOSX is a pre-requisite though, at least for the 60s version.

Create robot.txt and sitemap.xml

In order for the site to be properly indexed and the search feature to work as expected with need:

  • robot.txt
  • sitemap.xml referencing all the pages - that's where the subdomain trick (client, pipeline) will not work anymore).
    In a first step, the sitemap will be managed manually. In a second step it could be generated out of SUMMARY.md (but what about content that does not have an entry point here...).

This would also mean that the content is properly defined.

Create code that aggregates content stored on other repositories

project-helix.io is supposed to be the entry point for helix documentation. Some parts like the hypermedia-pipeline or helix-cli are stored on various git repo: they all have their own documentation (which might be Helix agnostic) which we need to referenced from the project-helix.io.

Idea is to use multiple namespaces (strains / fastly services), like:

  • www.project-helix.io (code: project-helix.io, content: project-helix.io)
  • hypermedia-pipeline.project-helix.io (code: project-helix.io, content: hypermedia-pipeline)
  • helix-cli.project-helix.io (code: project-helix.io, content: helix-cli)

The entry points to those "subdomains" would be handled via a hand-managed navigation, centralised inside a SUMMARY.md stored in the project-helix.io repo.

Goal here is to create the necessary structure to handle those "subdomains", add navigation references to those which have relevant content and to document how to onboard a new subdomain.

smoke test deploy and publish

With test/smoke/test.hlx.up.js, there's already a smoke test for hlx up i.e. the dev environment. We should extend it to also test hlx deploy and publish in order to ensure the integrity of deployed action and the published site.

Setup linting

Proper linting setup should be added to the project to have nice looking code and avoid complains from LGTM.

Include Schema Documentation

The schema documentation right now links to the raw files on GitHub instead of being served through Helix, because the foo.schema.html is interpreted as a call to schema_html.htl, i.e. schema is the selector.

I've been thinking about approaches to solving this including:

  1. getting jsonschema2md to generate files that don't have more than one dot in the file name
  2. allowing a configuration in Helix to determine which names are valid selector names
  3. allowing Helix to do fall-backs in case a selector function can't be found
  4. finding a project-level workaround

As I think configurations (2) and fallbacks (3) complicate things, the most promising options seem to be (1) or (4). One way to implement (4):

  • create a schema_html.htl and schema_html.pre.js
  • in pre.js add a before.fetch extension point that replaces foo.md with foo.schema.md
  • go on as before

Revisit structure and get rid of submodules

Following up on adobe/helix-cli#614

The submodules and the strains where built to support multiple content repository and local development: the local checkout of the submodules allows to navigate locally to those websites. I think the helix-cli supports now this use case via the strains and the urls. We could get rid then of the submodules.

Missing documentation how to build composed pages.

When i started to work on helix it was hard to find any information how to create composed page that has different scripts for navigation, footer etc. There is short mentioning about ESI tags in the cache section. It would help a lot to have some dedicated point with an example.

Error when updating submodules

The commit 3dda31c changed subdomains/hypermedia-pipeline to subdomains/helix-pipeline in the .gitmodules file but didn't update the entry in the subdomains directory.

This means that running git submodule init errors with the output:

fatal: No url found for submodule path 'subdomains/hypermedia-pipeline' in .gitmodules

project-helix.io Phase 1 - Go Live

Go Live of the project-helix.io site with a minimum of content, helpx styles and some links leading to external repo (hypermedia-pipeline and / or helix-cli) documentation.

Go Live pre-requisites is a deep content review!

Document debugging capabilities

We need to keep the documentation up-to-date regarding the debugging capabilities:

  • how to debug HTL
  • how to debug the pre.js
  • how to debug with Chrome
  • how to debug with VSC plugin
  • how to console log the payload
  • ... ?

Setup CI for dev and production site

An Helix project comes with some CI capabilities. We need to make sure here they are relevant and are on the radar. The goals here are:

  • make sure the project-helix.io is always running and accessible
  • project-helix.io code and content is tested against the latest Helix code
  • we have a Go Live procedure which makes sure everything is tested and nothing is broken

Publish fails due to expired Fastly token

Following the instructions on the README.md to deploy and publish the site, hlx publish fails with the following output:

$ hlx publish
Publishing [==------------------------------------------------] preparing fastly transaction 0.0s
error: Error while running the Publish command: FastlyError: Token XXXXXXXXXXX expired at 2019-04-16T08:19:38Z
    at request.then (/Users/stefan/.nvm/versions/node/v10.15.3/lib/node_modules/@adobe/helix-cli/node_modules/@adobe/fastly-native-promises/src/httpclient.js:100:17)
    at process._tickCallback (internal/process/next_tick.js:68:7)Token 2KGK5kEqD7lAuJbumSPjcl expired at 2019-04-16T08:19:38Z
Error while running the Publish command

Initialise project code with helpx code

For a quick startup, we will just re-use helix-helpx look&feel and code, i.e. css, htl and pre.js.
Since project-helix.io is a reference project, we only need to make sure this still follows the current best practices (helpx is 2 or 3 months old)

Define precise sitemap

In order to create meaningful content, we should have a clear picture of the content we want to output. The more precise we are on the sitemap, the better structured and quality content we will have.

Documentation: clarification regarding dynamically rendered components

I couldn't find in the documentation any information how to create a page with dynamic elements. For example if it is possible or how to create dynamically computed navigation.
It can be created using github api in the rendering script but does helix provide any support for this? Github api has limits and they might be low for anonymous user, this could be resolved by account support.

It would be great to have some concept outlined in Documentation. If it is not recommended to build such structures with helix it is good to mention it there also.

Cannot install helix on Windows 10

λ curl -sL https://www.project-helix.io/cli.sh | sh

downloading hlx installer v0.13.10 ...

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 605 0 605 0 0 605 0 --:--:-- --:--:-- --:--:-- 860
100 36.2M 100 36.2M 0 0 7414k 0 0:00:05 0:00:05 --:--:-- 8659k

running hlx installer v0.13.10 ...

Verifying archive integrity... 100% All good.
Uncompressing SFX installer for hlx 100%

cp: cannot create regular file '/usr/local/bin/hlx': No such file or directory
failed to install hlx, aborting

Implement search

Search box is there but does nothing.
Goal: use google search on the project-helix.io site.

Strain cookie bleeds into ESI request

problem can be seen on www.project-helix.io.
if a X-Strain cookie is set, the ESI include for the summary also tries to load the summary from client.project-helix.io, although it the esi include is for www.project-helix.io

<div class="main">
  <div class="nav">
  <!-- include https&#x3a;&#x2f;&#x2f;www.project-helix.io&#x2f;SUMMARY.summary.html-->
  Error 404: 404: Not Found
   
  </div>
  <div class="content">

Action Logs:

    "2018-11-20T02:39:40.135435024Z stdout: error: Could not fetch Markdown from https://raw.githubusercontent.com/adobe/helix-cli/master/SUMMARY.md"

Cookie:

image

After clearing the cookie, the ESI include works. but then the cookie is set again...

Cannot helix deploy the project

Just run hlx deploy in the project (after decrypting and sourcing the env file) - you get error the following error:

[==================================================] analyzing html.js 0.0s
[==================================================] packaging zwitch 0.0s✅  packaging completed
[====================------------------------------] deploying summary_html.js 0.0sPUT https://adobeioruntime.net/api/v1/namespaces/helix/packages/helix-services?overwrite=true Returned HTTP 409 (Conflict) --> "Resource is a package and cannot be converted into a binding."
warn: None of the strains contains package information. Aborting command.

@tripodsan feedback: use hlx deploy --static=build instead.

I think hlx deploy should work with any extra magic property.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.