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:
- https://svelte.dev/
- https://tailwindcss.com/
- https://daisyui.com/
- https://vitejs.dev/
- https://auth0.com/
- https://firebase.google.com/products/realtime-database
- https://github.com/mozilla/pdfjs-dist
- https://github.com/ItalyPaleAle/svelte-spa-router
- https://github.com/entronad/crypto-es
- https://github.com/showdownjs/showdown
- https://vimejs.com/
- https://rsms.me/inter/
Time / Live
Front end to tutors time and tutors live services:
Uses the same toolkits are the Reader application +