Outline: ( 15-17 chapters plus up to 4 appendices )
Part I. Quick Start Tutorial ( 4 chapters, 5 if you count the tour ) x
Chapter Installation (install) x
Chapter A Simple Exmaple: Address Book (simpleex) x
Chapter Deployment (deploy) x
Moving to mod_perl
Moving to Gantry::Conf
Chapter Testing (runtests) x
Part II. Case Studies ( 3 chapters, more if you can think of other cases )
Chapter Contact Us (showing Gantry not as MVC but as C) (contactus) x
Chapter Billing App (billingapp) x
Chapter Job Ads App (easily integrated with jobs.perl.org)(jobadsapp) b
needs CRUD to manage change log (but modify date
handled via AutoCRUD)
basic auth
special connector for skill2join table:
an AJAX bit in the Job module
Part III. Gantry Reference ( 4 chapters, 5 if we add Gantry::Conf ) x
[ Chapter How Gantry works - overview (gantrytour) ]
Chapter Full AutoCRUD and CRUD docs (fullcrud) x
controlling redirections
cleansing data
bailing out
[ Chapter Gantry and Basic Authentication (basicauth)
auth is in the Job Ads chapter above ]
Chapter Plugins (plugins) x
implementing a plugin (which does or does not mixin)
controlling plugin loading
Chapter Site Object API (site) x
Let's twist this so it describes what engines provide rather
than pretending the user wants to write one.
engine API
template engine API
Chapter Adding support for your ORM (orms) x
Gantry's connection scheme
Helping AutoCRUD
Gantry::Conf providers etc.?
Part IV. Bigtop Reference ( 5-6 chapters ) x
Chapter Available Backends (backends) x
Chapter Tentmaker Reference (tentref) x
Chapter Bigtop Syntax? (bigsyntax) ?
Chapter Parsing Background (parsing) x
Chapter Bigtop's AST (bigtopast) x
Chapter Writing an SQL backend (backendanat) x
first walk through the deparser, since it is complete then do SQLite:
being careful of namespace collisions
telling tentmaker what you make
registering your keywords
Appendices: ( 4 )
Gantry Errors (gantryerr)
Bigtop Errors (bigtoperr)
only one of these is distinct:
Bigtop Syntax (bigsyntax)
Bigtop Grammar (annotated) (grammar)
I'm now opposed to including the grammar, since discussions of it are in
part IV and it is shipped in the dist for the interested, making it a
waste of paper.
Further, I think the tentref serves as a complete tour of syntax, omitting
only controller level configs and table level data statements. Those
could easily be put into a section at the end of tentref chapter.
Case Studies:
Address Book/Business Contact Database (for quick start)
Billing App (similar to Tim's)
Hiring App
Doc App (similar to Malcolm)
Contact us
(no database, just email address which is an alias putting
recipients into a database for our app would duplicate what IT
had already done with that alias)
Points:
Easy with tentmaker
Controllable CRUD
Easy to add controllers and code to them
Conf is easy with Gantry::Conf
Deploying multiple instances
Sharing conf between apps
Switchable from:
CGI to mod_perl
one ORM to another
Gantry Stays out of the way when not needed:
Auth is personal, but Gantry can help if you use our data model
Models aren't always useful
no database needed (think mac registrar for digeo)
database exists, we need a single tiny select perhaps via slow ODBC
Not everyone likes templates (some like the old CGI style)
Session management is well handled by many other tools pick one
like Apache::Session
Extra:
Internals:
Bigtop:
writing a backend
basics of parsing
Bigtop's grammar (in an appendix)
the mixin scheme (and how to avoid collisions)