MVP Feature Set - app-academy-exercises-jb/YASC GitHub Wiki
YASC aims to be a lightweight, team-oriented messaging solution with strong guarantees around message integrity and availability. The following features represent the bare minimum in terms of what is required to make this project a reality. After this, close attention must be paid to matters of data privacy, among other things.
MVP Feature Set:
-
Hosting on Heroku (3/2/20 -- ~4hrs) DONE 3/1
-
Authentication Functionality (3/3/20 -- ~16hrs)
- Registration DONE 3/1
- Multiple login DONE 3/1
- Demo login DONE 3/4
- Front page styling DONE 3/4
- BONUS: Implement Auth0 login/registration functionality
-
Workspace Functionality (3/7/20 -- ~16hrs)
- Workspace creation
- Workspace un/registration
- Slack-like styling
- BONUS: Channel/User search
-
Channel Functionality (3/9/20 -- ~24hrs)
- Channel creation
- Channel un/subscription
- Slack-like styling
- Typing/presence indicators
- BONUS: Auto-completing user mentions
- BONUS: Lazy Channels: as opposed to loading the full history of a given channel/thread, only load some of it, loading the rest on demand (ie, user scrolling)
-
Live Chat (3/5/20 -- ~24hrs)
- Websocket functionality for client communication, with client storage of last known event_ts
- Eventual consistency model around messages (see Atomic Broadcast notes).
- Real-time Messaging Server
- Client side pub/sub: client subscribes to list of users/channels that they are 'interested in', and only receive real-time notifications from those. this reduces the amount of events clients have to handle. examples include: presence updates
-
Direct Messages (p2p, p2group) (3/11/20 -- ~24hrs)
- Users can dm anyone in the same workspace
- Users can enter/leave dms
-
Production Readme (3/13/20 -- ~4hrs)
-
BONUS: Authorization Functionality (workspace, channel) (3/12/20 -- ~12hrs)
- Workspace creators are workspace admin
- Workspace admin may set permissions of other workspace users
- Workspace users w/ clearance (ie. channel admins) may create channels
- Channel admins may boot/mute channel users
-
BONUS: Asynchronous Job Queue (~30hrs)
- A central server which collects jobs in a queue and dispatches them to its collection of workers, on a first-available basis. The server returns the worker's results to the original caller.
- Use cases:
- Async URL unfurling for links shared in chat
- User mention notifications