Each type of content would be displayed differently. Making a custom theme the only way to go. Especially, when part of the content would need to be Public and part Membership only.
Another important requirement would be to only allow members to see their dashboard and have no access to the backend of the site.