A community driven list of useful Elm tutorials, libraries and software.
Table of Contents
- Awesome Elm
- More awesome
- Contribution Guidelines
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.
- 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.
- TodoMVC in Electron - Documented and tested implementation of the Elm TodoMVC app in Electron.
- Gipher - A Tinder-like application for gifs built with elm and firebase!
- Elm Architecture in Android - An example Android application implemented with the Elm Architecture using the Kotlin programming language and Anko library.
- Collection of examples - A collection of examples with advanced techniques for real-world Elm apps.
- Elm Flatris - A Flatris clone in Elm language v0.18.
- Elm + Phoenix + Webpack - A minimal Elm + Phoenix setup, using webpack instead of Brunch.
- Elm SPA Example - Full stack Elm app w/ CRUD operations, Auth, routing, pagination and more. Code / Article
- Spotify Mapper - Elm app integrated with Spotify Api to search and explore new artists.
- Elm Hangman - The game of Hangman written in Elm.
- Pokelmon - Elm project consuming PokéAPI.
- JWT auth with Django + Elm - JSON Web Token (JWT) authentication using Django (backend) and Elm (frontend).
- Bitcoin BR Chrome Extension - Chrome extension built in Elm that shows the bitcoin value in all Brazilian exchanges.
- Elmstagram - Basic UI Clone of Instagram / Articles - Part 1 Part 2 Part 3
- Kanban Board in Elm - A kanban board (trello-alike) built with Elm and HTML5 Drag & Drop API
- Elm Playground - Pure SPA (with routing) exploring various aspects of Elm.
- Elm Hacker News PWA - A progressive web app built with Elm version 0.18, using the official Hacker-News API
- Elm Narrative Engine - A framework for building interactive fiction style stories in Elm. Detailed example elmnarrativeengine.com shows how to build a "chose your own adventure" (story) game; perfect for beginners. Elm v.0.19
Learn what this awesome thing is.
- Official tutorial — General information and in-depth guide with examples.
- Elm in Action — In-depth book for Elm beginners, from Manning Publications.
- 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.
- Learn you an Elm - Elm tutorial with exhaustive examples and descriptions.
- 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 Beginners - Video Course - Build your first Elm Web App.
- Single-Page Web Apps in Elm - Five parts tutorial on Elm.
- Elm Koans - Practice exercises for learning Elm.
- Beginning Elm - A gentle introduction to the Elm programming language.
- Elm Tutorials on Codementor - Two tutorials on building web apps with Elm.
- Elm FAQ - Elm FAQ from Elm Community.
- Elm Tutorial by Auth0 - A tutorial on building an app in Elm from authentication to calling an API.
- Ninety-nine Problems, Solved in Elm - Adaptations for Elm from Ninety-Nine Haskell Problems.
- Elm programming language - a brief overview of Elm as a programming language.
- Elm: A Beginners' Guide to Elm and Data - Beginners' course to Elm and Data
- Programming Elm - Thorough book from The Pragmatic Programmers that covers basics and advanced concepts.
- The Hitchhiker's Guide to Elm - Beginner-friendly guide for learning the language and building apps with it
- Practical Elm for a Busy Developer - A non-beginner book about the practical aspects of developing Elm applications.
Read the essentials. Check the official Elm blog: elm-lang.org/blog
- 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.
- 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.
- Move fast and don’t break things. Running a startup on Elm - Some thoughts on Elm development by a Swedish startup.
- Blog of Brian Hicks - A blog with various topics about Elm.
- Elm from a Business Perspective - This article discusses topics about Elm from a business perspective
- Introduction to The Elm Architecture and How to Build our First Application - An article describing the Elm architecture and how to build a simple application
- Functional Programming for Web Frontend by Jan Luxemburk - A Bachelor’s thesis about functional programming for frontend development with the focus on Elm.
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.
- 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 neat 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.
- Elm Conf 2016 - All talks from elm-conf 2016
- Amitai Burstein: Frontend with Guarantees - A talk from You Gotta Love Frontend 2016
- Jessica Kerr: Adventures in Elm - A talk about the combination of functional programming with Elm at GOTO Chicago 2016.
- Aaron VonderHaar: Codevember 2016 + ElmLive - elm live video examples.
- Greg Ziegan: Elm live coding videos - Live coding videos on youtube.
- Richard Feldman: Making impossible states impossible - A talk about modelling data structures in Elm in a way that makes invalid states unrepresentable
- Dillon Kearns: Types Without Borders - elm-conf 2018 talk about end-to-end type-safety using external schemas like GraphQL.
Listen to podcasts about Elm
- Elixir Fountain Evan Czaplicki 2016-07-11 - Elm with Evan Czaplicki.
- Functional Geekery 33 - Richard Feldman and Tessa Kelly.
- The Changelog 218 - Elm with Evan Czaplicki and Richard Feldman
- The Changelog 191 - Elm and Functional Programming with Richard Feldman.
- Software Engineering Daily - Elm with Richard Feldman and Srinivas Rao.
- 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.
- The Web Platform Podcast 108 - Elm Revisited.
- Elm Town - A podcast about the people in the Elm community.
- Full Stack Radio 44 - What the heck is Elm? In this episode, Joel Clermont talks about Elm and functional programming.
- InfoQ Podcast 2017-04-27 - Richard Feldman discusses how Elm compares to React.js
Beyond the DOM
- QML You can use .js files to create native desktop and phone applications for all platforms with GPU acceleration and easy to code animations.
- iOS A POC for using Elm 0.18 for native iOS Applications
- elmish-wasm A POC for compiling elm to Web Assembly
- elm-serverless Run Elm 0.18 on Cloud Functions using the Serverless Frameworks
Useful helpers to build apps.
- core - Elm Core Libraries.
- 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.
- http - Make HTTP requests in Elm.
- elm-http-builder - 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.
- elm-bootstrap - Comprehensive Bootstrap 4 library for Elm. Docs site.
- elm-vega - Declarative visualization for Elm (Vega/Vega Lite integration)
- style-elements - A new way to generate web UI that makes it easier to deal with layout and stylings. Guide.
- dillonkearns/elm-graphql - Generate code to build guaranteed correct, type-safe API requests to your GraphQL API.
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-live - A flexible dev server for Elm. Live reload included!
- elm-repl - A REPL for Elm.
- elm-package - CLI to share Elm libraries.
- elm-format - Automatic Elm code formatter adhering to Elm Style Guide.
- 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.
- html-to-elm - Convert HTML to Elm Html. Useful when porting an app to Elm.
- elm-instant - atom package to try your elm code from the editor. Provides a visual REPL and a preview pane.
- elm-analyse - Linter for the Elm programming language.
- run-elm — Run Elm code from the command line
- type-o-rama - JS type systems interportability.
- Dependabot - Automatic update PRs for your elm-package.json.
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.
- elmjutsu - Autocompletion, go to definition, find usages, rename symbol, etc. for the Atom editor.
- atom-elm-navigator - A side panel that helps to navigate to any function, type definition or port in your project.
- 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.
- vim-elm-help - Offline Elm documentation access in your editor.
- emmet-vim - Markup expansion with elm support.
- elm-plugin - Elm plugin for IntelliJ IDEA.
- Elm Visual Studio Code Support - Syntax highlighting, Snippets, Function information, REPL, Reactor support (Webserver/Debugger) - Starting/Stopping
- Elmmet: Emmet for Elm (Visual Studio Code) - Emmetio abbreviation expander into composition of Elm function with elm-format'er inside.
- HTML to Elm for Visual Studio Code - VSCode plugin to convert HTML to Elm
Place to share Elm libraries.
- elm-package - Command line tool to share Elm libraries.
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.
- elmkit - A lightweight Brunch based setup for web app. Includes Brunch, Hot Module Replacement, Elm, Scss, Elm tests.
- elm-boilerplate - A simple Makefile able to create Elm app.
- create-elm-app - Create Elm apps with no build configuration.
- elm-init - Interactive setup for new Elm projects.
- elm-new - Generate initial project scaffolding based on a template.
- elm-webpack-4-starter - Elm webpack 4 starter template.
- elm-webpack-starter-kid - A very very basic elm + webpack 4 template.
Everything that you need to see.
- Elm Search - Search Elm documentation for operators, function signatures, etc.
- 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, targeted at Elm beginners coming from Haskell backgrounds.
- runelm.io - A place to share and run Elm code.
- Ellie - The Elm Live Editor
- Online REPL - The ELM Online REPL
- Elm on Alpine - The full working Docker image of Elm language built on top of Alpine. An easy way to start with Elm. No any system-wide dependencies except for Docker.
Where to find help.
- Discourse - Elm Discourse instance (official forum).
- Reddit - Elm board on reddit.
- IRC - Ask questions on elm freenode.
- Slack - Elm slack community.
Who to follow
|Official Elm||Evan Czaplicki||Richard Feldman||Noah Hall||Elm Weekly|
Discover other amazingly awesome lists.
Awesome Elm is just a part of awesome thing, get more here:
To the extent possible under law, @isRuslan has waived all copyright and related or neighboring rights to this work.