Ask AI about me

Choose an assistant to ask about my work.

Opens an external service. AI answers can be inaccurate.

iOS and Android / In progress

New Trier Block

Which period is it, and how much time is left? A bell-schedule app for New Trier students, parents, and teachers.

New Trier Block’s Future View showing the Winnetka campus bell times for a sample Anchor Day

The schedule, one day at a time

Day color carries through the screen. The campus selector and bell times stay together, with alternating rows to make each period easier to follow.

Development preview using bundled sample schedule data.

View full size ↗

One school day, several schedules

A countdown needs the right schedule behind it. Campus, day color, and overlapping half-blocks affect what a student needs to see. The app brings the current period and remaining time to the main screen, with a calendar for looking ahead.

Personal class schedules add the student's courses to the school's bell times. Flutter provides the shared interface on iOS and Android; Cubits manage schedule data, personal schedules, and the ticking countdown independently.

The decisions behind the screen

Separate the bell from the class

Two half-blocks can share the same start and end time. The countdown follows that shared time window, while a personal schedule determines which class to show. Keeping those jobs separate lets the same bell schedule work for different students.

Keep the schedule when a refresh fails

New schedule data merges into a saved cache. A failed request leaves the cached days available and records the refresh error. Looking at another month also preserves the days already loaded.

Give the widget its own copy

The iOS widget runs separately from the Flutter app. A native bridge passes upcoming schedule data into a shared App Group cache, where the widget can read it for its timeline. Campus and Early Bird preferences travel across that bridge too.

Testing the moment a period ends

The countdown accepts an injectable clock. Tests can set the time to an exact bell boundary and check the transition without waiting for a real school day. This keeps timing logic testable separately from the interface and schedule feed.