April Chore Schedule

About

This web app helps Upper house residents and dutymasters coordinate the daily chore schedule. My features include generating a schedule, downloading it in various forms, and also setting reminders for when it's your turn (coming soon!). Read below to learn about how I work!


Student FAQ

Q: How do I see my chore schedule?

A: You can see this month's chore schedule by clicking the "This Month" tab on the home screen. From there, can you use find (Control-F/Command-F) to see the days you have this month.

Q: Is there any way to save my schedule offline?

A: On the schedule page, there's an option to download the table in a PDF format. You can refer to that offline or print it out.

Q: When I try to upload, it prompts me for a password. What should I do?

A: The admin page is for housemasters only. Stay out!

Q: When I try to read this month's chore schedule, what do I do if I get an error?

A: If you recieve any errors, please report the error code and message to Michael Man ASAP.


Housemaster FAQ

Q: How often do I need to generate the chore schedule?

A: The algorithm is designed to generate a chore schedule for the entire year (assuming no changes in student roster). If there are any additions or subtractions from the list of Upper students, you will have to re-generate the schedule with the updated list of students.

Q: How do I format my input for the students?

A: The generation algorithm takes in a list of students separated by commas (space-optional). E.g. John Smith, Joe Appleseed, Michael Man, ...

Q: What are the "Upload", "Download CSV" and "Upload CSV" buttons for?

A: Once you generate a chore schedule for the year, you need to Upload the data to the server to make it official and update the schedule stored in the server. The CSV upload/download buttons provide the option to store the entire year's data in a "comma separated values" format. This file can be opened in Excel and edited as needed. Uploading a CSV file parses the data and creates a chore schedule based on data in the file, which can then be uploaded to the server.

Q: What are the break dates for?

A: In order to maintain fairness in the algorithm, the algorithm takes in the major breaks (Thanksgiving, Winter, Spring, Summer) in order to know which days will not have any chores. Simply input the days each break starts and ends. I've defaulted the values with the dates for the 2016-2017 school year.


The Algorithm

My algorithm relies on separating the student input into 6 roughly equal groups. Each group starts with a certain position (kitchen 1, kitchen 2, trash 1, trash 2, vacuum 1, vacuum 2). As the program generates a six-man team for every day, the arrays (lists) are cycled. When each list reaches the last person, the position is fed from another array, ensuring that no one will repeat the same chore twice.

Feeder array construction

/* K1: 0, K2: 1, T1: 2, T2: 3, V1: 4, V2: 5 */
var K1 = groups[0].concat(groups[4]).concat(groups[2]);
var T1 = groups[2].concat(groups[0]).concat(groups[4]);
var V1 = groups[4].concat(groups[2]).concat(groups[0]);
var K2 = groups[1].concat(groups[3]).concat(groups[5]);
var T2 = groups[3].concat(groups[5]).concat(groups[1]);
var V2 = groups[5].concat(groups[1]).concat(groups[3]);

This algorithm ensures that:

  1. Everyone will cycle through all three chores (K, T, V), and with an equal distribution of the three.
  2. There will be dynamic partnering, as in your partner will change every week with no repetition (manual offset created for the modulo 6 case).
  3. The average "distance" between each chore day remains constant at ~ N/6 days. If there are 60 boarders, you should have chores every 10 days.

Reminders

You can set reminders here! Feature coming soon.

Housemaster Page



  • Year Start

  • TG Start

  • TG End

  • Winter Start

  • Winter End

  • Spring Start

  • Spring End

  • Year End

Elements

Text

This is bold and this is strong. This is italic and this is emphasized. This is superscript text and this is subscript text. This is underlined and this is code: for (;;) { ... }. Finally, this is a link.


Heading Level 2

Heading Level 3

Heading Level 4

Heading Level 5
Heading Level 6

Blockquote

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.

Preformatted

i = 0;

while (!deck.isInOrder()) {
    print 'Iteration ' + i;
    deck.shuffle();
    i++;
}

print 'It took ' + i + ' iterations to sort the deck.';

Lists

Unordered

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Alternate

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Ordered

  1. Dolor pulvinar etiam.
  2. Etiam vel felis viverra.
  3. Felis enim feugiat.
  4. Dolor pulvinar etiam.
  5. Etiam vel felis lorem.
  6. Felis enim et feugiat.

Icons

Actions

Table

Default

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Alternate

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Buttons

  • Disabled
  • Disabled

Form