Skip to content

School Social Media Platform

I contributed to stabilizing and improving a school social media platform used by students and staff, focusing on performance, data reliability, and maintainability.

The project was inherited from a previous developer, resulting in inconsistent UI patterns, component duplication, and styling mismatches.

  • Refactored layout structure for consistency
  • Standardized reusable UI components
  • Reduced duplicated styling logic
  • Improved overall visual coherence
  • Cleaner codebase
  • Easier feature expansion
  • Improved user experience consistency

Feeds and chat lists contained large datasets, causing noticeable lag and rendering delays.

Implemented React Virtualization to render only visible items in the viewport.

  • Significant performance improvement on home feed
  • Smooth scrolling in chat messages
  • Reduced DOM rendering cost

This was one of the most impactful optimizations in the project.


Chat Did Not Display Latest Messages (PubNub Limitation)

Section titled “Chat Did Not Display Latest Messages (PubNub Limitation)”

The chat feature failed to consistently display the latest messages because PubNub limits the number of channels fetched per request (max 100).

In real usage:

  • Users could have ~400 channels
  • PubNub only allows fetching 100 per request
  • Implemented batched fetching (looping per 100 channels)
  • Merged responses
  • Applied client-side sorting to ensure correct chronological order
  • Reliable latest message display
  • Accurate chat preview list
  • Eliminated inconsistent message ordering

This required understanding third-party API constraints and designing a scalable workaround.


Attendance Report Data Was Hard to Interpret

Section titled “Attendance Report Data Was Hard to Interpret”

Raw attendance dataset was poorly structured and difficult to summarize meaningfully.

  • Built filtering utilities
  • Aggregated and combined dataset logic
  • Created readable summary structures
  • Reports became easier to understand
  • Improved decision-making for school staff
  • Reduced manual interpretation effort

State Management Complexity → Migrated to Remix

Section titled “State Management Complexity → Migrated to Remix”

The project originally used React with additional state management complexity, making server/client state handling confusing and difficult to maintain.

Migrated to Remix, leveraging:

  • Built-in data loading
  • Native server actions
  • Cookies for server-side state handling
  • Reduced dependency on external state libraries
  • Simpler mental model
  • Reduced state-related bugs
  • Cleaner architecture
  • Faster feature development
  • Remix (React Framework)
  • Tailwind CSS
  • Prisma with Sqlite for caching
  • Backend API integration