gofractally / psibase

Open source protocol enabling communities to easily self-host web applications
https://docs.psibase.io
MIT License
26 stars 7 forks source link

Chainmail app #754

Open James-Mart opened 2 months ago

James-Mart commented 2 months ago

Description

An email client for sending private emails to other accounts. Only supports a single receiver. Not intended for broadcasts.

Phased tasks

### Phase 1
- [x] Chainmail service: Initial skeleton ([PR](https://github.com/gofractally/psibase/pull/793))
- [x] Chainmail service: Support sending plaintext mail, emitting a corresponding event ([PR](https://github.com/gofractally/psibase/pull/793))
- [x] Chainmail service: Add http server with sent/received mail query support ([PR](https://github.com/gofractally/psibase/pull/793))
- [x] Chainmail plugin: Expose send action to UIs ([PR](https://github.com/gofractally/psibase/pull/793))
- [x] Chainmail UI: Connect UI with plugin and http server for functional chainmail MVP ([PR](https://github.com/gofractally/psibase/pull/798))
- [ ] Send from accounts other than alice (Depends on [plugin storage](https://github.com/gofractally/psibase/pull/789)) #841
### Phase 2
- [x] Use browser router instead of hash router #835
- [ ] Additional (potential) fields on message: id, datetime, status, read, inReplyTo: id, etc.
- [ ] Support archiving mail (#821)
- [ ] Support persisting mail (#821)
- [ ] zod.parse incoming messages with strict on (https://github.com/gofractally/psibase/pull/798#discussion_r1702299492)
- [ ] Dark mode #841
- [ ] Empty UI states #841
- [ ] Validate recipient accountName before attempting send
### Phase 3 - Optional improvements
- [ ] Support multiple recipients in to field
- [ ] Add optional pgp encryption to encrypt messages
- [ ] More control bar options for markdown editor
- [ ] Mark read/unread
- [ ] Support for threading replies
- [ ] LaTeX and Mermaid support
- [ ] Splash page/dialog explaining to the user it's just for demonstration purposes
- [ ] Properly detect error on sending (supervisor should resolve promise only after submitting tx to chain)
James-Mart commented 1 month ago

CC @brandonfancher, consider updating this issue with any tasks that come out of the pr feedback

James-Mart commented 1 month ago

General note: IMO, it's probably better to focus on perfecting the experience / minimizing bugs with fewer features, than to add additional functionality.

brandonfancher commented 1 month ago

General note: IMO, it's probably better to focus on perfecting the experience / minimizing bugs with fewer features, than to add additional functionality.

I'm definitely in alignment with that.