server side validation (which is indeed requried) != forms.
also, Ecto does really good job with changesets, including hard-to-do-right pieces like "uniqueness"
IMHO, reusable server side validation == forms without widgets (and widgets are nice to have if one feels that JS is unnecessarily complicating what could be a simple static HTML form).