ci sono CMS (wordpress, joomla, etc) che fanno tutto ciò che stai descrivendo...
in alternativa devi svilupparlo te