# Kizuna Happ #### Kizuna is a serverless, peer-to-peer, free-to-use messaging application that prioritizes privacy, security, and user centricity --- #### This document was made with the help of this document made by @guillemcordoba's. Big thank you for this one! https://hackmd.io/XNPC4NUKRd2zja9Itja-fg --- ## General User Stories #### The entire user stories of Kizuna can be found [here] (some are outdated)(https://trello.com/b/uVteZliD/kiuzna-user-stories) ## Functional Requirements * Agents should be able to create their profile without having hash collision with others (email?) * Is email verification enough to prevent sybil accounts? * should we include timestamp as to when the profile was created to further prevent hash collision? (There is still an edge case where 2 agents will create an exact same profile at exactly the same timestamp) * Agents should be able to search other agents profile with their email or username * Agents should be able to include desired agents in their contact list * Agents should be able to issue a warrant to other "bot-agents" that they think are messing with the system. If enough warrant is issued to a particular account, that account should be blocked from the public DHT ## DHT architecture > Follow the link for the actual zome design This app will need the following DHT/membrane * One Public shared DHT where everyone is in wherein they create their profile and add other agents into their contact list * A private DNA template that agent can use where in they can specify (from their contact list) who can be in that DHT to have a p2p conversation. A uuid of the DNA template will be changed everytime another conversation will be created. * This allows asynchronous messaging without using the node-to-node messaging infrastructure holochain has since every message you send is public in that DHT with only 2 participants (sender and receiver). * A semi-private DNA template that agent can use wherein they can specify (from their contact list) who can be in that DHT to have a group conversation. Same with the private DNA, uuid of the DNA will be changed once it is instantiated from the templte DNA * This DHT will include a [social triangulation](https://github.com/holochain-open-dev/social-triangulation) + [membership by invitation](https://forum.holochain.org/t/membership-by-invitation/1079)(to allow the creator of the group chat to invite solely if that is a desired option by the creator of the group chat) zome wherein agents inside the already existing DHT can vouch for the incoming agent who would like to join the groupchat. ## Zome architecture per DNA ### Public DNA * [profiles](https://hackmd.io/YWL-eI5pTRCRX3InbUEEYA) (TODO: bridge to identity manager) * [contacts/blocking](https://hackmd.io/@SiY_fKT2QNG8vujhpgGOyA/Sk9YidL9L) * [requests](https://hackmd.io/IiZA7kzeTJGlqXwQPLjlng) ### [P2P Communication DNA](https://hackmd.io/efjbwQ3yRnK0TqIq4dCm_Q?view) * [text-messaging](https://hackmd.io/@SiY_fKT2QNG8vujhpgGOyA/r1bHe92nI) * file-sharing * voice-call * video-call ### Semi-Private DNA * text-messaging * file-sharing * voice-call * video-call * social-triangulation * membership-by-invitiation Zome and DNA dependency graph: (WIP) ```mermaid graph TD contacts-->profiles request-->contacts P2PCommDNA-->request ```