Data Architecture for Social Network - Would Love Input

I can schedule a virtual office meeting if preferable, but I think this would be an interesting thing to talk through with others... I'm wondering how Xano would suggest building some basic 'friending' interactions.

Current Databases
1. Users (Authenticated)
2. Posts1. All posts have a 'sender' and 'recipient.' I will be the sender, and the default recipient is myself.


Functionality
1. User (sender) can request to be friends (recipient) of another existing user. 
2. Recipient can approve or deny request.
3. If approved, it is a mutual friendship. Status = friends. There are no variations on friend status type (it's an on/off switch).
4. Once friends, users can send posts to each other. Kind of like a wall back in the day, or a DM (minus the realtime).
5. In a feed, users can view all posts sent to them (including those sent from self, to self). I should add that these will be authenticated requests and there is no concept of a 'public' feed. 
6. Users can block friends. Status = blocked. Blocked users cannot request friendship again.
7. Users can have multiple friends. 


There are a lot of UX implications here. I've built a few of these products in the past, but I'm wondering the most efficient architecture using Xano. I considered adding a 'Friends' table and I considering using Join Inner. 

Thanks in advance!
Other
4 replies