Awesome Elm
A community driven list of useful Elm tutorials, libraries and software.
Inspired by the awesome list thing. Feel free to improve this list.
Table of Contents
Examples
Some good apps written in Elm.
- Official list - Examples from basic to big-project in official website.
- Builtwithelm - Web site built with elm with list of projects and apps built with Elm.
- Elm Joust — a two-player fighting game written in Elm.
- Tetris — A Tetris game for the web browser written in Elm.
- Vessel - A "tunnel" game written in Elm!
- Sliding Puzzle - Configurable sliding puzzle game written in Elm.
- TodoMVC - Proper implementation of the TodoMVC app.
- TodoMVC with JSON API - Bare-bones, modular, heavily-documented todo app with JSON API persistence.
- TodoMVC/Firebase - Fork of TodoMVC demonstrating start-app, The Elm Architecture and Firebase as backend.
- <elm-ement> – Minimal example of a custom element.
- Elm Playground - Tiny Elm projects implemented for the sake of learning by example.
Learn
Learn what this awesome thing is.
- Official tutorial — General information and in-depth guide with examples.
- Elm’s Time Traveling Debugger - Debugger that lets you travel backwards and forwards in time.
- Architecture Tutorial - How to create modular Elm code that scales nicely with your app.
- Start app - Make an app, start it up.
- Elm: Building Reactive Web Apps - Learn how to build reactive web apps using Elm.
- Elm: Signals, Mailboxes & Ports - Create more reactive Elm apps by mastering signals.
- Learn you an Elm - Elm tutorial with exhaustive examples and descriptions.
- Writing native - Learn how to create native JavaScript modules for Elm.
- Elm: Functional frontend development - Series of articles about fundamentals and advanced topics.
- Elm Tutorial - A tutorial on developing single page web applications with Elm.
- Elm cheat sheet - Syntax and features overview.
- Learn Elm in Y Minutes - Syntax and features overview. The Elm page on learnxinyminutes.com
- A Concise Introduction to Elm - High overview of language features.
- Elm Maybe - Dealing with null/Nothing - Working with the Maybe type, with nicely commented code examples.
- Elm Topic on DailyDrip - Daily continuing education on Elm, videos and text, with new content every day.
- Exercism Elm Track - Collection of Elm exercises.
- Elm Seeds - Short screencasts to teach you the Elm programming language from Erik Person.
- Elm For Begginers - Video Course - Build your first Elm Web App.
Articles
Read the essentials. Check the official Elm blog: elm-lang.org/blog
- Architecture in Elm — Ideas and guidelines for architecting larger applications in Elm to be modular and extensible.
- Blazing Fast HTML - Virtual DOM in Elm.
- FP with games in Elm - Switching from imperative to functional programming with games in Elm.
- Learning FP the hard way - Experiences on the Elm language.
- Introduction to Rx - The introduction to Reactive Programming you've been missing.
- Elm for Web Developers - A collection of notes for web developers looking into moving to Elm.
- Introducing Elm to JS Web Apps - An article explaining how to get started with Elm by integrating it with your exisiting Javascript framework
- How Elm Made Our Work Better - How a team built a business-critical web app for a customer using Elm.
- Composing Features and Behaviours in the Elm Architecture - An article describing how to organize code that follows the Elm architecture into independent features, how to communicate between features, and how to group some of these features together to assemble larger features.
- Elm & Components - A blog post describing a possible approach to reducing TEA boilerplate. Useful for component libraries and anyone interested in seeing the amazing things you can do with function types.
- Getting Started with Elm - Series of Elm education tutorials.
- Elm & Guarantees - a realistic look at where Elm is and isn’t superior to other options.
Videos
Watch great talks about Elm
- Evan Czaplicki: Let's be mainstream! User focused design in Elm - A talk from the father of Elm about the philosophy behind the language.
- Richard Feldman: Make the Back-End Team Jealous: Elm in Production - A talk about Elm and initial steps to use it in production.
- Richard Feldman: Effects as Data - A talk about how Elm manages side effects.
- Jamison Dance: Rethinking All Practices - Building Applications in Elm - A talk given at React.js Conf 2016 about what Elm has to teach the JavaScript world and why JS devs should consider trying it.
- Richard Feldman: Introduction to Elm - A talk that gives a broad, high-level introduction to Elm.
- Egghead.io: Elm videos - Egghead's Elm video training, many of which are free.
- jadams's training videos - A neato series of bite-sized Elm training videos, many of which are free.
- Elm Basics - Walk through all the syntax and basic ideas in Elm as a general programming language.
Podcasts
Listen to podcasts about Elm
- Functional Geekery 33 - Richard Feldman and Tessa Kelly.
- The Changelog 191 - Elm and Functional Programming with Richard Feldman.
- Software Engineering Daily - Elm with Richard Feldman and Srinivas Rao.
- JavaScript Jabber 175 - Elm with Evan Czaplicki and Richard Feldman.
- Ruby Rogues 212 - Elm with Richard Feldman and Evan Czaplicki.
- The Web Platform Podcast 15 - Functional Programming with Elm, ClojureScript, Om, and React.
- The Web Platform Podcast 76 - The Elm Programming Language.
- Mostly Erlang Podcast 32 - Elm with Evan Czaplicki.
Libraries
Useful helpers to build apps.
- elm-core - Elm Core Libraries.
- elm-html - Use HTML in Elm, based on the idea of a "virtual DOM".
- elm-test - A unit testing framework for Elm.
- elm-router - Easy routing in Elm.
- elm-http - Make HTTP requests in Elm.
- elm-http-extra - Build and handle JSON requests more naturally than with low-level elm-http.
- elm-console - Elm library to read and write to the console in Node.
- Lazy - Lazy Evaluation in Elm.
- elm-ui - UI Library in Elm.
- elm-mdl - Material Design component library in Elm. With demo.
- elmfire - Use Firebase as backend. For higher level API: elmfire-extra.
Tools
Tools around Elm platform.
- elm-compiler - Compiler for the Elm programming language.
- elm-make - A build tool for Elm projects.
- elm-reactor - Interactive development tool that makes it easy to develop and debug Elm programs.
- elm-repl - A REPL for Elm.
- elm-package - CLI to share Elm libraries.
- elm-init - Interactive setup for new Elm projects.
- elm-format - Automatic Elm code formatter adhering to Elm Style Guide.
- grunt-elm - Grunt plugin that compiles Elm files to JavaScript.
- elm-webpack-loader - Webpack loader for the Elm programming language.
- servelm - A project enabling server-side use of Elm.
- elm-oracle - Query for information about values in elm source files. Used by most editor plugins.
##Editor plugins
Tools to support Elm in code editors.
- atom-linter-elm-make - Elm code linter for the Atom editor.
- atom-elm-snippets - Elm snippets for Atom.
- atom-language-elm - Syntax highlighting and autocompletion for the Atom editor.
- emacs-elm-mode - Syntax highlighting, Elm REPL, Elm make and Elm format integration for the Emacs editor.
- elm-light-table - Syntax highlighting, REPL, autocompletion, package management and much more for Light Table.
- Elm Language Support - Syntax highlighting, REPL, autocompletion, and more for Sublime Text 2 and 3.
- Elm-vim - Elm mode for vim.
- elm-plugin - Elm plugin for IntelliJ IDEA.
- Elm Visual Studio Code Support - Syntax highlighting, Snippets, Function information, REPL, Reactor support (Webserver/Debugger) - Starting/Stopping
Package managers
Place to share Elm libraries.
- elm-package - Command line tool to share Elm libraries.
Boilerplates
Good starting point for a new Elm project.
- elm-webpack-starter - A simple Webpack setup for writing Elm apps.
- elm-app-boilerplate - A fully-featured base project for Elm apps: Webpack, HMR, ES6, JS and Elm tests, Semantic UI, sample code and more.
Misc
Everything that you need to see.
- Try Elm - Write and compile elm code online!
- 404 Elm Street - A fun WebGL game built with Elm.
- Debug Elm - Debug elm code online.
- Haskell to Elm - Collection of examples on places where Elm is different to Haskell, targetted at Elm beginners coming from Haskell backgrounds.
- elmflux - Visualization of Elm Signals.
Support
Where to find help.
- Mailing list - Google discussion group.
- SHARE-ELM - Share your code snippets, authorize with github gist.
- Reddit - Elm board on reddit.
- IRC - Ask questions on elm freenode.
- Slack - Elm slack community.
Who to follow
Follow for fresh updates for free. Use #elmlang or #elm hashtag.
Official Elm | Evan Czaplicki | Richard Feldman | Noah Hall |
More awesome
Discover other amazingly awesome lists.
Awesome Elm is just a part of awesome thing, get more here:
License
To the extent possible under law, @isRuslan has waived all copyright and related or neighboring rights to this work.