Project: ParentPowered Text Messaging

Goal

Build a text messaging tool that allowed schools and preschool organizations to send or schedule text messages to the parents of students.

Challenges

Reusability: Provide the desired features while making the software easier to use in future projects. To do this, I developed a modular set of visual components for calendaring, message composing, editing, scheduling, and dialogs. I used React and Typescript to architect the components, ensuring they were flexible and easy to use. Some of the components were subsequently used on other projects at ParentPowered, saving implementation time.

Time zone-aware scheduling: text messages could be postponed for future delivery at a time relative to the organization's home time zone. Javascript's native Date handling proved an interesting obstacle. The Date object always assumes a time zone as reported by the browser, i.e., the time according to the user's location. With large organizations, the scheduler may not be in the organization's time zone, resulting in erroneously-scheduled messages. I tackled this problem by thorough research into Javascript's time zone handling (i.e., I was initially unaware of Date's shortcomings), establishing a mechanism to store and retrieve the organization's time zone, compensate for differences in time zone, and wrapping all Date operations in time zone-aware components.

Results

A useful tool for ParentPowered partner organizations, plus a set of interface components for use on other projects.