# 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)
### [P2P Communication DNA](https://hackmd.io/efjbwQ3yRnK0TqIq4dCm_Q?view)
### Semi-Private DNA
Zome and DNA dependency graph: (WIP)