For the validation stage, have you looked into Data::FormValidator? I've been happy with it.
I'm about to release my own project, Cascade, which will be based on the CGI::Application paradigm using HTML::Template. I've been happy with this system so far.