Developer Experience (DX)

The Developer Experience prioritises the specification and implementation of robust, well documented, loosely coupled components & services, integrated into a coherent toolkit open to contributions from diverse skill sets.

Robust: Unit & acceptance tests should a key part of each component

Well Documented: Each component should be adequately documented, sufficient to enable quality improvements and other enhancements

Loosely Coupled Components: The project should, as far as possible, consist of a set of reusable components, assembled into a range of applications and services. These components should strive to be independent , testable and shareable.

Loosely Coupled Services: Shares services like authentication, data store, presence, analytics should be shared across the tutors components and potentially decoupled, removed, or substituted as appropriate.

Coherent Toolkit: The role of each Component/Service should be clear and potentially substitutable by alternatives fulfilling equivalent roles.

Diverse Skill Sets: The project should be open to all skill levels, with a welcoming and supportive environment.


Resources

Generators

These tools are used to harvest a tutors course folder, for instance this example course here:

… and transform the contents into web experience. If using a system such as Netlify, the process is documented here. The generators can also be run from the command line:

npx tutors-json
npx tutors-html

These will generate, respectively:

  • A JSON encapsulation of the course, suitable for publication on a CDN based edge distribution platform (Netlify, Vercel)

  • A static site, browsable locally.

These are generated into the public-site and json folders inside the project folder.

tutors-lib

This is the tutors course parser, packaged as a reusable component:

This abstracts the course structure, constructing a traversable, recursive data structure comparable to an Abstract Syntax Tree (AST) for the course

tutors-json

This is the JSON generator:

This will use tutors-lib to parse a course, traverse the generated AST and emit the JSON course.

tutors-html

This site the HTML generator:

It will also use tutors-lib to generate a static site

Reader

The front end course reader application:

This is a Svelte / Typescript application.

The major toolkits used in the application:

Time / Live

Front end to tutors time and tutors live services:

Uses the same toolkits are the Reader application +