Stacks Image 4000

Xanadu

Xanadu is a platform for developing Database-Driven Web Apps that use NGINX, PHP, HTML, Bootstrap, CSS, Javascript, and MySQL.

Xanadu isn't like other platforms or frameworks. We're old-school developers who use a mix of procedural and object-oriented code in a way that reflects reality. Start with a Page and add Elements. The Page Body generally contains Cards with Elements like Tables, Labels, Inputs, and Buttons. Simple.

It's been a long road. We've been developing Database-Driven Apps for decades with FileMaker and Xojo, both closed-source platforms. FileMaker rocks, but licensing has become expensive. Xojo has fantastic pricing but is perpetually buggy.

We landed on PHP because it is affordable, solid, and open-source.


It's been a while since we last updated information about Xanadu. Xanadu has come a long way and is almost ready for us to talk about. In the meantime, this page will be under a remodel for a bit!

Benefits

Control
  • Open Source Libraries without gatekeepers.
  • PHP is tried and tested.
  • Millions of PHP Developers. Since 2001 for us!
  • Runs on Linux using NGINX, Let's Encrypt, PHP.
Ease
  • Create MySQL Table with Fields.
  • Run Table Schema update.
  • Customize Table Schema details.
  • Run Module Generate.
  • Customize List, Cards, and Business Logic.
Flexibility
  • API Endpoint.
  • Customer Portal.
  • Web Store with a Shopping Cart.
  • Using FileMaker Data API as a data source.
  • Job Scheduler.
  • Insurance Claim Processing
CampSoftware Support
  • Support via Email or Zoom.
  • Web App Hosting.
  • Custom Development.
    • Develop Entire App
    • Add Features
    • Assist You.
    • Conversion from Excel, FileMaker, Xojo, etc.
  • One on One Coaching.

Modules

Overview


Xanadu Pricing

Pricing
  • $900, including Maintenance for 1 Year.
Maintenance
  • Support via Email.
  • Support via Zoom, up to 2 hours.
  • Access to the latest version via GitHub.
Hosting for Custom Development
  • $100 per month for most Web Apps.
  • Includes Dev App and Production App.
  • Includes Domains like myapp.xanweb.app.

Module Generation

Add MySQL Tables for Tickets and Tickets Messages to create a Bug Tracking Ticketing System.
  • Tickets will have a related list of Ticket Messages.
  • Record Modification fields begin with "Mod".
  • Xanadu Keys begin with "UUID". The Primary Key is "UUID{TableName}"

Tickets Table

Stacks Image 6060

TicketMessages Table

Stacks Image 6074
Run Schema Update
  • Found under the Developer Menu.
  • Updates the Modules Table from the SQL Tables.
  • Updates the Schema Table from each SQL Table for each Column.
Stacks Image 6227
Edit Schema
  • Edit the GroupName for each Column.
  • Format is Card Order, Card Title, Column Order.
  • On generation, Columns with the same Card Title will be placed on the same Card.
Image
Generate Module
  • Define the Tables with the Module Name, Table Name, Plural Name, Singular Name, and Defined Font Awesome Icon.
  • Generate Modules for the Parent Table and Related Table.
  • Check the Result Log.
	// Modules
	$tableContacts = new \xan\khan( 'Contacts', 'Contacts', 'Contacts', 'Contact', "FI_CONTACTS" );
	$tableTickets = new \xan\khan( 'Tickets', 'Tickets', 'Tickets', 'Ticket', 'FI_TICKETS' );
	$tableTicketsMessages = new \xan\khan( 'TicketsMessages', 'TicketsMessages', 'Tickets Messages', 'Ticket Message', 'FI_MESSAGES' );
	
	// Generate
	$tableTickets->generate( [ $tableContacts ], [ $tableTicketsMessages ] );
	$tableTicketsMessages->generate( [ $tableContacts, $tableTickets ], [] );
	
	// Result
	$khanResultMsg[ '$tableTickets' ] = $tableTickets->result;
	$khanResultMsg[ '$tableTicketsMessages' ] = $tableTicketsMessages->result;
Load Module
  • Below is the generated Tickets Module after populating some fields.
  • The Ticket List and Ticket Detail come from Tickets Module.
  • The related Tickets Messages come from the TicketsMessages Module.
  • TicketsMessages wouldn't normally be included in the Navigation as a related table.
Image

Schema Attributes

Once a SQL Table is created, you can run the Schema Update which will set many of the following:
  • TableName, DatabaseName, IsDefined, ColumnOrder, GroupName, ColumnName, LabelEN
  • EleFormatAs, EleType, EleAlign, InputMode, DataType, LengthChars, LengthInteger, LengthDecimal
  • LabelENTooltip, EleChoicesValues, EleChoicesDisplay, EleOtherLabel, EleClearLabel, EleWidth, EleHeight
  • IsFindable, IsIndexFullText, IsMod, IsKey, IsKeyPrimary, IsKeyForeign, SelectAs
  • UpdatedTS, ModTSCreated, ModFlag.
Image
Image

Process

Our Development Flow is simple. Develop, Test, Push to Production, and Push to GIT.

We use PHPStorm and love it. PHP Storm, you can connect to FTP Servers, GIT Servers, and MySQL. I'm sure there are many more things that you can connect to, but this is all we've needed. We create two websites, one for development and one for production. Both are added to PHPStorm as separate connections. Then, we connect GIT to github.com and connect MySQL to the MySQL Server.

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!
Q: Why don't you use FileMaker?
A: We did use FileMaker for years! Unfortunately, the licensing made selling apps with FileMaker too expensive. We used FileMaker Runtime, but it was deprecated. We hoped to use FileMaker WebDirect, but FileMaker changed the WebDirect per user price to the same price as FileMaker Pro or FileMaker Go user. FileMaker just priced it self out. :(
Q: Why don't you use Xojo aka REAL Studio aka REALbasic?
A: We tried Xojo. While developing Desktop Apps [ Mac, Windows, Linux ] works well, not so much for Web Apps. When developing Xanadu with Web 1.0 would encounter a Xojo bug here and there, the IDE wouldn't crash too much, but over time the quality decreased. Xojo deprecated Web 1.0 with the release of Web 2.0. We were excited for responsive apps and a refresh. Unfortunately, it took Xojo a while, and once released, Web 2.0 sure didn't feel ready. I love Xojo and the pricing model. I'd pay double or even triple, but there are too many bugs in Xojo to deal with. Check out the forums at https://forum.xojo.com and https://ifnotnil.com to read more.