1c30b638aedb62c119ee2244c14353aa13541f81
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Manual / About.pod
1 =head1 NAME
2
3 Catalyst::Manual::About - Basic explanation of Catalyst
4
5 =head1 DESCRIPTION
6
7 This document is a basic introduction to the I<why> of Catalyst. It does
8 not teach you how to write Catalyst applications; for an introduction to
9 that please see L<Catalyst::Manual::Intro>. Rather, it explains the
10 basics of what Catalyst is typically used for, and why you might want
11 to use Catalyst to build your applications.
12
13 =head2 What is Catalyst? The short summary
14
15 Catalyst is a web application framework. This means that you use it to
16 help build applications that run on the web, or that run using protocols
17 used for the web. Catalyst is designed to make it easy to manage the
18 various tasks you need to do to run an application on the web, either by
19 doing them itself, or by letting you "plug in" existing Perl modules
20 that do what you need. There are a number of things you typically do
21 with a web application, for example:
22
23 =over 4
24
25 =item * Interact with a web server
26
27 If you're on the web, you're relying on a web server, a program that
28 sends files over the web. There are a number of these, and your
29 application has to do the right thing to make sure that your data works
30 with the web server you're using. If you change your web server, you
31 don't want to have to rewrite your entire application to work with the
32 new one.
33
34 =item * Do something based on a URI
35
36 So that C<http://www.mysite.com/catalog/view/23> will go to a "view" of
37 item 23 in your catalog, and C<http://www.mysite.com/order_status/7582>
38 will display the status of order 7582, and
39 C<http://www.mysite.com/add_comment/?page=8> will display a form to add
40 a comment to page 8.
41
42 =item * Interact with a data store
43
44 You probably use a database to keep track of your information. Your
45 application needs an easy way to interact with your database, so you can
46 create, edit, and retrieve your data.
47
48 =item * Handle forms
49
50 When a user submits a form, you process it, and make sure it's been
51 filled in properly, and then then do something based on the
52 result--submitting an order, updating a record, sending e-mail, or going
53 back to the form if there's an error.
54
55 =item * Display results
56
57 You have an application running on the web, people need to see
58 things. You usually want to display things on a web browser; you will
59 probably be using a template system to help generate HTML code; you
60 might need other kinds of display, such as PDF files or RSS feeds.
61
62 =item * Manage users
63
64 You might need the concept of a "user", someone who's allowed to use
65 your system, and is allowed to do certain things only. Perhaps normal
66 users can only view or modify their own information; administrative
67 users can view or modify anything; normal users can only order items for
68 their own account; normal users can view things but not modify them;
69 order-processing users can send records to a different part of the
70 system; and so forth. You need a way of ensuring that people are who
71 they say they are, and that people only do the things they're allowed to
72 do.
73
74 =item * Develop the application itself
75
76 When you're writing or modifying the application, you want to have
77 access to detailed logs of what it is doing. You want to be able to
78 write tests to ensure that it does what it's supposed to, and that new
79 changes don't break the existing code.
80
81 =back
82
83 Catalyst makes it easy to do all of these tasks, and many more. It is
84 extremely flexible in terms of what it allows you to do, and very fast.
85 It has a very large number of "plugins" that interact with existing Perl
86 modules so that you can easily using them from within your application.
87
88 =head3 What B<isn't> Catalyst?
89
90 Catalyst is not an out-of-the-box solution that allows you to set up a
91 complete working e-commerce application in ten minutes. (There are,
92 however, several systems built on top of Catalyst that can get you very
93 close to a working app.) It is not designed for end users, but for
94 working programmers.
95
96 =head2 Some background
97
98 =head2 The MVC pattern
99
100 =head1 AUTHOR
101
102 Jesse Sheidlower, C<jester@panix.com>
103
104 =head1 SEE ALSO
105
106 L<Catalyst>, L<Catalyst::Manual::Intro>
107
108 =head1 COPYRIGHT
109
110 This program is free software, you can redistribute it and/or modify it
111 under the same terms as Perl itself.