Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/davedawkins/sutil

Lightweight front-end framework for F# / Fable. No dependencies.
https://github.com/davedawkins/sutil

fable fsharp html

Last synced: about 8 hours ago
JSON representation

Lightweight front-end framework for F# / Fable. No dependencies.

Awesome Lists containing this project

README

        

# Sutil [![Nuget](https://img.shields.io/nuget/v/Sutil.svg?maxAge=0&colorB=brightgreen)](https://www.nuget.org/packages/Sutil)

[Sutil](https://sutil.dev) is a web application framework for F#.

Its features are:

- Simple DOM builder, courtesy of [Feliz.Engine](https://github.com/alfonsogarciacaro/Feliz.Engine)
- No dependencies. Sutil is written entirely in F#, and so does not layer on top of another JS framework, such as React.
- Reactivity using IObservable and stores. Sutil does not use a virtual DOM.
- Support for Elmish (Model-View-Update) architecture.

In addition, Sutil inherits all the benefits of both Fable (F# with excellent JS interop) and F# itself.

Sutil was heavily inspired by Svelte, and imports several of its design features, such as stores and component styling. Some parts of Sutil are direct ports from Svelte.

## Getting Started

See the documentation [here](https://sutil.dev/#documentation-about-sutil). This will show you how to start your own Sutil project in a variety of ways, and explain the basic concepts. You'll also many examples [here](https://sutil.dev/#examples-hello-world).

## Development (of Sutil)

To compile Sutil and build the main Sutil app in watch mode:

```shell
npm run start
```

To run tests:

```shell
npm run test
```

To deploy to https://sutil.dev (you will need to be Dave Dawkins for this to work). This will:
- build Sutil
- build documentation
- install to sutil.dev

```shell
npm run deploy:linode
```

## Building the REPL

Manually:

- ensure that repl/src/Fable.Repl.Lib/Fable.Repl.Lib.fsproj is up-to-date with the list of Sutil file names.
- review `repl/public/samples/samples.json` for examples that should be included or removed

Build the REPL and deploy (to sutil.dev if you're Dave Dawkins):

```shell
cd ../davedawkins/repl
./sutilbuild.sh
npm run deploy:linode
```