Files
server/PLAN.md
AtHeartEngineer a8e8e78edb repo work
2023-07-12 00:30:44 -04:00

78 lines
2.3 KiB
Markdown

# ZK-Chat v2
## Credential Storage
* Localstorage
* Start with this, its easy, but not super secure
* Cryptkeeper?
* Sismo?
* Zupass?
* Walletconnect/metamask?
## Group Creation
* Admin (me) can make groups
* by invite code
* Permission to add 1 identity commitment
* Gated Room Ideas (that you can watch, but can't participate in)
* Steam Games!
* ZK Stamps!
* Events!
* Devconnect
### Types of Rooms/Groups
| Type | Read | Write | Encrypted | Centralized | RLN Protected |
| ------- | ------------- | ------------------------------- | ------------------- | ----------- | ------------- |
| Gated | Y | via link/code for specific room | N | Y | Y |
| ------- | ------------- | ------------------------------- | ------------------- | ----------- | ------------- |
| Public? | Y | via link/code for all rooms | N | Y | Y |
| Private | via link/code | via link/code for specific room | N | Y | Y |
| Secure | via link/code | via link/code for specific room | Y (shared password) | Y | Y |
| DM-P2P | via link/code | via link/code for specific room | Y (shared password) | N (p2p) | ? |
* Start with Gated Rooms
## Open Questions
* P2P v Centralized?
* Rate Limits?
* Group Membership on contract?
* Staking by tiers with different rate limits?
* Should messages be ephemeral/temporary? (the last day?)
### Front End
discreetly.chat will be the front end and backend
#### Stack
* Nuxtjs
* websockets
#### Login
* Cryptkeeper
* Metamask
* Walletconnect
* Sismo
* Zupass
### Back End
discreetly.chat will be the front end and backend
stakers.chat will be a standalone backend for eth stakers
#### Stack
* Javascript / Typescript
* Node?
* Libp2p?
* Shorter development cycle
* Dev process is annoying
* One language stack which is nice
* Python
* Library compatibility issues with RLNjs and maybe any other ZK libraries
* I could write it really fast
* I miss python
#### Database
* Libp2p?
* Waku?
* IPFS?
* Firebase?
* SQLite? <- Leaning this way, keep all config/registration stuff in sqlite, and all messages in RAM/ephemeral