SlideShare a Scribd company logo
XHR




django Forms in an API World
          http://www.northwesternflipside.com/2011/01/10/2011-where-are-the-flying-cars/
Lets talk about me



            Tareque Hossain
             Lead Software Engineer
Lets talk about forms


django Forms

And how we can use them in
this day & age of APIs!
What can you expect…
• What’s wrong with forms as it is
• How we use forms
• Issues using form in an API
  world
• Approaches for tackling the
  issues
• The solution
The good old days..


• Write up some HTML
• Throw some fancy template tags in
  there
       {{ my_awesome_form.as_p }}
• WIN
Fast forward a few years..



    You really dig APIs
Your setup looks like this:

                    Me likey!




                                I give you
No $#!7.                            API
Nuevo mundo..
• Django forms live on API server
  – Validates/ saves API requests
  – Doesn’t get rendered via template
• You’ve been writing forms in the
  frontend
  – Hardcoded HTML
  – Trying to match up data that API expects
API Clients
• Your website no longer lives on the same
  application space as the API
• Common API clients
  – A JavaScript MVC powered website
  – An android app
  – An iOS app
Forms on API Clients
The Issue
• You can serve most platforms with an
  HTML app
  – Write form in HTML on your webapp
• If you write native application for mobile
  – You recreate forms using the interfaces
    available
The Issue

• These interfaces you write
  – Don’t have any idea about the django
    forms residing on the API server
  – Only know what data to collect when you
    explicitly code them on each device
• There’s a disconnect
Houston we have a problem..
                  http://epicdemotivational.com/tag/beer/page/2/
Lets take a step back



  What is a form?
Lets take a step back

ˈ rm (noun)
fȯ
 a printed or typed document with
 blank spaces for insertion of
 required or requested information


                   Entry #4 at http://www.merriam-webster.com/dictionary/form
In the world of HTML


Part of an HTML document with input
interfaces for inserting required or
requested information
In the world of web apps

• A form is the interface we provide the
  application user to collect information
• It’s essential to any application where we
  collect data
In the world of django
django Forms

• A construct that:
  – Binds data (request.POST)
  – Validates data (clean)
  – Processes data (save)
  – Renders interface (as_p)
django Forms
• ModelForm
  – Turns your model into a form
  – Easiest way to get an interface for your
    data
• Widgets
  – Define specific properties for interface
    element
  – Separates presentation from data types
Why not just render via template?

You can’t if:
  – You only use django to power your API and
    the consumers are arbitrary
  – You run several django API servers each
    dealing with different data space
Think about this architecture
                   Profile API




                                   Analytics API
Content API




                                 Admin App
        User App
Your services are distributed

• Web applications we design are
  increasingly becoming:
  – Separated between presentation and data
    layer via API
  – Dependent on multiple API endpoints
  – Rich and complex in interface
Your services are distributed

• Your site content is retrieved using the
  Content API
  – You collect user feedback on content using
    forms
  – You provide admin interface to manage
    content using forms
Your services are distributed

• Information for users are stored and
  retrieved using Profile API
  – You allow log in, creation and update of
    profiles using forms
  – You provide admin interface to manage
    profiles using forms
Your services are distributed


• Site performance and user traffic is
  recorded to Analytics API
  – You provide admin interface to access and
    create custom reports using forms
Think again.
                            Profile API




                                            Analytics API
Content API




                                          Admin App
        User App
The Issue (contd.)

• At WiserTogether we love APIs & have
  a similar distributed setup
• We’ve been hardcoding forms in the
  frontend, collecting data and sending to
  API
The Issue (contd.)

• Whenever a data point in the backend
  changed, we had to update the form
• We have multiple clients who require
  different set of fields present on
  registration forms
  – Again, hardcoding in frontend
It was a mess
                $#^*!
What to do..

• django forms is used to validate and
  process our API data
• We wanted django forms to
  determine our frontend interface
  – But it was completely agnostic about
    backend forms!
What to do..

• Deliver form definition over API
• Render interface in the frontend from
  the retrieved definition
  – No more hardcoding
  – Forms in the user facing application
    changes as soon as backend form
    changes
What to do..

• Adjust form in whatever way
  necessary
  – Add/ remove fields from registration
    form
  – Frontend renders form exactly the way
    you want
  – No code change necessary in frontend
What to do..

• Contain form definition in one spot
• Allow a single central point to control
  interface on all applications
• Allow different API consumers to
  retrieve form definition
  – And render interface appropriate for the
    platform or device
3 step solution
Step 1


Serialize form with all information
necessary for reproduction at frontend
Step 2

• Devise methods to handle the
  following over API:
  – Deliver form definition
  – Receive form data
  – Validate form and deliver errors
  – If valid save the form
Step 3
• Handle forms in the frontend using
  API data
  – Render form
  – Submit data
  – If not valid, then display errors
  – If valid, then display success
    message, reload page or redirect as
    necessary
Step 1


Serialize form with all information
necessary for reproduction at frontend
django Remote Forms

• Extracts all information from a given
  django form or model form instance
• Goes through each field & widget to
  extract all necessary information
• Presents the information as
  dictionary for further manipulation &
  easy serialization into JSON
As easy as π
A JSON form
Step 2

• Devise methods to handle the
  following over API:
  – Deliver form definition
  – Receive form data
  – Validate form and deliver errors
  – If valid save the form
django Forms in a Web API World
Points to Ponder
• Handle CSRF yourself of using X-
  CSRFToken
  – django CSRF middleware is not JSON
    friendly
• Encapsulate form processing in save
  method, similar to Model Form
Step 3
• Handle forms in the frontend using
  API data
  – Render form
  – Submit data
  – If not valid, then display errors
  – If valid, then display success
    message, reload page or redirect as
    necessary
HTML/JS/CSS Implementation
• We created a set of rendering and
  data handling tools for the frontend
  using:



• In future, we’ll be working towards
  iOS implementations as well
Backbone Form Handler
• Renders forms based on definition
  received over API
• Uses Handlebars template for
  rendering:
  – Core form structure (form tag, fields
    container, global errors)
  – Field & widget structure (help text, errors)
• Error rendering
Backbone Form Handler
• Allows instant validation
  – Similar to autocomplete
  – Field can be validated as soon as you
    move to next one
• Allows preloading of data
• Disallow editing of fields
  – Including selects, radio and checkboxes
• Provide submit buttons (if not supplied)
Handlebars Templates
                   Handlebars
                    Widgets
Sample Backbone View
                                  Instantiate
                                 form model



                                 Instantiate
                                  form view




            Initiate rendering
             by fetching the
             form definition
django Forms in a Web API World
django Remote Admin
• A reviewer expressed interest
  – Use remote forms to expose django admin
    interface over API
• So I implemented a set of API endpoints
  – Exposes django admin app/model/instance
    data
  – Exposes admin forms
• And wrote a backbone app implementing
  django admin
Goals of django Remote Admin

• Allow administration of django
  projects over API
• No more ties to the same old
  interface!
• Use awesome Handlebars snippets of
  your own to spice up the interface
How does it work?
• Cycle through admin site registry
  – Extract app/model info and expose over
    API
• Create ModelForm from the model
  – Expose over API using django remote
    forms
• The backbone app calls the API
  – Allows browsing apps/ models
  – Allows creating/editing model instances
Further Work
• django Remote Forms
  – Implement file/ image uploading over
    API
• django Remote Admin
  – Load form/widget customizations from
    Admin classes
  – Implement pagination for foreign key
    loader
Demo
• Ask me about WiserTogether
  – github.com/WiserTogether/django-remote-forms
  – github.com/tarequeh/django-remote-admin
• Follow my tweets @tarequeh
• Shout out to Carlo Costino
• ind this presentation
  – slideshare.net/tarequeh
Q/A
• Ask me about WiserTogether
  – github.com/WiserTogether/django-remote-forms
  – github.com/tarequeh/django-remote-admin
• Follow my tweets @tarequeh
• Shout out to Carlo Costino
• ind this presentation
  – slideshare.net/tarequeh

More Related Content

PDF
Dot Net Core
PPTX
Asp.Net Core MVC with Entity Framework
PPT
Introduction To Dotnet
PDF
Introduction to back-end
PPT
ASP.NET MVC Presentation
PPTX
ASP.NET MVC Presentation
PPTX
Introduction to Django
PDF
.Net framework vs .net core a complete comparison
Dot Net Core
Asp.Net Core MVC with Entity Framework
Introduction To Dotnet
Introduction to back-end
ASP.NET MVC Presentation
ASP.NET MVC Presentation
Introduction to Django
.Net framework vs .net core a complete comparison

What's hot (20)

PDF
Mini Projects for Computer Science Engineering Students.pdf
PPTX
PHP Summer Training Presentation
PPTX
Angular overview
PPTX
RESTful API - Best Practices
PDF
Web Development with HTML5, CSS3 & JavaScript
PPTX
Final pre power_group_executing bpm processes with Camunda
PDF
Java para dispositivos móveis
PDF
PPTX
MVC Framework
PDF
Online Attendance System
PPTX
TypeScript Overview
PPTX
.Net Core
PDF
Specializing the Data Path - Hooking into the Linux Network Stack
PPTX
NodeJS - Server Side JS
PPTX
Final Year Project BCA Presentation on Pic-O-Stica
PDF
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
PPTX
PPTX
React JS - A quick introduction tutorial
Mini Projects for Computer Science Engineering Students.pdf
PHP Summer Training Presentation
Angular overview
RESTful API - Best Practices
Web Development with HTML5, CSS3 & JavaScript
Final pre power_group_executing bpm processes with Camunda
Java para dispositivos móveis
MVC Framework
Online Attendance System
TypeScript Overview
.Net Core
Specializing the Data Path - Hooking into the Linux Network Stack
NodeJS - Server Side JS
Final Year Project BCA Presentation on Pic-O-Stica
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
React JS - A quick introduction tutorial
Ad

Viewers also liked (7)

PDF
Life in a Queue - Using Message Queue with django
PPT
Pinax Introduction
PDF
Django Uni-Form
PPT
Django Forms: Best Practices, Tips, Tricks
KEY
Advanced Django Forms Usage
PDF
12 tips on Django Best Practices
PPTX
IDMP and RIM: friend or foe?
Life in a Queue - Using Message Queue with django
Pinax Introduction
Django Uni-Form
Django Forms: Best Practices, Tips, Tricks
Advanced Django Forms Usage
12 tips on Django Best Practices
IDMP and RIM: friend or foe?
Ad

Similar to django Forms in a Web API World (20)

PPTX
SAP Adobe forms
PDF
(ATS6-DEV02) Web Application Strategies
PPTX
java mini project for college students
PPTX
SharePoint 2013 APIs demystified
PDF
Come riprogettare le attuali farm solution di share point con il nuovo modell...
PDF
Server and client rendering of single page apps
PDF
Optimizing your job apply pages with the LinkedIn profile API
PPTX
Prepararsi a spostare le proprie applicazioni share point su office 365
PPTX
Building a REST API for Longevity
PDF
Angular 2 overview in 60 minutes
PDF
Tutorial, Part 1: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
PDF
The future of web development write once, run everywhere with angular js an...
PPTX
The future of web development write once, run everywhere with angular.js and ...
PDF
Workshop 04 android-development
PDF
Write Generic Code with the Tooling API
PPTX
Smartone v1.0
PDF
Z sap boe-2016-techws-04_vs_fiori-app-with-eclipseluna-accessing-zsap-system
PPTX
Code workshop
PDF
How to Connect to Any REST API (Without Writing Any Code)
PDF
Practices and tools for building better APIs
SAP Adobe forms
(ATS6-DEV02) Web Application Strategies
java mini project for college students
SharePoint 2013 APIs demystified
Come riprogettare le attuali farm solution di share point con il nuovo modell...
Server and client rendering of single page apps
Optimizing your job apply pages with the LinkedIn profile API
Prepararsi a spostare le proprie applicazioni share point su office 365
Building a REST API for Longevity
Angular 2 overview in 60 minutes
Tutorial, Part 1: SharePoint 101: Jump-Starting the Developer by Rob Windsor ...
The future of web development write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular.js and ...
Workshop 04 android-development
Write Generic Code with the Tooling API
Smartone v1.0
Z sap boe-2016-techws-04_vs_fiori-app-with-eclipseluna-accessing-zsap-system
Code workshop
How to Connect to Any REST API (Without Writing Any Code)
Practices and tools for building better APIs

More from Tareque Hossain (10)

PDF
The solr power
PPTX
RESTful APIs: Promises & lies
PDF
API Design & Security in django
PDF
Introducing KMux - The Kernel Multiplexer
PDF
SIGTRAN - An Introduction
PPT
Django orm-tips
PPT
Linux Composite Communication
PPT
Django Deployment
PDF
Xen & the Art of Virtualization
PPT
Introduction to django-config
The solr power
RESTful APIs: Promises & lies
API Design & Security in django
Introducing KMux - The Kernel Multiplexer
SIGTRAN - An Introduction
Django orm-tips
Linux Composite Communication
Django Deployment
Xen & the Art of Virtualization
Introduction to django-config

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
cuic standard and advanced reporting.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Electronic commerce courselecture one. Pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Encapsulation theory and applications.pdf
PPTX
Machine Learning_overview_presentation.pptx
PDF
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
sap open course for s4hana steps from ECC to s4
MYSQL Presentation for SQL database connectivity
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
A comparative analysis of optical character recognition models for extracting...
cuic standard and advanced reporting.pdf
The AUB Centre for AI in Media Proposal.docx
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Building Integrated photovoltaic BIPV_UPV.pdf
Spectral efficient network and resource selection model in 5G networks
Electronic commerce courselecture one. Pdf
Programs and apps: productivity, graphics, security and other tools
Unlocking AI with Model Context Protocol (MCP)
Encapsulation theory and applications.pdf
Machine Learning_overview_presentation.pptx
MIND Revenue Release Quarter 2 2025 Press Release

django Forms in a Web API World

  • 1. XHR django Forms in an API World http://www.northwesternflipside.com/2011/01/10/2011-where-are-the-flying-cars/
  • 2. Lets talk about me Tareque Hossain Lead Software Engineer
  • 3. Lets talk about forms django Forms And how we can use them in this day & age of APIs!
  • 4. What can you expect… • What’s wrong with forms as it is • How we use forms • Issues using form in an API world • Approaches for tackling the issues • The solution
  • 5. The good old days.. • Write up some HTML • Throw some fancy template tags in there {{ my_awesome_form.as_p }} • WIN
  • 6. Fast forward a few years.. You really dig APIs
  • 7. Your setup looks like this: Me likey! I give you No $#!7. API
  • 8. Nuevo mundo.. • Django forms live on API server – Validates/ saves API requests – Doesn’t get rendered via template • You’ve been writing forms in the frontend – Hardcoded HTML – Trying to match up data that API expects
  • 9. API Clients • Your website no longer lives on the same application space as the API • Common API clients – A JavaScript MVC powered website – An android app – An iOS app
  • 10. Forms on API Clients
  • 11. The Issue • You can serve most platforms with an HTML app – Write form in HTML on your webapp • If you write native application for mobile – You recreate forms using the interfaces available
  • 12. The Issue • These interfaces you write – Don’t have any idea about the django forms residing on the API server – Only know what data to collect when you explicitly code them on each device • There’s a disconnect
  • 13. Houston we have a problem.. http://epicdemotivational.com/tag/beer/page/2/
  • 14. Lets take a step back What is a form?
  • 15. Lets take a step back ˈ rm (noun) fȯ a printed or typed document with blank spaces for insertion of required or requested information Entry #4 at http://www.merriam-webster.com/dictionary/form
  • 16. In the world of HTML Part of an HTML document with input interfaces for inserting required or requested information
  • 17. In the world of web apps • A form is the interface we provide the application user to collect information • It’s essential to any application where we collect data
  • 18. In the world of django
  • 19. django Forms • A construct that: – Binds data (request.POST) – Validates data (clean) – Processes data (save) – Renders interface (as_p)
  • 20. django Forms • ModelForm – Turns your model into a form – Easiest way to get an interface for your data • Widgets – Define specific properties for interface element – Separates presentation from data types
  • 21. Why not just render via template? You can’t if: – You only use django to power your API and the consumers are arbitrary – You run several django API servers each dealing with different data space
  • 22. Think about this architecture Profile API Analytics API Content API Admin App User App
  • 23. Your services are distributed • Web applications we design are increasingly becoming: – Separated between presentation and data layer via API – Dependent on multiple API endpoints – Rich and complex in interface
  • 24. Your services are distributed • Your site content is retrieved using the Content API – You collect user feedback on content using forms – You provide admin interface to manage content using forms
  • 25. Your services are distributed • Information for users are stored and retrieved using Profile API – You allow log in, creation and update of profiles using forms – You provide admin interface to manage profiles using forms
  • 26. Your services are distributed • Site performance and user traffic is recorded to Analytics API – You provide admin interface to access and create custom reports using forms
  • 27. Think again. Profile API Analytics API Content API Admin App User App
  • 28. The Issue (contd.) • At WiserTogether we love APIs & have a similar distributed setup • We’ve been hardcoding forms in the frontend, collecting data and sending to API
  • 29. The Issue (contd.) • Whenever a data point in the backend changed, we had to update the form • We have multiple clients who require different set of fields present on registration forms – Again, hardcoding in frontend
  • 30. It was a mess $#^*!
  • 31. What to do.. • django forms is used to validate and process our API data • We wanted django forms to determine our frontend interface – But it was completely agnostic about backend forms!
  • 32. What to do.. • Deliver form definition over API • Render interface in the frontend from the retrieved definition – No more hardcoding – Forms in the user facing application changes as soon as backend form changes
  • 33. What to do.. • Adjust form in whatever way necessary – Add/ remove fields from registration form – Frontend renders form exactly the way you want – No code change necessary in frontend
  • 34. What to do.. • Contain form definition in one spot • Allow a single central point to control interface on all applications • Allow different API consumers to retrieve form definition – And render interface appropriate for the platform or device
  • 36. Step 1 Serialize form with all information necessary for reproduction at frontend
  • 37. Step 2 • Devise methods to handle the following over API: – Deliver form definition – Receive form data – Validate form and deliver errors – If valid save the form
  • 38. Step 3 • Handle forms in the frontend using API data – Render form – Submit data – If not valid, then display errors – If valid, then display success message, reload page or redirect as necessary
  • 39. Step 1 Serialize form with all information necessary for reproduction at frontend
  • 40. django Remote Forms • Extracts all information from a given django form or model form instance • Goes through each field & widget to extract all necessary information • Presents the information as dictionary for further manipulation & easy serialization into JSON
  • 43. Step 2 • Devise methods to handle the following over API: – Deliver form definition – Receive form data – Validate form and deliver errors – If valid save the form
  • 45. Points to Ponder • Handle CSRF yourself of using X- CSRFToken – django CSRF middleware is not JSON friendly • Encapsulate form processing in save method, similar to Model Form
  • 46. Step 3 • Handle forms in the frontend using API data – Render form – Submit data – If not valid, then display errors – If valid, then display success message, reload page or redirect as necessary
  • 47. HTML/JS/CSS Implementation • We created a set of rendering and data handling tools for the frontend using: • In future, we’ll be working towards iOS implementations as well
  • 48. Backbone Form Handler • Renders forms based on definition received over API • Uses Handlebars template for rendering: – Core form structure (form tag, fields container, global errors) – Field & widget structure (help text, errors) • Error rendering
  • 49. Backbone Form Handler • Allows instant validation – Similar to autocomplete – Field can be validated as soon as you move to next one • Allows preloading of data • Disallow editing of fields – Including selects, radio and checkboxes • Provide submit buttons (if not supplied)
  • 50. Handlebars Templates Handlebars Widgets
  • 51. Sample Backbone View Instantiate form model Instantiate form view Initiate rendering by fetching the form definition
  • 53. django Remote Admin • A reviewer expressed interest – Use remote forms to expose django admin interface over API • So I implemented a set of API endpoints – Exposes django admin app/model/instance data – Exposes admin forms • And wrote a backbone app implementing django admin
  • 54. Goals of django Remote Admin • Allow administration of django projects over API • No more ties to the same old interface! • Use awesome Handlebars snippets of your own to spice up the interface
  • 55. How does it work? • Cycle through admin site registry – Extract app/model info and expose over API • Create ModelForm from the model – Expose over API using django remote forms • The backbone app calls the API – Allows browsing apps/ models – Allows creating/editing model instances
  • 56. Further Work • django Remote Forms – Implement file/ image uploading over API • django Remote Admin – Load form/widget customizations from Admin classes – Implement pagination for foreign key loader
  • 57. Demo • Ask me about WiserTogether – github.com/WiserTogether/django-remote-forms – github.com/tarequeh/django-remote-admin • Follow my tweets @tarequeh • Shout out to Carlo Costino • ind this presentation – slideshare.net/tarequeh
  • 58. Q/A • Ask me about WiserTogether – github.com/WiserTogether/django-remote-forms – github.com/tarequeh/django-remote-admin • Follow my tweets @tarequeh • Shout out to Carlo Costino • ind this presentation – slideshare.net/tarequeh

Editor's Notes

  • #3: We are a small health care startup and we provide a platform through which users can make better decisions about their healthcare options
  • #4: But we are here today to talk about forms, particularly django forms.
  • #5: I’ll discuss the following things..
  • #6: Remember the times when the only form on your site was a comments page?
  • #8: Here we see He-Man riding warrior pony serving API using django and says I give you API! And all the consumers love it
  • #9: But the problem of reproducing forms on the frontend is much more than not being able to render it via django template
  • #11: Here’s a clear manifestation of forms on different platforms. On the far right we have the login/registration form on Twitter’s homepage, which is strikingly similar to the interfaces on these devices!
  • #12: So let’s get back to the issue of form rendering
  • #19: This is a simple authentication form that asks for your email and password, has a few clean methods to distill the data and some additional helper methods
  • #20: LOVE django forms
  • #21: ModelForms and Widgets are two great aspect of django, one promotes DRY and the other provides separation of logic
  • #22: And much more
  • #23: 3 independent django projects and 2 independent webapps
  • #24: And much more
  • #25: And much more
  • #26: And much more
  • #27: And much more
  • #29: And much more
  • #30: More hardcoding to accommodate different versions of the same form
  • #31: More hardcoding to accommodate different versions of the same form
  • #35: More hardcoding to accommodate different versions of the same form
  • #39: Let’s go over each of the steps in detail..
  • #40: And our solution…
  • #43: I want to emphasize on the fact that I’m not a big fan of sending HTML over API. Particularly not for forms, since the consumer of the API may or may not render the form using HTML
  • #44: Lets take a look at what a view capable of providing such API functionalities look like. I promise it’s not too complex.
  • #46: Finally step 3
  • #47: So we went ahead and implemented a solution for the web applications
  • #49: The primary construct that’s responsible for managing the remote forms is a special Backbone model/view combo that we call the Backbone Form Handler
  • #50: Lets take a look at the handelbars part of this solution
  • #51: As you can see, we are using little snippets of Handlebars for different form fields. Similar to form widgets.
  • #53: More hardcoding to accommodate different versions of the same form
  • #58: Please feel free to use the examples in any way that suits your needs. They are not meant to be out of the box solution and currently doesn’t have much documentation
  • #59: Please feel free to use the examples in any way that suits your needs. They are not meant to be out of the box solution and currently doesn’t have much documentation