Fergus Bentley

I'm a Technical Trainer with interests in full-stack web development, programming language theory & design, and other assorted geekeries.

Projects

Hexle

Web
TypeScript
React
TailwindCSS

A daily guessing game inspired by Wordle.

Hexle is a PWA written in TS with React and styled with TailwindCSS. Every day, players have four chances to guess the colour of the day, by entering hex triplets. The player's final guess is scored based on the percieved difference of their final guess from the target.

Warpaint

Web
API
GraphQL
Vue
TypeScript
TailwindCSS

A GraphQL API & web interface for working with tabletop wargaming paints.

Warpaint is a collection of tools for working with data about popular miniature wargaming paints, such as a colour matcher.

The site is powered by its GraphQL API, which vends data about miniature paints, including their names, brands, Hex/RGB/HSL colour values, and their similarity to other paints.

conlang.tools

Web
Rust
Svelte
TypeScript
TailwindCSS

A cohesive toolset for crafting believable constructed languages.

I created Conlang Workbench in the final year of my degree. Using the site, users can define entire families of fictional languages with a simple coding language.

Originally written in Vue and powered by TypeScript and Firebase, I am now re-writing the project using Rust, WebAssembly, and Svelte.

Fivee

JavaScript
TypeScript
API
Deno
GraphQL

A GraphQL and HTML API for D&D 5e data.

Fivee consists of two APIs: a GraphQL API for data fetching and the creation of bespoke D&D-related applications; and the Snippets API, which serves HTML snippets that can be piped directly into existing applications and web pages without writing much code.

Fivee is written in TS for the Deno runtime, using Apollo GraphQL Server and Deno KV. It is deployed serverlessly with Deno Deploy.

CalcuJSON

JavaScript
TypeScript
API

A standard for transmitting computable expressions in JSON formatted text.

I designed the CalcuJSON standard as a way to allow APIs to describe calculations to the client that use data unknown to the server. For example, to indicate an Armor Class method described by the D&D 5e API. I wrote this TypeScript library to parse and execute such computations directly from JSON data.

Enna's Auriinic Encyclopaedia

Web
JavaScript
Express.js
Pug
Firebase
Sass

A wiki site for my D&D campaign setting, Auriin.

This digital encyclopaedia helps me to keep track of the lore and character options for my Dungeons and Dragons campaign setting.

The wiki-like website is server-side rendered with Express, using Pug templates, Sass styling, and Firebase. The site features an editor that allows me to write new articles from any device using Markdown.

Suyerin Sigils

Web
JavaScript
CSS

A tool for generating and viewing glyphs a fictional script that I invented for my D&D games.

The site is written in vanilla JavaScript, using WebWorkers to efficiently generate images of over 40 thousand possible glyphs that exist within the Suyerin abjad, a fictional writing system I invented for my Dungeons & Dragons campaign setting.

Porfolio

Web
Vue
Nuxt
TypeScript
TailwindCSS

This portfolio site was built with Vue, Nuxt and Tailwind.

This site is built in Vue, styled with Tailwind, statically generated with Nuxt, and deployed using Netlify CI/CD and hosting.