This page contains up-to-date information on some of the more popular Models, Views, and Plugins for Catalyst. It is for those wanting to keep up with current developments and recommended practices. Most of the packages here should be fetched from Catalyst's SVN trunk.


  • DBIC -- for mst's DBIx::Class. Many Catalyst users are now trying this out as an alternative to Class::DBI. It is still young, but under rapid development, and the 0.03 releases have functionality close to that of Class::DBI::Sweet.
  • CDBI::CRUD -- this model is NOT recommended, because it mixes logic into the model that (in our opinion) should be in the controller. See sri's scaffolding movie for a nicer way. If you want to keep CRUD logic in a common place to be shared among several controllers, you can always create a base class for them.




  • DefaultEnd -- Implements a sane end action that should work well for most Catalyst apps. (Not part of core Catalyst distribution)
  • Static::Simple -- Now the standard plugin for serving static content, bundled with Catalyst. Mostly works with no config, and is configurable when it doesn't. (Bundled with Catalyst).
  • Static -- the old way of serving static content. Still works fine, just isn't as nice.
  • ConfigLoader -- load Catalyst config from various sources (YAML version bundled in distribution)


  • Session -- Base plugin for sessions.
  • Session::State::Cookie -- Tracks the session id with a cookie. Recommended.
  • Session::State::URI -- Tracks the session id with a URI.
  • Session::Store::File -- Uses Cache::FileCache to store session data.
  • Session::Store::FastMmap -- Uses Cache::FastMmap to store session data. The fastest backend, but with a few caveats.
  • Session::Store::Memcached -- Uses Cache::Memcached::Managed to store session data.
  • Session::Store::DBI -- Stores session data in a database (not dependent on Class::DBI or DBIx::Class but can use their models to fish a DSN). Scalable and reliable.
  • Session::PerUser -- Adds the ability to store sessions by user as well as by browser.
  • Session::FastMmap -- This plugin still works, but the above plugins generally supersede it


  • Authentication -- Base plugin.
  • Authentication::Credential::Password -- Provides password-based authentication (you will still need a store).
  • Authentication::Credential::HTTP -- HTTP basic auth
  • Authentication::Credential::TypeKey -- TypeKey authentication - requires a non broken Math::BigInt (hard to say what really makes it work)
  • Authentication::Store::Htpasswd -- Simple user/password auth through an Apache htpasswd file.
  • Authentication::Store::DBIC -- Uses a database, via DBIx::Class, to store user information.
  • Authentication::Store::LDAP -- Provides authentication against an LDAP directory, via Net::LDAP


  • Authorization::Roles -- Simple role-based authorization. You can restrict access based on the role (group) a user has.
  • Authorization::ACL -- Provides two methods, deny_access_unless and allow_access_if, which provide fine-grained access control.

Other packages

  • DBIx::Migration
  • HTML::Widget
  • HTML::!FillInForm::LibXML -- a faster version of the standard CPAN module.
  • C::P::CGI::Untaint -- a Catalyst plugin for using CGI::Untaint to extract and untaint form values.
  • C::P::FillInForm
  • C::P::FormValidator -- integrate Data::FormValidator into Catalyst.