Hi, I'm Eric Kwoka. I am a Full-Stack Engineer and User Experience Professional

Scroll Down

Most DevelopedSkills

A sampling of the core technologies I have become talented in. There are always more things to learn, but I have found a lot of the underlying skills here to be transferrable as I explore new technologies.

  • PreactPreact/React
  • TypeScriptTypeScript
  • Tailwind CSSTailwind CSS
  • ShopifyShopify Liquid
  • AlpineJSAlpine

ProjectTime Tracker Desktop App

Time Tracker Desktop App

Unhappy with the quality of various time trackers and finding a constant situation of each different app having some factors I love, and others I hate. I'm setting out to make one that works for exactly what I need it for: Tracking time across different clients and tasks that allows easy export for invoicing.

Of course, why do any side project without using the most bleeding edge technologies? So this is made with Tauri + Solidjs with TypeScript and Rust.

Tauri uses the devices native webview (as opposed to bundling a browser) allowing for smaller application size, rendering a frontend in the webview and connecting it to a runtime powered by Rust to handle interfacing with the OS and file systems.

Here I use Solidjs to power the front end, for it's many benefits and performance characteristics, and because it's the hot thing (at the time of writing).

  • SolidSolid.js
  • TauriTauri
  • ViteVite
  • TypeScriptTypeScript
  • RustRust
  • Tailwind CSSTailwind CSS

ProjectDok-Dabang eCommerce

Dok-Dabang eCommerce

A demonstration eCommerce site for a Cafe.

This uses a custom Static Site Generator to build the site from Liquid templates and JSON Data. The whole build pipeline was architected from scratch.

This project was the 🏆 Winner 🏆 for Webjam 11!

  • AlpineJSAlpine
  • ShopifyShopify Liquid
  • Tailwind CSSTailwind CSS

PackagePreact Global State

A simple, lightweight global state manager, now with 100% more Signals!

Perfect for enabling simply access to globally available state from anywhere in your app, only as needed.

NPM VersionNPM DownloadsMINZIPPED SizeNPM Type Definitions

PackageESLint Filename Enforcement

A simple ESLint plugin to enforce the name of JS and TS module files matching to the names of their exports.

Rules:

  • match-named-export: Enforces that the filename matches to a named export.
  • match-default-export: Enforces that filenames match the name of the default export.
NPM VersionNPM DownloadsMINZIPPED Size

PackageEasy Hotkeys

This is a very simple package that allows you to register hotkeys to run functions, or update state easily in response to key presses!

Includes Types, and is fully compatible with Preact/React useEffect hooks

NPM VersionNPM DownloadsMINZIPPED SizeNPM Type Definitions
View all packages

Open SourceContributions

Userback

Offers Delayed Initialization in React

Refactors initialization to gracefully handle multiple init calls and enabling options to delay initialization until the UI is needed.

Flamethrower Router

Performance Optimizations

Improves the performance of the DOM diff'ing algorithm, optimized for the most common scenarios.

AlpineJSAlpine

Prevents Coercion of Space to Minus

Fixes a bug in which Space and Underscore key presses were being coerced into a 'minus' keypress in key handlers

AlpineJSAlpine

Add Promise to $nextTick

To bring the functionality more inline with Vue's implementation of $nextTick, the magic returns a Promise that resolves when the callback is run.