NAME OpusVL::AppKit VERSION version 2.29 DESCRIPTION AppKit is based on CatalystX::AppBuilder, and includes some modules for common tasks. The idea is that you produce a thin AppKit application, and stick multiple modules together. We recommend Dist::Zilla to get you started on AppKit. That's because we've made minting profiles so we don't have to explain how it works. $ dzil new -PAppKit MyApp $ dzil new -PAppKitX MyApp::AppKitX::NewModularFeature See Dist::Zilla::MintingProfile::AppKit and Dist::Zilla::MintingProfile::AppKitX. Whenever you mint a new AppKit application, you'll end up with a common set of files: MyApp.pm: package MyApp; use strict; use warnings; use MyApp::Builder; our $VERSION='0.001'; my $builder = MyApp::Builder->new( appname => __PACKAGE__, version => $VERSION ); $builder->bootstrap; 1; MyApp/Builder.pm: (see also "Builder") package MyApp::Builder; use Moose; extends 'OpusVL::AppKit::Builder'; override _build_superclasses => sub { return [ 'OpusVL::AppKit' ] }; override _build_config => sub { my $self = shift; my $config = super(); $config->{'Controller::Login'} = { traits => '+OpusVL::AppKit::TraitFor::Controller::Login::NewSessionIdOnLogin', }; $config->{'View::CMS::Page'}->{AUTO_FILTER} = 'html'; return $config; }; myapp.conf: name MyApp connect_info dbi:SQLite:t/db/test.db connect_info username connect_info password connect_info dbi:SQLite:t/db/test.db connect_info username connect_info password NAME OpusVL::AppKit - Catalyst based application AppKitX AppKitX is the namespace we use for the individual modules from which your application is built. Each of this is almost an entire Catalyst application per se; except that it doesn't inherit from Catalyst itself, and requires marshalling by means of a Builder class. We generally recommend keeping things as separate as possible, so we normally have: An AppKitX distribution for each logical chunk of the site A DB distribution, usually a DBIx::Class distribution that stands independently of the application itself An AppKitX::DB distribution, which provides the Catalyst::Model for the aforementioned DB distribution. For example, once we've created MyApp, we would create MyApp::AppKitX::SomeModule, MyApp::DB, and MyApp::AppKitX::DB. There will be many MyApp::AppKitX::SomeModule style distributions; and possibly some MyCompany::AppKitX::SomeModule distributions, for common modules. Builder The builder is provided as a skeleton, but this is where you decide which modules get loaded. To do so, you override a method in MyApp/Builder.pm. override _build_plugins => sub { my $plugins = super(); return [ @$plugins, qw/ MyApp::AppKitX::Plugin1 MyApp::AppKitX::Plugin2 / ]; } This is all that's required to connect those plugins together - an app with a builder with this method, listing them. SEE ALSO OpusVL::AppKit::Plugin::AppKit OpusVL::AppKit::Base::Controller::GUI OpusVL::AppKit::Controller::Root Catalyst SUPPORT Support can be garnered by use of the GitHub issue tracker at https://github.com/OpusVL/OpusVL-AppKit/issues AUTHOR OpusVL - www.opusvl.com COPYRIGHT AND LICENSE This software is copyright (c) 2010 by OpusVL - www.opusvl.com. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.