BuildingCrossPlatformMobileAppsWithFabulous

All the content for a talk on building cross-platform mobile apps with Fabulous

MIT License

Stars
17

Building Cross-Platform Mobile Apps With Fabulous

This repo contains all the resources and links you will need to get started building cross-platform mobile apps with Fabulous. This content was created for a talk given at NDC London in January 2019 and F# Exchange in APril 2019.

Links

Slides

The slides for this talk are available here

Video

The video from NDC London is here:

https://youtu.be/Hm4EDPNXQqY

The video from F# eXchange 2019 is here:

https://skillsmatter.com/skillscasts/13411-build-cross-platform-mobile-apps-using-fabulous

Sample apps

This repo contains 2 sample apps.

Simple Hello World

This is the canonical 'Hello Fabulous' app showing the basics of the MVU pattern. It has a model with a Count field and an Increment message. The update function processes the message, returns a new model with the Count incremented, and this is drawn on the view. The view function returns a view with the Count in a Label, as well as a Button that dispatches the Increment message.

A good way to get started is to add a decrement button, and wire it up using a message. Try this whilst using the Live Update feature to get a good feel of how rapid Fabulous devlopment is.

Advanced Hello World

This app is a online photo storage app that takes photos and uploads them to the cloud.

To try this app out you will need an Azure account. You can sign up for a free account here.

Once you have an account, create a blob storage resource, and add the connection string to the Keys.fs file.

When you run the app you will be able to take a photo and it will upload to your blob storage.

This app checks to see if you have network connectivity using Xamarin Essentials. If you have network connectivity, it uses the Xamarin Media plugin to take a photo.

This app only works on Android at the moment. It uses the Android Azure storage SDK, bound in a Xamarin Java Binding Library. An exercise to the reader is to implement the iOS version using Objective Sharpie.

The storage is implemented in platform specific code using a bound native library, and the function to store the blob is passed in to the app constructor to show how you can compose your app using platform-specific functions.

Get involved!

Fabulous is open source and relies on the community to build it. If you want to get involved, check out the issues in GitHub, especially the ones with the Good first issue label.

If you've written any apps, blog posts, sample code or anything to do with Fabulous, please raise a PR to add it to the Awesome Fabulous repo.

We could also use an icon if you are a designer!

You can also join the conversation on Twitter: