Social Platform · Production Application
ProductionDream Story
A social platform featuring chat, user connections, and a personalized Dream Book experience.
Project details are presented at an architectural level to respect product and client confidentiality.
Overview
Dream Story is a social platform built around chat, user connections, and a personalized 'Dream Book' experience, a product with several interactive surfaces that all needed to feel like one consistent application.
My Role
As a Senior Software Engineer / Frontend Engineer, I worked across the platform's core product surfaces, building and maintaining chat, connection, and personalization features as the product grew.
The Challenge
The product combined several distinct experiences (messaging, social connections, and a personalized content feature called Dream Book) that all needed to share design language, data-fetching patterns, and state conventions without becoming a collection of one-off implementations.
Constraints
- Multiple application states across chat, connections, and personalization features
- A growing product where consistency needed to hold up over time
- Reusability of UI and data-fetching patterns across otherwise different features
My Approach
Rather than building each feature area in isolation, I focused on establishing shared conventions: a consistent way of fetching and caching server state, and a consistent component structure for interactive surfaces. This meant new features could be added without re-deriving the same architectural decisions each time.
Architecture & Technical Decisions
Each product surface (chat, connections, Dream Book) is built from the same underlying conventions: TanStack Query for API-driven data, Redux Toolkit for cross-cutting UI state, and a shared component layer for interactive elements like message threads and connection lists.
- TanStack Query as the standard for all API-driven views to keep caching and loading/error states consistent
- Redux Toolkit reserved for state that genuinely needed to be shared across features, not as a default
- Shared, reusable components for repeating UI patterns (lists, threads, cards) across chat and connections
Key Contributions
- Built and maintained chat functionality as a core product surface
- Implemented user-connection workflows (requests, lists, status)
- Contributed to the personalized Dream Book experience
- Established reusable component patterns used across multiple feature areas
Technical Deep Dive
Keeping several product surfaces consistent as the product grew
With chat, connections, and Dream Book all evolving at once, the risk was each feature slowly drifting into its own patterns for fetching data and managing UI state. I focused on keeping the data layer (TanStack Query) and shared UI primitives consistent across all three, so a developer moving between features didn't have to re-learn a different approach each time, and so bug fixes or improvements to shared components benefited every surface at once.
Impact
- New feature work could build on existing, shared patterns instead of starting from scratch
- Chat and connection features remained stable and consistent as the product's feature set expanded
Tech Stack
- React
- Next.js
- TypeScript
- Redux Toolkit
- TanStack Query
- REST APIs