Inspiration

As Social Media Manager for FGC Kenya I kept seeing the same problem during build season. Deadlines would sneak up on people and by the time anyone noticed a task was overdue it was already too late to fix. Most task tools out there like Trello or Asana are built for big corporate teams not small student robotics teams juggling build, design, outreach and media all at once. I wanted something built specifically for how our team actually works, something that would actually chase people down before a deadline got missed instead of just sitting there as a list nobody checks.

What it does

Task Roster is a full team management dashboard built for FGC Kenya. Each member gets a profile with a photo, role and email and every task assigned to them can carry a priority level and a due date. There's a live dashboard up top showing total members, total tasks, overall completion percentage, overdue count and who's carrying the most work or falling behind. Tasks cycle through pending, in progress and done with a single click and members can be filtered by status or priority and sorted by name, completion or deadline. The standout feature is the notification system. When a task is overdue, due today or due within two days it shows up as an alert and you can send a real email straight to the member, the admin or both with one click. There's also an auto send feature that quietly emails out overdue and upcoming deadline alerts once a day without anyone having to open the notification panel at all.

How we built it

Task Roster runs on plain HTML, CSS and JavaScript with no frameworks. All the data including members, tasks, priorities and due dates gets saved with localStorage so nothing is lost between sessions. Photo uploads go through the FileReader API and get converted into Data URLs so profile pictures show up instantly without needing a server. For the email side I integrated EmailJS so the app can send real deadline notifications straight from the browser, no backend required. Deadlines are checked against the current date on every render to calculate overdue and upcoming alerts and a small notification log in localStorage stops the same alert from being emailed out more than once a day. On top of that there's a full edit and delete flow for members, a color picker so each card can be personalized and a search bar to pull up a specific member fast.

Challenges we ran into

Getting the deadline alert logic right took a lot of trial and error, figuring out how to correctly flag overdue versus due today versus due soon and making sure it didn't re trigger the same alert every single time the page rendered. Wiring up EmailJS was another challenge since it meant handling real network requests, catching failures gracefully and giving proper feedback when an email actually sent versus failed. Building the auto send cooldown system so members and admins don't get spammed with the same reminder every time someone opens the app also took some careful thinking around how to track what had already been sent that day. On the UI side, keeping the dashboard, filters and notification panel all in sync every time a task changed status meant being disciplined about re rendering everything from one central function.

Accomplishments that we're proud of

Getting real email notifications working end to end with zero backend is probably what I'm most proud of. The whole thing runs off localStorage and a client side email service yet it behaves like a proper deadline tracking system with a dashboard, alerts and one click notifications. It's also genuinely useful, not just a demo, since it's built around the exact way FGC Kenya operates and it's already been used by the real team during actual build season.

What we learned

Building this taught me a lot about working with dates in JavaScript, handling asynchronous email requests properly and designing a system that doesn't repeat itself unnecessarily like the notification cooldown logic. I also learned a lot about state management, keeping one source of truth in the roster array and making sure every part of the UI, from the dashboard stats to the task list, stays accurate the moment something changes. Most of all it reinforced that a tool becomes way more valuable when it doesn't just track information but actually acts on it, like nudging people before a deadline gets missed instead of after.

What's next for Task Roster

Next up is letting other FIRST Global teams use it with their own rosters, adding scheduled reminders instead of relying on the page being opened for auto send to trigger and eventually moving off localStorage to a real backend so the roster can sync across devices instead of being stuck on one browser. I'd also like to add a weekly summary email for admins so they get one clean overview instead of individual alerts.

Built With

Share this project:

Updates