This is a FRP rewrite of UChicago Marketplace in Elm.
Run ./make.sh to run the build process.
This will make compile a JS file main.js.
The following elm community packages (as listed in elm-package.json) are required:
elm-lang/core
evancz/elm-effects
evancz/elm-html
evancz/elm-http
evancz/start-app
evancz/virtual-dom
Elm-Marketplace follows the standard Elm MVC architecture in nested components
components.
Each component has an internal state called Model and a union type of
Action that operates on the model.
Each component also has a view that takes a Context, which is a record type
of addresses that are passed to the view so that UI Signals can be sent to the
appropriate mailboxes, and a Model that tells the view the current state.
Consider the following example:
The model in Index.elm has 4 nested components: Listings, Header, CategoryBar,
and Meta.
The Action union type in Index.elm contains many actions. Let's consider
ListingsAction. If a ListingsAction Signal is triggered, then the update
function in Index.elm will enter the ListingsAction branch in the case statement.
In the ListingsAction branch, we know that this particular Signal corresponds to
an update internal to the Listings type, so it updates the the listings entry
of the Index model by calling Listing.update.
Similarly in the view, when rendering the Listings.view, we pass the
Listings.Context, which is a record type of forwarding address for each
action that will be triggered in that component. For example, in the Listings
component there are two types of actions that will be triggered: ThumbanilAction,
which are actions to reset to the ThumbnailView triggered by the "Back" button
in a listing and ListingsAction, which are actions that update state internal to
the Listings component (e.g., ImageViewer or Fullpage buttons), which are
wrapped in a generic ListingsAction type, because Index.elm won't need to
unwrap the Action when triggered.
- Add scroll loading animation
- "Back" from fullpage to thumbnail remembers place on the screen
- Add pictures to go api
- POST forms
- Login and Auth