Summary

Prior to this we had a free trial of DailyBot. The trial ended and their free tier was terrible. I have decided that we should build our own standup that mimics what that did to an extent.

Proposals

I want to do a bare minimum implementation without having to introduce any big new entities (like organization, projects, etc..).

Going to keep some of the wrapper tables up here. If people have other ideas for how this should be handled I am more than willing to make separate proposals

Table: StandupMeetingGroup

Column Type Description
id primary
name string The name of this standup
active boolean We can also go the route of start_date/end_date but I just don’t see the value or reason.
start_time Time When the standup starts (this can be used to base reminders off of)
frequency enum daily (only for now, will auto-skip weekends).

There are additional things that could be brought in like standup_type (async, video, etc..) but not worth the trouble right now.

Table: StandupMeetingGroupsUsers (join table)

Column Type Description
id primary
user_id fk
standup_meeting_group_id fk

I am ignoring role for now so that we don’t have to overcomplicate it right away. It will just be admin users have power to change these.

Proposal 1 - hardcoded question columns ✅

Table: StandupMeeting

Column Type Description
id primary
user_id fk
standup_meeting_group_id fk The association of the group this standup is for. i.e PairApp Standup.
yesterday_work_description Text Question 1
today_work_description Text Question 2
blockers_description Text Question 3
meeting_date Date The date the standup is for
status Enum attended or skipped?

If they mark this as “skipped” (i.e: there is literally a skip button) it should fill up all 3 questions as skipped. This would allow us to make the question fields required.

Proposal 2 - Dynamic Questions ❌

Table: Standup (standup_responses?)

Column Type Description
id primary
user_id fk
standup_meeting_group_id fk
data jsonb This will hold the questions + answers. This would behave very similarly to Feedback.
meeting_date Date
status Enum attended or skipped?

This would copy the structure that Feedback is handled and would allow for more dynamic questions. The real question is, do we want this type of flexibility (or even need it right away?).