First, to answer your question at the bottom of your MVP list, Workspaces are a great bonus feature but not a core functionality of the app. They’re a great thing to add during the job search after polishing up your projects. :)
MVP List
[x] Indent sub-bullets (like under “Home page”) with double spaces before the * to help readability
[x] Move the “super bonus features” and “bonus features” bullets from being in the earlier MVPs into separate bonus MVPs
[x] Complete channels before Live Chat
[x] Don’t include reactions in your live chat MVP: that should be bonus functionality
[x] Channels ARE able to be destroyed in Slack! It depends on the account in Slack. We’ll discuss.
[x] Specify that chat will update “live” (i.e. without refreshing)
[x] What do you mean by a message having a picture?
[x] Move the “demo users will have the same features” bullets from Chat and Channels, and instead have a bullet in your auth MVP that the demo user is a fully featured user.
[x] Joining and having access to a channel are different ! Notes that you can search for other public channels and join them (can’t post until joined, but can see it)
[x] Search messages bonus is just for searching messages. You’ll need to be able to search channels and users in the channel MVP.
[x] Not everyone can rename a channel
[x] Users automatically join both public and private channels
[x] Should be able to add users at the time of creating channel
[x] Multi-person DMs are not the same as teams
[x] Note that additional users cannot be added to a DM after the DM is created (unlike a channel)
Schema
[x] All tables should have created_at/updated_at columns
[x] Note which columns will be indexed
[x] Email/session_token also need to be unique
[ ] username_id would imply it corresponds to a username table
[x] Always index on foreign keys
[ ] Messages should be of type text
[x] Channels are created before messages because a message must belong to a particular channel
[x] The emojis column for message is unnecessary
[x] All column names on your schema should be snake_cased as that’s what they will be in the database
[x] Need to include some way to indicate which users will be able to rename or delete channels
[x] Rename columns to be more semantically clear (something like “name” is fine instead of “nameChannel,” but what is the “directmessage" indicating?)
[ ] No table to track who has joined channels
[x] Channels should have a “topic” at least, possibly also a description.
[ ] Remember: foreign keys on columns (like message_id in channels) indicate and will be used to form a “has_many” relationship
[ ] DMs won’t be able to store a single user_id or the dm couldn’t have (or more) users
[x] Dms are essentially channels but without the extra info
[x] A channel can have many messages and a dm can have many messages. Similarly you can join a channel or “join” (at creation) a dm. I’d recommend reviewing rails database setup and especially projects that mention “polymorphic relationships” - once they are set up, it will be easier for you to use.
Overall
Good start! Great detail with the MVP list! There are design concerns we’ll need to work out relating to your schema structure and also a few of my MVP comments. Review those earlier Rails projects when you have the chance, then we’ll discuss! :)
[x] The picture shown with a message is the poster's avatar, not actually an attribute of the message as described by your MVP.
[x] Remove references to “Teams” and it’s sub-bullets and you’ll be good with just multi-person DMs :)
Schema
[ ] remove unique from created_at/updated_at where present
[ ] Index on username for searching for users
[ ] Foreign keys on tables indicate that that entry belongs to the entry where the key points. Check that these are only on the belongs_to side or in joins tables if many-to-many. I was unclear on this with the previous checkbox
[ ] DMs don’t need a name
[ ] messageable id/type must be not null
Along with the still unchecked boxes above. Great work, and amazing detail with MVP list :)
First, to answer your question at the bottom of your MVP list, Workspaces are a great bonus feature but not a core functionality of the app. They’re a great thing to add during the job search after polishing up your projects. :)
MVP List
*
to help readabilitySchema
created_at
/updated_at
columnsusername_id
would imply it corresponds to ausername
tabledescription.
message_id
inchannels
) indicate and will be used to form a “has_many” relationshipuser_id
or the dm couldn’t have (or more) usersOverall
Good start! Great detail with the MVP list! There are design concerns we’ll need to work out relating to your schema structure and also a few of my MVP comments. Review those earlier Rails projects when you have the chance, then we’ll discuss! :)