Joel Kraft

Web Developer • Solutions






thingsSDK's Flasher.js project needs a manifest repository. I'm in the process of writing an expressjs-backed react/redux app that lets users store, edit and delete documents used for flashing microcontrollers. Once the manifests are approved by administrators, they can be published. This is a work in progress, but you can view the current state of the repos linked below.


  • React/Redux application
  • Expressjs API using token-based auth
  • Staging area for unpublished manifests


  • Sign-up
  • Search
  • Various fixes
  • More test coverage

Github Repos

Ryan Robert Online Tutoring

The client had design images he wanted to use for his website. I wrote HTML and CSS to match the image files. This demo uses Angular to handle routing.

  • Responsive site with mobile and desktop views
  • Handwritten modular sass files
  • Angular single page webapp

Canvas Spirograph React App

A fun interactive drawing app! A user can draw polygons up to 12 sides and repeat them in different ways, optionally adding color. Here's an interactive demo.

Paging List Builder

A list of 700 - 1,000 books needed to be built daily in a specific order from another list.

Manually building this list took an employee 30-45 minutes each day in Excel.

I wrote a script to scrape the source list (HTML webpage), reorder and paginate the items at the click of a button. The results could them be printed directly from the browser. The lists are styled to exactly match the appearance of the excel print-outs they replace. Here's a link to a demo, click the button in the upper right corner to run it.

Some features of this solution:

  • Regular expressions match call numbers and sort each book title to the correct list, in the correct order.
  • Reporting of stats, including list of unmatched, for regular expression tuning or adjustments of source records.
  • Additional lists can be combined with the current list, a process that will remove duplicates.
  • The interface also accepts new lists (HTML) to transform, replacing the current content.

Music Website

Working from an existing design in Photoshop, I created a static music site for myself that costs pennies a month to host on AWS.

Even though it is a static site, the calendar can be updated simply by managing a Google calendar.

Some additional features I implemented:

  • SEO-friendly paths
  • AJAX-loaded content
  • Session-cached content (to reduce AJAX & Google API calls)
  • Browser history updating

Time Off Request App

My workplace needed a way to manage time off requests/approvals.

I iteratively wrote and user-tested an application to allow employees to request time off from managers. Some details:

  • Complicated time-keeping workflow is simplified through presentation.
  • Employees can log in and view their currently approved requests.
  • Employees can cancel their own requests.
  • Managers can review requests in a centralized location.
  • Managers can filter requests with the search field.
  • Request times are transparently tracked to eliminate disputes over precedence.

I created a demo version of this app using Expressjs/MongoDb (it's hosted on a free Heroku account, so it takes a minute to load). The code can be viewed here.

Visual Artist Landing Page

A client needed an engaging construction page while he designed his website. I created a "peephole" with jQuery and JavaScript that visitors can move around with the mouse to look at the painting behind.

Fun with sprites

This was just an evening's adventure to see how hard/interesting it might be to build a world with js and css sprites. My friend had a few sprite sheets he created for a video game that never materialized. I thought it would be fun to animate the loch-ness monster.