Please feel free to submit a PR to add testimonials to this page!
msu solutions GmbH
SAFE gives us a fast development cycle for our web and mobile platforms
We at msu solutions GmbH are big fans of SAFE stack. For the last couple of years we were already using F# open source technologies for web and mobile projects. Tools like the Fable compiler and elmish are rock solid and a pleasure to work with.
Since the release of SAFE, we see that all these important technologies are now bundled and tested under one big umbrella. Especially the commercial support for SAFE is very important for us and our customers.
It just works!
The docs are very detailed and helpful. I got the template up and running on a public URL on Azure within one hour. Without any issues. Even though I am new to dotnet core and Azure.
SAFE was the perfect place to start our biological design and data management platform
Demetrix uses F# for DNA design and data management in our research pipeline. Our data systems are built on top of SAFE and it was a great experience for both veteran F# developers and people new to the environment. I would start with SAFE again in a heartbeat for a new project. We shared some of our experiences at Open F# 2018.
Spoil your customers with F# and the SAFE stack!
Porting a production web app from TypeScript/React to use the SAFE stack turned out to be a huge win. Sharing F# models on the front and back-end allows you to leverage the excellent F# compiler and type system when designing and refactoring your codebase. Using a type provider (in our case, SQLProvider) extends this coverage to your database as well. This means that changes to any part of your application will be picked up by the compiler which will essentially guide you to every relevant place in the source code that needs to be updated. This is so effective that once you experience it, you will never want to be without it.
On the front end, the Elmish pattern, which may look intimidating at first glance, is actually quite fun and intuitive to write. More importantly, it guides you into the "pit of success" by making you write highly testable "pure functions" that outline your UI state transitions (in your
update function). Putting all state transitions in one place becomes a breath of fresh air because it eliminates the spaghetti code that can happen in MVVM view models of even modest complexity. Do you have a complex "sort" that needs to be handled in your
update? You can easily write a unit test in F# that passes in the relevant command input for that. No mocking is required because it will be a pure function!
If you still feel leery of the Elmish pattern, you are free to use React Hooks API or any other pattern you prefer. There are also many excellent external libraries - i.e. Feliz - that allow you to optionally use the Elmish pattern on only certain pages, among other things.
Worried about getting stuck? Don't worry because the F# community will practially crawl all over themselves to be the first to answer you question. There are also options for professional consultation as well. The community support is amazing! The SAFE stack is designed to be as turn-key as possible, but there are also plenty of opportunities to customize the stack as you see fit.
Overall, the SAFE stack has allowed me to completely spoil a very damanding customer with timely, bug-free deliverables.