I want to build a WordPress website where - User needs

Hello,

I want to build a WordPress website where

- User needs to register (I will manage this with BuddyPress)
- There are different categories cats, dogs, birds etc
- Registered users can upload images in a category
- Visitors either registered or unregistered can vote for photo OR five star rating system
- Visitors can browse through photos uploaded on website and can sort according to category, no of votes, upload date etc.

Can you please suggest a solution around this? Plugins required etc?