http://qs1969.pair.com?node_id=862296

dima_perl has asked for the wisdom of the Perl Monks concerning the following question:

Hi all, I am building a web site with a few functionalities. I would like to: 1. register users with names, addresses, phone numbers, billing info and a few other fields, 2. be able to authenticate these users, 3. provide levels of service for them, 4. let them make posting through unsophisticated forms, 5. bill them recurrently using credit cards and/or PayPal I am wondering if people who've built similar sites have opinions about the various modules available for that. In particular I am considering using Catalyst, or User::Simple, or any other module/module combination that will provide my functionalities. Thanks! Pros and cons of using a CMS are also of interest.

Replies are listed 'Best First'.
Re: choosing modules for web site
by hesco (Deacon) on Sep 28, 2010 at 04:38 UTC
    So, the basic lineup of dependent modules I would reach for if doing this project include:

    1. register users with names, addresses, phone numbers, billing info and a few other fields,

    I would use DBI and DBD::Pg for a datastore (but of course there are many to choose from);

    2. be able to authenticate these users,

    Check out CGI::Session::Auth::DBI to manage use sessions, and privileges by role

    3. provide levels of service for them,

    Again CGI::Session::Auth::DBI allows for user roles and easy methods for checking privileges.

    4. let them make posting through unsophisticated forms,

    Now your idea for a CMS is starting to make sense. Plenty of them out there. And it likely makes more sense to extend one of those to handle this, rather than trying to write a bunch of custom code and glom a cms on top of that.

    I create simple (and not so simple) forms with CGI::FormBuilder all the time. Or you might find interesting a module I recently released to cpan called: Config::Simple::CGI::FormBuilder which sub-classes it.

    5. bill them recurrently using credit cards and/or PayPal

    For managing PayPal interactions, try: Business::PayPal::NVP, Business::PayPal::API and Business::PayPal::IPN. You will need to spend some time in the PayPal API docs to get a sense of what you can do with these modules and how. Both those modules make fine wrappers to it.

    Trust that might get you started.

    if( $lal && $lol ) { $life++; }
    if( $insurance->rationing() ) { $people->die(); }
Re: choosing modules for web site
by sundialsvc4 (Abbot) on Sep 28, 2010 at 13:43 UTC

    I may just be getting old, but ... there is almost certainly some existing piece of software that you could use, instead of creating something altogether new from scratch.   (Even using CPAN modules.)   This has become a classical “build vs. buy decision” that, due to the rather prodigious number of packages that are already out there, almost certainly will not fall to “build.”

    Even though this is a Perl forum, my first suggestion would be:   “evaluate the functionality first, and the implementation second.”   If you can find what you are looking for, and it works, and (better yet...) you can pay someone else to support it, then this is probably going to be your best approach, and you don’t have to care so much what language it was written in.   If you can find a suitable “software as a service,” then you are only interested in the results... and you have a binding legal contract (don’t you?) that says you must get them.   If you conclude, for whatever reason, that “a Perl implementation, on a computer that we own,” is most appropriate, then once again you want to push for what is the highest-level implementation:   the one that gets you as close as possible to your destination without work on your part, and the rest of the way with as little more work as possible.

    Finally, I would encourage you to be as specific as possible.   Actually create a detailed, hypothetical, project-plan.   The research will be worthwhile.

Re: choosing modules for web site
by dima_perl (Initiate) on Sep 28, 2010 at 21:20 UTC

    sundialsvc4,- thanks for your input. Your advice on designing functionality first is really timely as I was going to plunge into coding without a thorough plan. I am gonna write on up first now.

    Like I said in the previous comment, I have used Drupal and WP and what I found is that WP is relatively easy to use but has limited capability and probably isn't the CMS I need for the job. Drupal is versatile and powerful but it is a pain to set up and it has huge overhead on db usage with lots of tables for simply chores and hundreds of db quarries for even very simple operations. I think that Drupal is a pretty clumsy CMS. I haven't tried Joomla, though.

    My rationale for using perl is that the site can be made flexible and with just those functions I need, nothing more, nothing less. I will be coding myself with another guy so we'll get a good control of how safe and reliable the site is. My other issue with Drupal was reliability. It did crash several times and I have no idea why. Diagnosing problems and fixing them may really time consuming with Drupal and I don't even want to think about doing it on a live site:)

    On the other hand there is the question of reinventing the wheel and I keep on going back to the idea of trying another CMS, like Joomla, say. Did you have any positive experience with any CMS in the past, btw?

Re: choosing modules for web site
by dima_perl (Initiate) on Sep 28, 2010 at 21:30 UTC

    hesco,- thanks for your input. Woops, my previous comment to you fell through:) I am going to write another one.

    Thanks for the module your suggested. I looked up your module Config::Simple::CGI::FormBuilder and it looks pretty interesting to me. I may end up using it, actually.

    As for using CMS vs perl modules see my other comment today. It's basically a question of flexibility, ease of set up of a CMS, and maintenance (hard for somebody else's code, easier for my own). Since I've only used Drupal and WP I can make comparisons to those. But I really don't know how Joomla or other lighter CMS may compare to perl.

    As for Config::Simple::CGI::FormBuilder there must be a reason why you subclassed CGI::FormBuilder. What are the features of your new module that aren't there in CGI::FormBuilder?