A music discovery and player mobile application. Integrated with Soundcloud and compatible with the Google Playstore and IOS App Store.
Role Sole full-stack architect and engineerStack React Native · Typescript · AWSDate Present
Selected work
AWS Cognito Auth with Google/Apple Integration
Architected and implemented end-to-end social authentication, integrating AWS Cognito User Pools with Apple and Google as federated identity providers. Built secure token handling with expo-secure-store, session persistence with automatic refresh, and a serverless backend (Lambda, API Gateway, DynamoDB) for user data.
UI/UX Design
I designed this app to be an extremely tactile and rewarding mobile experience. Taking cues from popular interaction-first mobile apps, I designed each user input to pair with animation and feedback so they carry emotion rather than feeling purely functional. I scoped details specifically to the mobile context. I animated SVG background textures for an intentional, crafted feel, plus small touches that wouldn't register on desktop but reinforce polish and quality for mobile users. I used color and typography to establish a clear visual hierarchy, prioritizing intuitiveness so users can navigate without friction, and drew component patterns from established music platforms for familiarity. Throughout, I used AI to iterate on the layouts and push them toward a more professional, intuitive result, and chose gluestack's native styling so the design maps cleanly to ready-made components in build.
Scalable Component Architecture
Layered component architecture. I built the app as a strict, downward-only dependency chain, primitives → design system → reusable UI → feature pages, where each layer adds opinions and narrows the API instead of reaching around the one below it. Raw flexibility (gluestack, React Native, NativeWind) gets progressively constrained: the design system bakes in color tokens and tva() variants so consumers pick muted, not a hex value; reusable components hide their internals and expose only the props that truly vary, with a className passthrough as a controlled escape hatch; feature pages just compose those parts and own data, state, and layout. This makes the UI reusable (small, opaque prop surfaces drop in anywhere without breaking consistency) and scalable (one source of truth per level. Change a token once, it propagates everywhere). The tradeoff is more indirection and upfront cost, plus the discipline to never skip a layer, which pays off in velocity and consistency as the app grows.