=encoding utf8
=head1 NAME
Mojolicious::Guides - Mojolicious guide to the galaxy
=head1 DON'T PANIC!
We are constantly working on new documentation, follow us on
L<GitHub|http://github.com/kraih/mojo> or join the official IRC channel
C<#mojo> on C<irc.perl.org> to get all the latest updates.
=head1 LEARNING PERL
If you are new to Perl, we recommend
L<Learn Perl in 2 hours 30 minutes|http://qntm.org/files/perl/perl.html> for a
quick introduction, or the
L<Modern Perl book|http://modernperlbooks.com/books/modern_perl/>, freely
available in many formats. Both are excellent introductions to the language.
For more books and documentation, check out
L<learn.perl.org|http://learn.perl.org/>.
=head1 LEARNING HTML
All web development starts with HTML, to learn the basics we recommend the
L<Mozilla Developer Network|https://developer.mozilla.org/en-US/learn/html>.
=head1 TUTORIAL
=over 2
=item L<Mojolicious::Lite>
A fast and fun way to get started developing web applications with Mojolicious
is the L<Mojolicious::Lite> tutorial. This micro web framework is only a thin
wrapper around the normal web framework, so almost everything you learn here
also applies to full L<Mojolicious> applications. The simplified notation
introduced in the tutorial is commonly used throughout the guides and is
therefore considered a prerequisite, you should definitely take a look!
=back
=head1 GUIDES
=over 2
=item L<Mojolicious::Guides::Growing>
Starting a L<Mojolicious::Lite> prototype from scratch and growing it into a
well-structured L<Mojolicious> application.
=item L<Mojolicious::Guides::Routing>
Simple and fun introduction to the L<Mojolicious> router.
=item L<Mojolicious::Guides::Rendering>
Generating content with the L<Mojolicious> renderer.
=item L<Mojolicious::Guides::Cookbook>
Cooking with L<Mojolicious>, recipes for every taste.
=item L<Mojolicious::Guides::Contributing>
Become a part of the ongoing L<Mojolicious> development.
=item L<Mojolicious::Guides::FAQ>
Answers to the most frequently asked questions.
=back
=head1 HIGHLIGHTS
L<Mojolicious> and L<Mojolicious::Lite> are the sum of many parts, small
building blocks that can be used independently, these are the most prominent
ones.
=over 2
=item L<Mojo::UserAgent>
Full featured non-blocking I/O HTTP and WebSocket user agent.
=item L<Mojo::DOM>
Very fun and minimalistic HTML/XML DOM parser with CSS selector support.
=item L<Mojo::JSON>
Minimalistic JSON implementation that just works.
=item L<Mojo::Server::Daemon>
Full featured, highly portable non-blocking I/O HTTP and WebSocket server,
with self-restart support through L<Mojo::Server::Morbo>, perfect for
development and testing.
=item L<Mojo::Server::Prefork>
Full featured, UNIX optimized, preforking non-blocking I/O HTTP and WebSocket
server with support for zero downtime software upgrades (hot deployment)
through L<Mojo::Server::Hypnotoad>.
=item L<Mojo::Server::CGI>, L<Mojo::Server::PSGI>
Transparent CGI and L<PSGI> support out of the box.
=item L<Mojo::IOLoop>
A minimalistic event loop with support for multiple reactor backends.
=item L<Mojo::Template>
Very Perl-ish and minimalistic template system.
=item L<Test::Mojo>
Testing toolkit for web applications.
=item L<ojo>
Fun one-liners using everything above.
=back
=head1 REFERENCE
This is the class hierarchy of the L<Mojolicious> distribution.
=over 2
=item * L<Mojo::Base>
=over 2
=item * L<Mojo>
=over 2
=item * L<Mojolicious>
=over 2
=item * L<Mojolicious::Lite>
=over 2
=item * L<Mojo::HelloWorld>
=back
=back
=back
=item * L<Mojo::Cache>
=item * L<Mojo::Cookie>
=over 2
=item * L<Mojo::Cookie::Request>
=item * L<Mojo::Cookie::Response>
=back
=item * L<Mojo::DOM::CSS>
=item * L<Mojo::DOM::HTML>
=item * L<Mojo::Date>
=item * L<Mojo::EventEmitter>
=over 2
=item * L<Mojo::Asset>
=over 2
=item * L<Mojo::Asset::File>
=item * L<Mojo::Asset::Memory>
=back
=item * L<Mojo::Content>
=over 2
=item * L<Mojo::Content::MultiPart>
=item * L<Mojo::Content::Single>
=back
=item * L<Mojo::IOLoop::Client>
=item * L<Mojo::IOLoop::Delay>
=item * L<Mojo::IOLoop::Server>
=item * L<Mojo::IOLoop::Stream>
=item * L<Mojo::Log>
=item * L<Mojo::Message>
=over 2
=item * L<Mojo::Message::Request>
=item * L<Mojo::Message::Response>
=back
=item * L<Mojo::Reactor>
=over 2
=item * L<Mojo::Reactor::Poll>
=over 2
=item * L<Mojo::Reactor::EV>
=back
=back
=item * L<Mojo::Server>
=over 2
=item * L<Mojo::Server::CGI>
=item * L<Mojo::Server::Daemon>
=over 2
=item * L<Mojo::Server::Prefork>
=back
=item * L<Mojo::Server::PSGI>
=back
=item * L<Mojo::Transaction>
=over 2
=item * L<Mojo::Transaction::HTTP>
=item * L<Mojo::Transaction::WebSocket>
=back
=item * L<Mojo::UserAgent>
=item * L<Mojolicious::Plugins>
=back
=item * L<Mojo::Exception>
=item * L<Mojo::Headers>
=item * L<Mojo::Home>
=item * L<Mojo::IOLoop>
=item * L<Mojo::JSON::Pointer>
=item * L<Mojo::Loader>
=item * L<Mojo::Parameters>
=item * L<Mojo::Path>
=item * L<Mojo::Server::Hypnotoad>
=item * L<Mojo::Server::Morbo>
=item * L<Mojo::Template>
=item * L<Mojo::URL>
=item * L<Mojo::Upload>
=item * L<Mojo::UserAgent::CookieJar>
=item * L<Mojo::UserAgent::Proxy>
=item * L<Mojo::UserAgent::Server>
=item * L<Mojo::UserAgent::Transactor>
=item * L<Mojolicious::Command>
=over 2
=item * L<Mojolicious::Command::cgi>
=item * L<Mojolicious::Command::cpanify>
=item * L<Mojolicious::Command::daemon>
=item * L<Mojolicious::Command::eval>
=item * L<Mojolicious::Command::generate::app>
=item * L<Mojolicious::Command::generate::lite_app>
=item * L<Mojolicious::Command::generate::makefile>
=item * L<Mojolicious::Command::generate::plugin>
=item * L<Mojolicious::Command::get>
=item * L<Mojolicious::Command::inflate>
=item * L<Mojolicious::Command::prefork>
=item * L<Mojolicious::Command::psgi>
=item * L<Mojolicious::Command::routes>
=item * L<Mojolicious::Command::test>
=item * L<Mojolicious::Command::version>
=item * L<Mojolicious::Commands>
=over 2
=item * L<Mojolicious::Command::generate>
=back
=back
=item * L<Mojolicious::Controller>
=item * L<Mojolicious::Plugin>
=over 2
=item * L<Mojolicious::Plugin::Charset>
=item * L<Mojolicious::Plugin::Config>
=over 2
=item * L<Mojolicious::Plugin::JSONConfig>
=back
=item * L<Mojolicious::Plugin::DefaultHelpers>
=item * L<Mojolicious::Plugin::EPLRenderer>
=item * L<Mojolicious::Plugin::EPRenderer>
=item * L<Mojolicious::Plugin::HeaderCondition>
=item * L<Mojolicious::Plugin::Mount>
=item * L<Mojolicious::Plugin::PODRenderer>
=item * L<Mojolicious::Plugin::TagHelpers>
=back
=item * L<Mojolicious::Renderer>
=item * L<Mojolicious::Routes::Match>
=item * L<Mojolicious::Routes::Pattern>
=item * L<Mojolicious::Routes::Route>
=over 2
=item * L<Mojolicious::Routes>
=back
=item * L<Mojolicious::Sessions>
=item * L<Mojolicious::Static>
=item * L<Mojolicious::Types>
=item * L<Mojolicious::Validator>
=item * L<Mojolicious::Validator::Validation>
=item * L<Test::Mojo>
=back
=item * L<Mojo::ByteStream>
=item * L<Mojo::Collection>
=item * L<Mojo::DOM>
=item * L<Mojo::JSON>
=item * L<Mojo::Util>
=item * L<ojo>
=back
=head1 MORE
A lot more documentation and examples by many different authors can be found
in the L<Mojolicious wiki|http://github.com/kraih/mojo/wiki>.
=head1 SUPPORT
If you have any questions the documentation might not yet answer, don't
hesitate to ask on the
L<mailing-list|http://groups.google.com/group/mojolicious> or the official IRC
channel C<#mojo> on C<irc.perl.org>.
=cut