GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Bigtop::Docs::About(3) User Contributed Perl Documentation Bigtop::Docs::About(3)

Bigtop::Docs::About - A document explaining Bigtop's features and history

For a complete and annotated list of Bigtop docs, see Bigtop::Docs::TOC.

Bigtop is a little language for describing the basic structure of web apps including their database layouts and the management of them.

By editing a single description file (with your favorite text editor or the browser based 'tentmaker'), you can have a working web app by code generation. There are good defaults to get you started. If your data model changes, you can regenerate without risk of loosing anything you wrote yourself. Some of the pieces available include:

  • httpd.conf suitable for immediate inclusion in a mod_perl backed apache conf
  • a cgi dispatching script suitable for immediate deployment to your cgi-bin directory
  • a stand alone server suitable for immediate execution during development
  • schema.* (where * varies by database) with all the sql commands needed to build your app's database (including fixed or test data)
  • object relational mapping modules for use with DBIx::Class or other similar tools
  • controllers for each table in the app
  • automated CRUD for tables where that makes sense
  • very flexible CRUD for more complicated situations

In all cases generated files are completely separated from stub files where you write your code. Once generated, stubs are never overwritten. This gives complete safety when regenerating.

Further, if you want to generate other things, it is not hard to alter or add them:

  • Altering what an existing backend generates is usually as simple as copying the template out of the backend, altering it, saving that on disk, then supplying that name like so:

        config {
            Type Backend { template `altered_template.tt`; }
        }
        
  • Making new backends, while not trivial, is not particularly hard (if you understand parse trees and recursion). The grammar even supports registration of new keywords (so long as you don't need new blocks or literals). When you register them, you provide enough information for them to appear in tentmaker as if they were native.

While working on the framework now called Gantry, I became convinced that I was still doing too much work on each app. I wanted a way to collect all the attributes of my data in one place including:
  • sql type
  • on screen appearance (how wide is the input box etc.)
  • whether the user updates it via a form or sees it in summary tables
  • etc.

From this I wanted the SQL statements that create the database, the models which make it easy for me to access that database, and the controllers which do the accessing, plus all the other bells and whistles needed for a complete attractive app.

With Bigtop's kickstart syntax, you can now build a complete CRUD app from the command line alone. Similarly, if you have a postgres 8 database, you can build a CRUD app for it from the command line. See "Bigtop::Docs::QuickStart" for details.

To start using Bigtop, see "Bigtop::Docs::TentTut" or "Bigtop::Docs::Tutorial". If those go too fast, try the Bigtop section of "Gantry::Docs::Tutorial", which builds a smaller app. After those, try "Bigtop::Docs::Cookbook". For a complete doc list, see "Bigtop::Docs::TOC".

Why did I call it Bigtop? I see it as a central place in the sometimes wild and always disparate world of a web application. It is where all the perfomers come together. But it's also about as discriminating as a circus tent, anyone and anything can easily come in and out. It's a big tent. Oh, and it's meant to be fun (cue the circus music).

Phil Crow <crow.phil@gmail.com>
2022-04-09 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.