• Stars
    star
    3,251
  • Rank 13,807 (Top 0.3 %)
  • Language
    Elm
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Single Page Application written in Elm

RealWorld Example App

👉 I gave a talk to explain the principles I used to build this. I highly recommend watching it!

Elm codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

Demo    RealWorld

This codebase was created to demonstrate a fully fledged fullstack application built with Elm including CRUD operations, authentication, routing, pagination, and more.

For more information on how this works with other frontends/backends, head over to the RealWorld repo.

How it works

Check out the full writeup!

Building

I decided not to include a build script, since all you need for a development build is the elm executable, and all you need on top of that for production is Uglify.

Development Build

Install Elm (e.g. with npm install --global elm), then from the root project directory, run this:

$ elm make src/Main.elm --output elm.js

If you want to include the time-traveling debugger, add --debug like so:

$ elm make src/Main.elm --output elm.js --debug

To view the site in a browser, bring up index.html from any local HTTP server, for example http-server.

Production Build

This is a two-step process. First we compile elm.js using elm make with --optimize, and then we Uglify the result.

Step 1

$ elm make src/Main.elm --output elm.js --optimize

This generates production-optimized JS that is ready to be minified further using Uglify.

Step 2

(Make sure you have Uglify installed first, e.g. with npm install --global uglify-js)

$ uglifyjs elm.js --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters=true,keep_fargs=false,unsafe_comps=true,unsafe=true,passes=2' --output=elm.js && uglifyjs elm.js --mangle --output=elm.js

This one lengthy command (make sure to scroll horizontally to get all of it if you're copy/pasting!) runs uglifyjs twice - first with --compress and then again with --mangle.

It's necessary to run Uglify twice if you use the pure_funcs flag, because if you enable both --compress and --mangle at the same time, the pure_funcs argument will have no effect; Uglify will mangle the names first and then not recognize them when it encounters those functions later.

More Repositories

1

seamless-immutable

Immutable data structures for JavaScript which are backwards-compatible with normal JS Arrays and Objects.
JavaScript
5,363
star
2

elm-css

Typed CSS in Elm.
Elm
1,239
star
3

dreamwriter

(NOTE! This has not been updated since Elm 0.15.1.) Streamlined long-form writing software. Written in Elm.
JavaScript
459
star
4

elm-workshop

An introductory Elm workshop. Video available on Frontend Masters!
Elm
438
star
5

elm-0.19-workshop

Elm 0.19 workshops. Includes Intro and Advanced courses.
Elm
212
star
6

rust-1.51-workshop

Richard Feldman's Rust workshop
Rust
192
star
7

node-elm-compiler

A Node.js interface to the Elm compiler binaries.
TypeScript
170
star
8

elm-in-action

Resources for the Elm In Action book.
JavaScript
160
star
9

elm-validate

Convenience functions for validating Elm data.
Elm
144
star
10

node-test-runner

Runs elm-test suites from Node.js. Get it with npm install -g elm-test
JavaScript
133
star
11

elm-google-maps

Using Google Maps in Elm by way of Polymer
Elm
56
star
12

elm-use

Switch between Elm versions
JavaScript
38
star
13

elm-iso8601-date-strings

Convert between ISO-8601 date strings and Time.Posix
Elm
30
star
14

elm-web-workers

Write Elm code that talks to Web Workers.
Elm
28
star
15

selectlist

A nonempty list in which exactly one element is always selected.
Elm
27
star
16

elm-json-experiment

Experimental API for building JSON decoders
Elm
20
star
17

lambdaconf-2015-elm-workshop

Materials for the Elm Workshop at LambdaConf 2015
Elm
20
star
18

grunt-elm

Grunt plugin that compiles Elm files to JavaScript.
JavaScript
19
star
19

elm-codify

A tool to generate Elm decoders, encoders, and type aliases from JSON.
Elm
16
star
20

elm-0.18-workshop

An introductory Elm 0.18 workshop.
Elm
14
star
21

elm-node-app

Communication layer so Elm code can talk to Node.js code.
Elm
13
star
22

elm-css-helpers

Helpers for using elm-css with elm-html
Elm
11
star
23

dotfiles

Configuration files I use.
Shell
11
star
24

style-elements-demo

style-elements demo for ReactiveConf 2017 talk, "CSS as Bytecode"
Elm
8
star
25

elm-sorter-experiment

Experimental Sorter/Dict/Set API
Elm
8
star
26

elm-hex

Work with Hexadecimal numbers in Elm.
Elm
6
star
27

dreamwriter-coffee

Streamlined writing software. Written in React and CoffeeScript.
CoffeeScript
6
star
28

vector

List where head & tail don't return Maybe and still can't crash
Elm
6
star
29

count

Call record constructors with increasing integers. Surprisingly useful!
Elm
5
star
30

elm-signup-form

JavaScript
5
star
31

test-update

Convenience functions for testing update functions
Elm
5
star
32

mloc-2015-elm-workshop

Materials for the Elm Workshop at mloc.js 2015
Elm
5
star
33

hashed-class

Generate CSS classnames by hashing their styles.
Elm
5
star
34

hex

Work with Hexadecimal numbers in Elm.
Elm
4
star
35

roc-decimal-draft

Rust
3
star
36

quicksort-benchmarks

quicksort-benchmarks
Swift
3
star
37

csrf-xhr

Automatically add Rails CSRF tokens into XMLHttpRequest headers.
JavaScript
3
star
38

elm-in-action.com

Website for the book Elm in Action, from Manning Publications
3
star
39

console-print

Print special characters to the console, in Elm
Elm
3
star
40

ziplist

DEPRECATED in favor of rtfeldman/selectlist (better name!)
Elm
3
star
41

path

Elm
2
star
42

operation-pterodactyl

🦉
Elm
2
star
43

elm-css-util

Utility functions shared by elm-css and elm-css-helpers
Elm
2
star
44

elm-dropbox

Elm API for integrating with Dropbox
JavaScript
2
star
45

legacy-elm-test

An implementation of the legacy ElmTest module for backwards compatibility.
Elm
2
star
46

openresty-postgres-example

RealWorld example backend using OpenResty, Postgres, and nothing else
JavaScript
1
star
47

binstall

JavaScript
1
star
48

sweetvalidation

CoffeeScript
1
star
49

promises-done-polyfill

Polyfills Promise.done()
JavaScript
1
star