I'm building a site for a intranet that display data about people (totally legal!!). we will call these people Alumni.
The structure is like this: there are three roles, administrators, alumni, watchers.
The alumni register themselves and input their data. During registration they choose which data is "private", which is "public". Alumni have to be accepted by administrators after registration.
Watchers can see public data of Alumni.
Alumni are Watchers in respect of other Alumni.
Administrators can watch also private data of the Alumni, modify this data, accept alumni after registration, delete Alumni.
Would be nice if alumni could cancel themselves with confirmation by administrators, but this is not urgent.
So, my idea is that alumni should be a CPT connected to the registered alumni maybe by author relationship or via a metadata. These post should be shown in front end only after login. Watchers and Alumni should not be able to login to the back end. As I said before in the alumni CPTs there is public data visible to all logged in users and private data visible only to the owner Alumni and Administrators.
I know is a bit tricky and I don't ask you for the code. But since I'm not expert in wordpress yet I would like to hear from you some suggestion about how to structurize the site and about which APIs or plugin should I use to achieve my target.