SAFE Stack

current state

Tomasz Heimowski @theimowski

https://theimowski.com

Plan

  • Brief intro
  • Where are we today
  • How we got here
  • Template deep dive
  • Towards version 1.0
  • What's next

Brief intro

  • What is SAFE?
  • Quick Demo

???

Mean

https://www.troofal.com/services/mean-stack

LAMP

https://www.programmableweb.com/news/what-mean-stack-and-why-it-better-lamp/analysis/2015/12/22





CATS

(Typical MS Stack)

big picture


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

https://safe-stack.github.io

S for Saturn

https://saturnframework.org/

  • Web server
  • ASP.NET Core, Kestrel
  • MVC pattern

A for Azure

https://azure.microsoft.com

  • Cloud provider

F for Fable

http://fable.io

  • F# to JavaScript compiler
  • Babel JS

E for Elmish

https://elmish.github.io

  • UI library
  • inspired by Elm

Quick Demo

  • Creating from scratch
  • Debugging both Client & Server

full demo

Watch full demo from F# eXchange '18 Video

Where are we today

Documentation

docs

https://safe-stack.github.io/docs/

NuGet downloads

nuget_downloads.png

Microsoft involvement

ms.png

Phillip Carter @ F# eXchange '18

Technology Radar

tech_radar.png

Radar - languages and frameworks

Commercial support

Podcasts

Events

Conference talks

  • Lambda Days 2018, Kraków, Poland
  • FableConf 2018, Berlin, Germany
  • F(by) 2019, Minsk, Belarus
  • ...

--> https://safe-stack.github.io/docs/events/

Events

Workshops

  • Open F# 2018, San Francisco, USA
  • SAFE Hackday 2018, Birmingham, UK
  • DevDays 2019, Vilnius, Lithuania
  • ...

--> https://safe-stack.github.io/docs/events/

Events

Local Meetups

  • Bristol, UK
  • Vienna, Austria
  • Prague, Czech Republic
  • ...

--> https://safe-stack.github.io/docs/events/

How we got here

Fable

  • Stable F# to JS compilation
  • Reusing F# sources between front and back end

Elmish

  • Straight-forward & popular programming model
  • Became de-facto a standard for Fable Web-based apps

Announcing SAFE

SAFE projects on GitHub

SAFE template

  • dotnet new -i SAFE.Template
  • dotnet new SAFE
  • fake build --target run

Promotion

Template Deep dive

Template options

  • Server
  • Deploy
  • Layout
  • JS Deps
  • Communication
  • Pattern

Template options

Server


  1. Saturn
  2. Giraffe
  3. Suave

Template options

Deploy


  1. Azure AppService
  2. Docker
  3. Google Cloud AppEngine
  4. Google Cloud Kubernetes Engine

Template options: layout (Fulma)


Template options

JS Deps


  1. Yarn
  2. NPM

Template options

Communication

Template options

Pattern

Template development

  • Integration tests
    • Property-based for all options
    • Building new template
    • Checking HTTP response
  • Pinning dependencies
    • Variance in paket.dependencies
    • Automated update

Towards version 1.0

1.0 objectives

  • stable dependencies
  • stable CLI interface
  • stable WebPack configuration
  • better adoption

1.0 release

What's next

  • Support & fixing issues
  • Extending template:
    • other platforms (mobile, desktop, iot?)
    • tests
    • more deployment options
  • Keeping SAFE project "up to date"

Thank you!

Slides available at

https://theimowski.com/talk-safe-current-state/index.html