2008Q2 Grant Proposal - DBEditor

| 5 Comments
  • Name: Grant Grueninger
  • Project Title: DBEditor
  • Synopsis: DBEditor implements a CGI-based database editor. It allows you to very quickly implement a basic table editor by simply stating table data in configuration files (tools are provided to create the configuration files from your existing tables SQL schema).

Name:
Grant Grueninger

Project Title:
DBEditor

Synopsis:
DBEditor implements a CGI-based database editor. It allows you to very quickly implement a basic table editor by simply stating table data in configuration files (tools are provided to create the configuration files from your existing tables SQL schema).

Set up your database config info:
mv db_template cgi-bin/db_lib
vi db_lib/dbconfig.pl # Edit database connection settings
vi nav_lib.pl # Optional: Customize your nav bar, add links to many tables, etc

Set up an editor for your "contacts" table:
cp -rp template cgi-bin/contacts # template contains edit_items wrapper, config.pl, plugins.pl
vi cgi-bin/contacts/config.pl # Edit table schema

Point browser at:
http://www.yourdomain.com/cgi-bin/contacts/edit_items

You can then quickly add functionality using plugins (provided as subroutines in plugins.pl), for example:

  • Turn text URLs into HTML links
  • Process text output
  • Verify input
  • most other things you'd want to do in a web app.

It is easy to add more "plugin points" in DBEditor for future needs.

Benefits to the Perl Community:
DBEditor provides an extremely simple and fast foundation for a web application. Setup and learning curve is much faster than Catalyst (about 1 hour for a new user to get a simple table editor running), and it's simpler and more stable than Jifty (DBEditor has been around longer and specializes in editing database tables). It provides the means to set up a simple web app to edit a database that can be easily expanded into a more robust application.

Deliverables:
Review and re-write existing code in DBEditor.pm to:

  • Make it an object oriented module.
  • Have clean, secure code.
  • Work under CGI or mod_perl implementations
  • Be "taint safe"

Complete the existing documentation:

  • Add Quick start instructions for new users
  • Add Full setup instructions for new users
  • Review and clarify existing documentation

Project Details:
DBEditor was originally written as a set of CGI scripts. A copy of an "edit_items" script had to be placed in each directory and had accompanying config and plugins files. The main script code was then moved into a perl module and the "edit_items" script replaced by a wrapper that contains: "use DBEditor; &process();".

The module is functional and in use in several web sites I maintain. However, the code and documentation is not "clean" enough for me to release to CPAN. It also needs to be made into a true OO module to be compatible with mod_perl. These are tasks I'd like to do, but I haven't had sufficient motivation since the module functions suitably for my needs. Given the module's evolution, these are not minor changes. The code will need to be completely reviewed and revised, and proper documentation will need to be written so that new users can utilize the module easily.

Project Schedule:
Based on my current workload, I would be able to deliver within 1 month and begin work within 1-2 weeks of grant approval.

Bio:
I have been programming perl since the early 90's, and have been programming in general since the late 70's (when I was 8). My father owns a computer company in what's now called "Silicon Valley", so I grew up around computers. In 1996 I wrote a web-based project management system that I use to this day in my consulting work. I have also authored several CPAN modules including WWW::Myspace, WWW::CDBaby, and WWW::Sitebase to help musicians promote themselves online and access their CD sales data.

Amount Requested:
$2500

5 Comments

It's hard for me to see what benefit this provides to the Perl community. There are lots of FS/OSS schema editors out there, all of which are probably more mature than the one this grant would produce.

If this was a request for funds to improve the leading such editor, that'd be different, but as is it seems to be just another wheel reinvention.

This looks quite similar to Catalyst::Example::InstantCRUD and other CRUD Catalyst projects. I understand that it has different goals - but if you decide to use the same underlying modules - then we could steal a bit from each other. I am now working on a new version of InstantCRUD based on Rose::HTML::Form (and DBIx::Class like the former version).

I'm confused by this proposal: is this a database editor or a web framework?

The main benefit of DBEditor over schema editors and web frameworks is that it has an extremely shallow learning curve, and doesn't require a lot of extra pieces to work. To answer acme's question, it's a web-based database editor that can be extended to be used as a simple (or not so simple) framework. To compare it to schema editors and existing web frameworks: Schema editors require that a web framework or other method be used to provide an interface. With a web framework like Catalyst, non-Catalyst users must spend hours or days installing, reading, and learning Catalyst. DBEditor sits in the middle - it has fewer dependencies for a simple installation, and can be learned in under an hour. The programmer simply enters his schema or uses scripts to create them (like schema modules do now), and the basic web interface is created for him, ready to use. From there, he can extend it. Deployment is fast enough to be an alternative to using Excel for simple shared lists. We used it for an artist audition database for a music production company - a one-time use application. Such an application takes under an hour to deploy.

Thanks, that really helped me out.

Leave a comment

About this Entry

This page contains a single entry by Alberto Simões published on May 1, 2008 9:00 PM.

2008Q2 Grant Proposal - Module Installation Configuration Wizard was the previous entry in this blog.

2008Q2 Grant Proposal - Fixing Bugs in the Archive::Zip Perl Module is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.