Public content is pinned on IPFS without encryption, with cidβs kept in smart contract storage. Before Phase 3, private content is encrypted by the backend and pinned to IPFS by Peeps. Whenever a user needs to access the content, the backend checks permissions and fetches it if the permissions are correct. Later stages will have decentralized pinning and leaderless encryption.