Xanadu for Xojo | CampSoftware
CampSoftware is made up of a fantastic team of people who loves developing Apps to solve problems.
Phone: 407-282-5585
Our blog posts in your email:

Stacks Image 1027
Xanadu for Xojo + Aloe

Xanadu for Xojo + Aloe makes developing database driven Web Apps easy for software developers. FileMaker developers with coding experience will enjoy fast affordable app development again too!

If you're not a developer, you can still enjoy Xanadu. Just let us know what you need and we'll develop your app for your requirements, provide coaching so you can develop your own app, or just be available when you need a bit of help.

Xanadu takes advantage of Xojo and Aloe by Tim Dietrich to build compiled Web Apps that are wicked fast, use very little memory, and can scale. Xojo Web Apps can run and be hosted on Mac, Windows, Linux, or even Raspberry Pi computers. People access the Web App use their web browser on just about any device.

Xanadu makes Web App development fast and fun again with its simple structure powered by Aloe and open standards along with Xojo's amazing language.

Xandu's Contacts Page
Stacks Image 3909
Want to see a demo?

  • Attend Xojo XDC so you can see us present how Aloe and Xanadu works in person. If you're at XDC, we'd love to talk to you!
  • We're happy to announce that everyone who purchased Xanadu will receive Xanadu for Xojo + Aloe at no extra cost. Email links have been sent! :)

VXUG September 2017 Web Meeting Recording

What's New

2017-12-10 Check out the History below to see the detailed change notes.

The goal was to clean up the code as much as possible along with more constancy and focused on writing Xojo/Aloe/Xanadu Web Apps faster. 
  • ALL of the properties have been removed from the different Page Classes and replaced with a single property called 'Page'. The idea is to have one place to add common properties and methods.
  • Embracing even more of the W3.CSS framework which as been easy to use.
  • Added a Stripe Class for payment processing.
  • Changed Checkbox fields to Radio Button fields where SQL fields were changed from SmallInt 1 VarChar 3 and set to default values of 'No'. The reason is that searching for Yes or No is much easier than searching for 1 or 0 and possibly null.
  • The New, Duplicate, and Delete buttons now use W3.CSS Modal Dialogs for confirmations. Check out the W3.CSS modal classes that we're using for the buttons: https://www.w3schools.com/w3css/w3css_references.asp
  • Removed Notie, jQuery ui, jQuery mobile, and jQuery datetimeentry libraries from the /static/ folder as they have been replaced by W3.CSS and FlatPickr.


Xojo Web Apps can be run on Mac, Windows, Linux, or Raspberry Pi computers as either a standalone or cgi app. Standalone Apps have everything included and only need to be launched to make them accessible. CGI Apps can be run on some web hosting providers, but we prefer standalone apps.

At first, you can build your Xojo Web App as a Standalone App and just run it. Users can go to your IP address or domain name and start using it. When you need to scale your app to handle larger number of users, you can to run additional copies, or instances, of your app along with a reverse proxy server like NGINIX.

Don't worry if this sounds complex. We're available to help if you need coaching!

What do we use?

  • Amazon Lightsail for the servers.
  • Amazon Aurora for MySQL.
  • Amazon S3 for storing files and images.
  • NGINX on Amazon Lightsail to route Web Requests.
  • Let's Encrypt on Amazon Lightsail for SSL Certificates.


$300, per developer, with with one year of updates. Add to Cart <— $200 Special Winter Deal

  • Use in as many projects as you wish.
  • Full source code.
  • Free limited email support.
  • Full unlimited support at our hourly rate, paid in advance.
  • Free upgrades for one year.

After a year, you can keep using the version you registered as long as you like. After one year, upgrades are $75 which include another year of updates!


We Take Requests

Have an idea? Let us know and we'll add it to Xanadu, if it is a good fit.

Getting Started with Xanadu

  • Download and Install Xojo.
  • Download MBS Xojo Complete Plugin and then place the MBS Plugins into the Xojo Plugins Folder.
  • Launch Xojo.
  • Download the Xanadu using your Registration Email download link.
  • Open and Run the Project file with Xojo.
  • We use MySQL in order to scale. In your MySQL Server, create a database called 'xanadu' and load the 'xanadu_sql_dump.sql' dump file to populate the database. You'll need to set your MySQL settings in App.LoadPreferences. You'll see appDBAmazon and appDBDebug options where appDBAmazon is used for compiled apps and appDBDebug is used for debugging.
  • We use Amazon S3 for images, but you can do this later to see images. You'll need to set your S3 settings in App.LoadPreferences. The folder 's3Bucket' contains the images that should be stored in your 'xanadu' S3 bucket.
  • Once the App Compiles and Runs, the App will Launch and a Browser window will open.
  • Login with as 'testadmin' / 'testadmin' to run as an Administrator.
  • Login with as 'testuser' / 'testuser' to run as a User.

Questions and Answers

Q: Can you add a feature for me?
A: That depends on what you need! :) Seriously, just ask and we'll try!

  • 2017

    Open or Close
    • Updated xan.ScrollTo.Element so the Selected Element no longer jumps to the top, but rather approximately at the center of the Containing Element.
    • Updated data in the Dump File found Xanadu Project Folder.
    • Created a Class called xan.PageControl for creation of Web Controls based off Tim’s Dietrich’s Aloe.FormField. Added FieldText, FieldTextArea, FieldCheckbox, FieldRadio, FieldSelect, OptionAdd, OptionAddSQL, FormButton and derivatives of FieldText which includes input types: FieldText, FieldTextPassword, FieldTextHidden, FieldTextEmail, FieldTextNumber, FieldTextPhone, FieldTextURL. Text, Password, and Hidden work on all browsers, while Email, Number, Phone, and URL work on most mobile browsers, desktop Chrome, but not desktop Safari or desktop FireFox. Input types that are not supported browsers, will behave as a text input field.
    • Removed Notie, jQuery ui, jQuery mobile, and jQuery datetimeentry libraries for the /static/ folder as they have been replaced by W3.CSS and FlatPickr.
    • Added methods to the Xan Module: xan.URLEncodeBase64, xan.URLDecodeBase64, xan.IPRemote_php
    • Replaced the New, Duplicate, and Delete buttons with the Confirm Buttons with Dialogs that popup for confirmations.
    • Added 'w3-round-large' to Contacts Photo Img for rounded corners.
    • Updated 'GetDivBeginStageFloat' to use less style items over using W3.CSS Class items as a 'w3-panel w3-card'.
    • Changed Body Margins to Spacers.
    • Changed List Margins to use 'PXNavHeight'. Removed 'PXListMarginTop’
    • Added Contacts Comms New Button if no records.
    • Changed Contact Comms Edit links to a Pencil Button.
    • Changed Contact Comms Page Nav bar Link to view the Contact to a Button.
    • Changed Checkboxes to Radio Buttons values from 1/0 to Yes/No from SmallInt 1 to VarChar 3. Set the Default SQL Value to either Yes/No as needed.
    • SQL - Changed Contacts field 'IsActive' to 'Active’ from SmallInt 1 to VarChar 3.
    • SQL - Changed ContactsComms field 'IsMain' to 'Main’ from SmallInt 1 to VarChar 3.
    • SQL - Changed Users field 'Active' from SmallInt 1 to VarChar 3.
    • SQL - Changed Users field 'Admin' from SmallInt 1 to VarChar 3.
    • SQL - Added Contacts 'TimeOpen' and 'TimeClosed' as Time
    • Cleaned up a bit more in Contacts, ContactsComms, Settings.
    • On ContactsComms, separated the Data from the Type and Label with a horizontal rule.
    • Set each Detail Div to have a standard top and left margin.
    • Removed padding from GetTableBeginNoBorder so the top buttons align.
    • Cleaned Contacts, ContactsComms, Settings HTMLDetail(s).
    • Cleaned up Page Classes Constructor, PageDisplay, HTMLList(s), and HTMLDetail(s) except for HTMLDetailGen and HTMLDetailActions.
    • Working on Contacts, ContactsComms, Settings users Lists.
    • Renamed the HTMLHeadTitle properties to HTMLTitle. HTMLTitleBase is the beginning of the title. HTMLTitle is set to HTMLTitleBase in the Constructor. HTMLTitleSuffix is what is appended to the HTMLTitle at the last minute.
    • Moved the code that remembers the page they last visited from PageDisplay to the Constructor.
    • Moved more code from each web page Constructor to the Page Class. Created method for InitPHPEngine and InitDatabase1.
    • If the Init methods have errors, InitErrorMessage is set and SetInitErrorResponse sets the ResponseContent and Status to 500.
    • Created Page Method for the AuthenicationRedirect to home.
    • Created Page Method for SetLastPageVisited.
    • Added a Pref for appLogoPath and appLogoMenuPath. Renamed appURLLogo to appLogoURL.
    • Removed references to Database2 as using Database1 was sufficient.
    • Removed code to connect to database in the DetailGen and ListGen methods to a single call in each web page Constructor Method.
    • In each web page Constructor Method now returning a 'sorry' error message if the Page Class returns an error or if the Database cannot connect.
    • Added a Page Class for the common Properties and Methods that each Page requires. Removed all of the common Properties from each page. 
    • Renamed Page Properties for simplicity and name grouping.
    • Added GetStageLabel method for styling stage labels. Label1 will be strong. GetStageLabel( Label1 as string, Label2 as string = "" )
    • Renamed the AppNavigationHTML to AppNavigationMain and added AppNavigationFound method to show the List Record Count, Search Form, and the Detail Title
    • Added padding to the bottom of the List and Detail as content happened to be slightly off screen which made items unclickable.
    • Moved the html that was wrapped around the list and detail in PageDisplay into the HTMLListGen.
    • Renamed GetPX method to PX and prefixed PX to Size methods so they are grouped an easier to understand.
    • Updated PageDisplay methods with the new PX methods.
    • Renamed 'xol' module to 'xan'.
    • Moved 'Classes Hal' to the 'xan' module.
    • Added xan.Stripe class to process payments with Stripe.com.
    • Removed several AppModule.Get methods that were not used.
    • Initial Release

Stacks Image 3796
About Xojo

We love the Xojo platform. Not only is the development environment very affordable, but it's also powerful, easy to use, and the Xojo Team is very accessible. Time after time, Xojo has responded to new features and bug fixes in a quick and open fashion. It's a pleasure to work with Xojo!

Xojo is free to evaluate for an unlimited amount of time so you can run and debug. Purchasing Xojo allows you to compile, deploy, and distribute your Apps. Since Xanadu is a Web App, all you need is Xojo Web: https://www.xojo.com/store/

Stacks Image 3809
About Monkeybread

Monkeybread has been creating plugins for Xojo for as long as I can remember: