paint-brush
A Sufficiently Complex Elm Applicationby@ckoster22
1,900 reads
1,900 reads

A Sufficiently Complex Elm Application

by Charlie KosterJanuary 5th, 2017
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

When I started becoming more of an intermediate <a href="https://hackernoon.com/tagged/elm" target="_blank">Elm</a> programmer I thirsted for more practical and production-like examples of Elm. There aren’t many out there.

Company Mentioned

Mention Thumbnail
featured image - A Sufficiently Complex Elm Application
Charlie Koster HackerNoon profile picture

The “All Hands” page of the Lightning Talk App

When I started becoming more of an intermediate Elm programmer I thirsted for more practical and production-like examples of Elm. There aren’t many out there.

Luckily, my employer periodically throws an event called Codefest where we submit internal projects, self-organize into teams, and hack away on our chosen projects for fun and to learn something new. I submitted a project to build an Elm application for managing our Lightning Talks.

Here’s the code if you want to skip straight to it.

That Codefest was two months ago and over the course of the three days we built the lightning talk app. Since then we have been iterating on it to improve code quality, fix bugs, and prepare it for public release and future development.

I call it sufficiently complex because it’s big enough that it’s not a contrived “TodoMVC” example, yet it’s small enough at 2000+ LoC to be digested in a couple sittings.

The app currently has the following capabilities:

  • View upcoming lightning talks
  • View lightning talks from the past
  • Create or edit a talk
  • Modify the theme for a round of talks
  • View an “All Hands” page. I currently use this page to copy/paste an image into an All Hands slide deck.

The application used to do more when we initially built it. Back in November we embedded it within Electron and could distribute it for Mac and PC. It had user authentication. Additionally, I thought it’d be neat to leverage Electron to build our own replayable production bugs capability which I demo here:

Unfortunately, we had to temporarily remove the replayable bugs capability during a refactoring effort to remove Electron from the project. However, the ability to submit bug reports in production (in the absence of a debug build), taking care to obfuscate sensitive data, and to conditionally replay Cmds was an incredibly useful capability to have. So we will be reimplementing that feature without Electron in the coming months!

Hopefully someone will find this repository useful. Maybe it’ll introduce you to a new perspective of managing data. Or maybe it’s your first exposure to seeing Elm as a Single Page App. Whatever your takeaway is, I hope it’s beneficial to your journey with using Elm.

P.S. A special thanks to Heath, Andrew, Mike Kaylan, Ryan, Joe, and Evan for their help on this application. I’m still amazed that the above video represents what a small team could accomplish in 3 days.