npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tutors

v1.6.4

Published

Static course web site generator

Downloads

88

Readme

tutors

Introduction

A static web site generator for producing course web sites from largely markdown content. For example this site here is generated using this tool.

Here is a portfolio of courses:

Here is a course on using tutors:

This course was developed using tutors - the course 'source' is here:

Quick Start

Make sure you have node.js installed.

Normally the LTS version would be the most suitable. You should also have git installed:

On windows, it is often easier to make sure git is integrated into the standard command prompt (an option when installing git on windows).

Once these are installed, enter this command:

npm install tutors -g

This will install the tutors command globally on your workstation. Now, to create a starter template course, enter this command:

tutors new

This will create a new course, populated with some template talks, resources and labs. To build the course, enter the following:

cd tutors-starter-0

tutors

A folder called './public-site' will be generated containing a html site of the course.

More Detail...

The structure of the site follows a set of filename and folder nested conventions to layout topics, labs and talks:

├── course.md
├── credits
├── mbignore
├── topic01
│   ├── topic.md
│   ├── topic.png
│   ├── book-01
│   │   ├── 00.Lab-01.md
│   │   ├── 01.01.md
│   │   ├── 02.02.md
│   │   ├── 03.03.md
│   │   ├── 04.04.md
│   │   ├── 05.Exercises.md
│   │   ├── archives
│   │   │   └── archive.zip
│   │   └── img
│   │       ├── 01.png
│   │       ├── 02.png
│   │       └── 03.png
│   └── talk-01
│       ├── talkname.pdf
│       ├── talkname.md
│       └── talkname.png
├── topic02
│   ├── topic.md
│   ...

Labs are step by step instructions focused on a specific task. Talks are simple pdf presentations. Topics are collections of talks and labs.

Commands

To explore some of the options, clone this course first:

git clone https://github.com/wit-tutors/tutors-course-src.git

Change into the folder containing the cloned repo and run tutor:

cd tutors-course-src
tutors

If all goes smoothly, you should see on the console a list of the topics as they are generated for the sample course:

tutors course web generator: 1.4.1
 Setup
 Talks:
  -->Introducing Tutors
  -->Tutors Course Structure
 Labs:
  -->Lab-01-Setup
 Composition
 Talks:
  -->Composing Labs
 Labs:
  -->Lab-02-Composition
 Publishing
 Talks:
  -->Publishing to Github & Moodle
 Labs:
  -->Lab-03-Publish
  -->Lab-04-Moodle
 Portfolios
 Talks:
  -->Portfolios
 Labs:
  -->Lab-05-Portfolio
 Git
 Labs:
  -->Lab-06-Git Introduction
  -->Lab-07-Branching and Merging

The site will be generated into a folder called public-site in the same folder. If you open index.html in there you should see this site, generated locally:

The tutors command is context sensetive, so will build the complete course if run from the top level, a single topic (with all its talks and labs) if run from within a topic folder, and it will build a single book/lab if run from in a book folder.

##Course Web Source File Structure

In the root folder of a course web, there are a few general files:

├── course.md: high level summary of course
├── credits: list of contributors
├── mbignore: list topics to exclude from the course web

The remainder is the topics folders:

├── topic-01
├── topic-02
├── topic-03
│   etc ...

Each topic consists of:

├── topic-01
│   ├── topic.md: topic title + summary
│   ├── topic.png: Image file for topic
  • a list of talks and labs:
    ├── talk-01: the first slide deck
    ├── talk-02: the second slide deck
    ├── book-01: the first lab
    └── book-02: the second lab

Each talks consists of:

    └── talk-XX
        ├── talkname.pdf: the slide deck
        ├── talkname.md: a summary of the talk
        └── talkname.png: an image to represent the talk on the course web

Each lab contains a series of steps each encoded in markdown. They are numbered as XX.Title.md, where number is typically two digits starting with 00:

    └── book-01
        ├── 00.Lab-01.md
        ├── 01.01.md
        ├── 02.02.md
        ├── 03.03.md
        ├── 04.04.md
        ├── 05.Exercises.md
        ├── archives
        │   └── archive.zip
        └── img
            ├── 01.png
            ├── 02.png
            └── 03.png

Each step can use the full range of conventional markdown - including support for github flavoured markdown, fenced code blocks etc. For more details see:

Also included is syntax highlighting via bundled highlight.js.

In labs only, subfolders can be included, and they will be published with their contents in full. This can be useful store images in an img folder, archives for download in an archives folder etc...

An example of syntax highlighting:

Images:

Archives:

Embedding Topics in Moodle (or elsewhere)

In addition to a index.html file generated for each topic, two companion files are also generated:

  • indexmoodle.html
  • ajaxlabel.html

These work in tandem to facilitate content embedding. indexmoodle.html is a paired down version of the topic, with protocol neutral headers and absolute urls to contained talks + labs. ajaxlabel.html is a page fragment which fetches indexmoodle via an ajax call, and renders it in a bootstrap container (for moodle). Typically, this is pasted into a topic resource in moodle, and will serve the topic seamlessly in place.

The above mechanism requires you to provide the url of the hosted course web - as the url is stitched into both files by tutor. You provide this in a file called 'courseurl' in the root folder of the course. See the example above for this procedure in action.

Options

The mbignore file can contain a list of topics that you wish to exclude from the course web. For instance, you may be rolling over a course from a previous run. This enables you to leave the course source intact, and selectively generate topics week by week.

Private

tutors -p

This will generate the course web to a private-site folder as well as public-site. The private version does not process the mbignore file, and will alsways generate the complete course. This can be useful if you are selectivtly publishing a course (to public-site), but want to keep a full version locally.

Standalone

tutors -s

This will generate the course web to a standalone-site folder as well as public-site. This version includes the full CSS + font assets. These are loaded from CDNs by the public version. This can be useful if you want to distrubute a course to be browsed on a device completely offline.