package Dancer2::Plugins;
# ABSTRACT: A curated list of recommended Dancer2 plugins

__END__

=pod

=encoding UTF-8

=head1 NAME

Dancer2::Plugins - A curated list of recommended Dancer2 plugins

=head1 VERSION

version 2.1.0

=head1 DESCRIPTION

Dancer2 aims to keep the core as small as possible, but there are a growing
number of useful plugins to add helpful features.

This document provides a quick summary of some recommended plugins.

=head2 Plugins

=over 4

=item L<Dancer2::Plugin::Adapter>

Wrap any simple class as a service for Dancer2.

=item L<Dancer2::Plugin::Ajax>

Provides easy way to add Ajax route handlers.

=item L<Dancer2::Plugin::Auth::Tiny>

Provides an extremely simple way of requiring that a user be logged in
before allowing access to certain routes.

=item L<Dancer2::Plugin::BrowserDetect>

Provides an easy to have info of the browser. keyword within your
Dancer application.

=item L<Dancer2::Plugin::Cache::CHI>

Provides caching for generated pages and/or arbitrary data.  Uses L<CHI>, so
is backend-agnostic - caching can be done in memory, to files, using
Memcache, in a database, or any other method for which there is a
L<CHI::Driver> module.

=item L<Dancer2::Plugin::Database>

Provides easy database access via DBI, reading the DB connection details
from your app's config file, and taking care of ensuring the connection is
still valid and reconnecting if not (useful in persistent environments).
Just calling the C<database> keyword gives you a connected and working
database handle. It also provides some helpful keywords to make
inserting/updating data as simple as it should be.

=item L<Dancer2::Plugin::DBIC>

Provides easy access to DBIx::Class database virtualization.

=item L<Dancer2::Plugin::Deferred>

Provides a method for deferring a one-time message across a redirect. It is
similar to "flash" messages, but without the race conditions that can result
from multiple tabs in a browser or from AJAX requests.

=item L<Dancer2::Plugin::Emailesque>

Provides easy email-sending powered by Email::Send - simply call the
C<email> keyword.  Email sending settings can be taken from your app's
config.

=item L<Dancer2::Plugin::Feed>

Provides an easy way to generate RSS or Atom feed.

=item L<Dancer2::Plugin::Paginator>

Dancer2 plugin for Paginator::Lite.

=item L<Dancer2::Plugin::Queue>

Provides a generic interface to a message queue.

=item L<Dancer2::Plugin::Queue::MongoDB>

A L<Dancer2::Plugin::Queue> using L<MongoDBx::Queue>.

=item L<Dancer2::Plugin::REST>

Makes writing RESTful web services easy.

=item L<Dancer2::Plugin::RoutePodCoverage>

Plugin to verify pod coverage in our app routes.

=item L<Dancer2::Plugin::Syntax::GetPost>

Provides very simple syntactic sugar to define a handler for GET and POST
requests.

=back

=head2 Session Engines

=over 4

=item L<Dancer2::Session::Cookie>

A session factory for Dancer2 that stores session state within a browser
cookie.

=back

More plugins are appearing on CPAN all the time - just search for
C<Dancer2::Plugin> to see what may have been released since this document
was last updated!

=head1 AUTHOR

Dancer Core Developers

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Alexis Sukrieh.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut
