Checkin sends an email to all members of a team based on the check_in
configuration. Members can simply reply to this email and it will create a update
record with their reply. As a manager, keeping track of what your direct reports are working on is time consuming. Syncronous meetings are annoying, time consuming, and not effective. Automating checkins via email automates this process and keeps a written record, while being minimally invasive.
- As a lead, I want to create a team, so that I can collaborate with my colleagues on projects.
- As a lead, I want to invite members to my team by email, so that they can start receiving and responding to check-in prompts.
- As a member, I want to respond to the morning and evening check-in emails, so that my team can be updated on my daily tasks and accomplishments.
- As a lead, I want to review all check-in records for my team, so that I can keep track of progress and identify any potential issues early.
- As a lead, I want to configure check-in settings, such as changing the check-in questions or setting specific check-in times for my team, to tailor the process to our workflow.
- As an observer or lead, I want to be able to log in and review checkins for everyone on the team
- As a member, I want to view a history of my check-ins, so that I can review my own progress and contributions over time.
- As a member, I want to opt-out of automatic check-in emails for a specific team, so that I can manage my email notifications according to my preferences.
- As a lead, I want to be able to see which team members have opted out of automatic check-in emails, so I can understand their preferred method of communication and ensure everyone is still participating in check-ins.
- As a lead, I want to generate reports on team check-ins, so I can analyze patterns, productivity, and areas for improvement.
# first_name
# last_name
# email
# password
# timezone
class User
has_many :memberships
has_many :teams, through: :memberships
end
# name
# shortname (downcase no spaces)
# description
class Team
has_many :memberships
has_many :members, through: :memberships, source: :user
end
# team_id
# user_id
# role (lead, member, observer)
# email_opt_in (boolean, default: true)
class Membership
belongs_to :team
belongs_to :user
end
# lead_id
# team_id
# subject ("weekly goals", "eod accomplishments")
# body ("what are you going to work on this week?", "what did you work on today?", etc.)
# ical_recurrence_rule <!-- "FREQ=WEEKLY;BYDAY=MO,WE,FR;BYHOUR=9;BYMINUTE=0" This rule means the check-in occurs weekly on Monday, Wednesday, and Friday at 9:00 AM. -->
# active (boolean)
# next_at (datetime)
class CheckIn
belongs_to :lead
belongs_to :team
has_many :updates
def calculate_next_occurrence(from_time = Time.current)
schedule = IceCube::Schedule.new(from_time)
schedule.add_recurrence_rule(IceCube::Rule.from_ical(ical_recurrence_rule))
schedule.next_occurrence(from_time)
end
def update_next_at
self.next_at = calculate_next_occurrence
save
end
# todo: move to scope
# todo: use with active: true
def overdue?
next_at <= Time.current
end
end
# membership_id
# checkin_id
# content
# created_at
class Update
belongs_to :member, though: :membership, source: :user
belongs_to :membership
belongs_to :check_in
end
Description: A welcoming page for both logged-in and anonymous users. It briefly describes the purpose of the Checkin application and prompts users to sign in or sign up. Key Elements: Application name, brief description, Sign In/Sign Up buttons (for anonymous users), navigation to other sections (for logged-in users).
Description: The main hub for users after they log in, showing an overview of teams (for leads) or current check-ins (for members). Key Elements: List of teams (with roles if multiple), recent check-in prompts, navigation links or buttons for team management (for leads), user profile access, and logout.
list the teams, check in prompts, recent updates?
Description: A page for leads to create new teams or manage existing ones, including inviting members. Key Elements: Form to create a new team (name, shortname, description), list of existing teams with options to edit team settings, invite members via email, and view membership status.
Description: A page where leads can configure check-in settings for each team, such as setting questions and scheduling. Key Elements: Form to set/edit check-in questions, scheduling options (using a calendar widget for ease), list of current check-in schedules with edit options.
Description: A simple form that members are directed to when they click on a link in the check-in email to submit their response. Key Elements: Check-in question displayed at the top, text area for response, Submit button.
Description: A page for leads to review all check-in responses for their team, possibly with filters for date ranges, members, etc. Key Elements: Filters (date range, member), list of check-ins with responses, links to detailed view of each check-in, possibly some analytics or summary of responses.
members will be scoped to only their updates
Sign Up/Sign In Description: Pages where users can create a new account or log into an existing one. Key Elements: Form fields for email and password (and possibly first name, last name, and timezone for signup), Submit button, links to switch between Sign In/Sign Up, password recovery link.
edit profile Description: Where users can update their personal information, including their timezone, and manage email preferences. Key Elements: Form fields for personal information (first name, last name, email, timezone), options to opt in/out of automatic check-in emails, password change option.