CD-ME! was written to give you an idea how to use Mason in your production environent.
Using Mason's components, it is a quick and easy process to implement a fully templated 
web site with embedded perl logic.

TOOLS USED

The data for the CD library was stored using the Data::Dumper module, and returned
through three static components. Ideally, these would use a more robust data schema
and be editable with other administrative components.

User persistence was achieved through the use of cookies. The user must therefore
have cookies enabled to have the Shopping Kart functionality. Alternatively, 
URL mungeing, database calls, etc. could be used to save state.

OVERVIEW OF COMPONENTS

Template: contains top and bottom template information. By passing the correct
flag, either the top or bottom template is displayed. One change to this component
will instantly be reflected site-wide.

kart: Takes an action variable and then performs that task. It calls the component
"cookie_manip" and then formats some simple output.

tools/cookie_manip: receives an id number through the add and delete parameters,
and performs the corresponding task. Also, retrieves the current state of the
user's kart.

add_cd: an intermediate component which basically confirms a user's intentions
to add the CD, then calls the component "kart" to do the actual work.

artist & genre: These components will display a given artist (or genre's) CD
selection when passed a unique identifier. If no id is passed, then the entire
list is returned on the page.

tools/cd_details: Takes in an id number and passes out the title, artist, etc.
in an HTML format. Also takes an option, "table" which returns the info with
links to the buying process embedded inside a <TR>...</TR> row. This is suitable
for looping through a list and creating tables automatically.

cd-search: receives the form data posted from "search" and greps through the 
Dumped hashes to find matches. Very simple, could be replaced with more advanced
search techniques.


Most of the other components are generic HTML blocks which define lists of links,
logos, and other redundant data. Again, changes made to these components are 
reflected site-wide instantly!

