Full Stack Web

in F#

Tomasz Heimowski

https://theimowski.com

@theimowski

Full Stack Web

TODO MVC

http://todomvc.com/

https://www.todobackend.com/

F#

F#

  • Microsoft origin, OSS
  • General purpose
  • Functional-first
  • .NET / Mono / .NET Core / Web browser
  • https://fsharp.org/

big picture


  • Web stack
  • Combines several OSS projects
  • F# end-to-end
  • Type-SAFE
  • Cloud-ready
  • Flexible

https://safe-stack.github.io

Prerequisites



or

Creating SAFE project

  • Install SAFE template: dotnet new -i SAFE.Template
  • Create project from template: dotnet new SAFE
  • Build & run: fake build --target run
  • Wait for build to finish: app opens up in browser

S for Saturn

https://saturnframework.org/

  • Web server
  • ASP.NET Core, Kestrel

A for Azure

https://azure.microsoft.com

  • Cloud provider

  1. Azure AppService
  2. Google Cloud AppEngine
  3. Google Cloud Kubernetes Engine
  4. IIS
  5. Docker
  6. Heroku

F for Fable

http://fable.io

  • F# to JavaScript compiler
  • Babel JS

E for Elmish

https://elmish.github.io

  • UI library
  • Model - View - Update

practical benefits


  • one language to rule them all
  • after learning F# it's really easy to use!
  • rich template with plenty options
  • development experience taken to the next level
  • Fable integrates nicely with JavaScript ecosystem

what's more?

What about Blazor?

Fable

Blazor

Language

F#

C# (Razor)

Runtime

JavaScript

Web Assembly (Mono)

Interop

Directly (bindings)

via JavaScript

resources