Catalyst è un framework open source per lo sviluppo di applicazioni web. È scritto in Perl e segue piuttosto strettamente l'architettura MVC (Model-view-controller). Catalyst supporta una varietà di web pattern sperimentali, e si ispira ad altri framework quali Ruby On Rails, Maypole, e Spring.
Il principale canale di distribuzione di Catalyst è, come per la gran parte del software sviluppato in Perl, CPAN.
Catalyst è basato sul principio DRY (don't repeat yourself, non ripeterti), il che indica che ogni definizione all'interno del proprio codice va specificata una volta sola.
Catalyst, ad esempio attraverso il loader di DBIx::Class, può generare automaticamente le classi del modello a partire dal database, non rendendo quindi necessaria la scrittura di alcun codice al livello di database. Esso tuttavia fornisce anche l'opzione di fare a mano, se ciò che si cerca è la massima flessibilità. Questo concetto vale non solo per il database ma per molti aspetti di Catalyst: un altro dei principi cardine di Catalyst è la flessibilità.
Catalyst dispone di una ricca selezione di plugin. Ad esempio, c'è la generazione di codice JavaScript per AJAX e RIA (Rich Internet application) grazie al modulo Catalyst::Plugin::Prototype.
Per le fasi di sviluppo e testing, Catalyst dispone di un semplice server HTTP incluso nella distribuzione. Per l'utilizzo in ambiente di produzione, si raccomanda Apache oppure lighttpd con supporto FastCGI oppure mod perl, ma ogni server web con supporto CGI (più lento) oppure FastCGI funziona. Su Apache, mod_perl può aumentare considerevolmente le prestazioni, anche se il suo uso può creare problemi poiché potrebbe non essere sicuro condividere la memoria di più applicazioni sotto mod_perl.
Catalyst può interfacciarsi con qualunque database supportato dall'interfaccia DBI di Perl (cioè praticamente tutti, persino i file CSV); l'utilizzo di un buon RDBMS è tuttavia raccomandato. L'accesso al database è, dal punto di vista del programmatore, completamente astratto, e Catalyst (grazie alle classi modello) gestisce automaticamente l'accesso a tutti i database - in ogni caso, qualora necessario, è sempre possibile utilizzare query SQL direttamente. Ciò significa che si ottiene la neutralità dal database, la portabilità dell'applicazione su diversi sistemi di database, e la possibilità di utilizzare quanto più possibile database preesistenti per lo sviluppo di applicazioni Catalyst. Sono supportati molti RDBMS diversi, tra cui MySQL, PostgreSQL, SQLite, IBM DB2, Oracle and Microsoft SQL Server.