Skip to content
How to build full-stack apps using the Elm programming language.
C# Elm Other
Branch: master
Clone or download

Latest commit

Viir Update guide to using the latest version
Integrate all the improvements since version 2020-05-26.
Latest commit b835913 May 28, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows Automate the build of separate .NET assemblies May 25, 2020
explore Guide on deployments and migrations May 22, 2020
guide Update guide to using the latest version May 28, 2020
implement Simplify using the commands for deployment May 28, 2020
License.txt License Apr 16, 2019 Update guide for newest tools and expand guide May 26, 2020
azure-pipelines.yml Return to publishing single-file executable 🧪 May 15, 2020 Remove obsolete parts and update user-facing messages May 23, 2020

Elm Full-Stack

In this repository, I share what I learn about building full-stack apps using the Elm programming language. This approach emerged out of the development of online multiplayer video games like DRTS.

In these applications, backend and frontend share an understanding of game mechanics and the game world. (Changes in these shared functionalities need to be synchronized between backend and frontend implementation.) Frontend and backend implementations use the same Elm modules for the common parts which need to be kept consistent. The tests run by elm-test also integrate backend and frontend for automated integration tests.

This repository also contains the implementation of the Elm-fullstack web host, tooling, and the command-line interface. These software components implement common non-app specific functionality, such as:

  • Persistence: The framework automatically persists the state of your app, including events in the backend Elm app, deployments of new app configurations, and migrations. To learn more about this functionality, see the guide on persistence in Elm-fullstack.
  • Mapping HTTP requests to Elm types in the backend so that we can work with a strongly typed interface.
  • Generating the functions to serialize and deserialize the messages exchanged between frontend and backend.
  • Atomic backend state migrations: Model your backend state migrations with an Elm function that maps from the previous backend state type to the new one. The framework uses this function to migrate the backend state during deployment.
  • HTTPS support: Choose a list of domains, and the server automatically acquires and renews an SSL certificate from Let's Encrypt.
  • Rate-limit client HTTP requests which result in updates in the backend app.
  • Serve static files on selected paths.

Getting Started

See the guide How to Configure and Deploy an Elm-Fullstack App.

You can’t perform that action at this time.