Design
Here’s my design goals:
Overall Goals
Section titled “Overall Goals”- Performance: Future work.
- Reliability: Hopefully always in here?
- Cross-Platform: Desktop + browser only for now, mobile future.
User Features
Section titled “User Features”- Modern chat: A responsive interface with support for presence, reactions, pinned messages, and basic Markdown rendering.
- Easy Onboarding: Cryptographic identities (Ed25519) allow users to start chatting immediately without traditional registration hurdles.
- Media Handling: S3-style multipart integrity and multi-origin security.
- Voice & Video: Smooth community calls and screen sharing.
- Account Portability: Support for multi-server connectivity and account migration to prevent vendor lock-in.
Admin Features
Section titled “Admin Features”- Permissions: Flexible role permissions for guild management.
- Quotas: Resource limiting for users and guilds. (Future work)
- Moderation tools: Built-in tools for reporting and banning. (Future work)
Dev Features
Section titled “Dev Features”- Push Notifications: UnifiedPush and custom ntfy protocol.
- Layered configuration: config
- Database abstraction: SQLite for now, later probably Cassandra or something scalable.
- Use well-established technology: HTTP, gRPC, etc. No random bespoke stuff (yet).