Projects
Products that taught me the most
Each build sharpened a different muscle—auth architecture, API orchestration, UI polish, or growth tooling.
Selected work / 01
Expense Tracker
Full-stack expense intelligence platform with hardened authentication, logging, and analytics-first dashboards.
Key Highlights5 highlights- Created spending analytics with payment breakdowns, trends, and a calendar heatmap.
- Added offline expense storage with IndexedDB and sync after reconnecting.
- Generated formatted Excel reports for monthly and custom date ranges.
- Added Axiom observability for centralized API request and error logging.
- Improved efficiency with debouncing, lazy loading, and cursor-based pagination.
MERNTypeScriptJWTAxiomCloudinaryExcelJS
Read Expense Tracker case study+
Problem
Users needed a single place to track spending, inspect monthly patterns, and export structured reports without manual spreadsheet work.
Role
Owned full-stack delivery across product scoping, backend API design, frontend implementation, and deployment hardening.
Outcome
- Reduced front-end bundle pressure through lazy loading and modal prefetching.
- Delivered downloadable monthly and custom-range financial reports.
- Improved production debugging speed with centralized request and error logging.
Technical choices
- MERN + TypeScript for faster delivery with type-safe contracts.
- Cloudinary + Multer for secure, scalable media uploads.
- Axiom logging to monitor production API behavior in real time.
- ExcelJS for dynamic report exports with custom date windows.
Challenges
- Keeping feeds and profile interactions performant with growing data.
- Avoiding redundant calls during rapid UI interactions.
- Maintaining observability while shipping quickly.
Tradeoffs
- Used JWTs in HTTP-only cookies to keep credentials out of browser-managed storage.
- Shipped analytics depth in phases to prioritize reliability and clean data flow first.
More highlights
- Built secure authentication with JWTs in HTTP-only cookies.
- Implemented expense history, recurring payments, advanced filters, and edit/restore flows.
Selected work / 02
DevTinder
Developer matchmaking platform with real-time, bidirectional WebSocket chat, deployed on AWS EC2 behind NGINX.
Key Highlights3 highlights- Built bidirectional, real-time one-to-one chat with WebSockets (Socket.IO).
- Deployed on AWS EC2 with NGINX as a reverse proxy and PM2 for process management.
- Implemented JWT sign-in with HTTP-only cookies, input validation, and bcrypt password hashing.
MongoDBExpressReactNode.jsSocket.IOAWS EC2NGINXJWT
Read DevTinder case study+
Problem
Developers needed a focused way to discover relevant peers, connect intentionally, and manage requests without noisy social graph behavior.
Role
Built both frontend and backend modules including auth, feed ranking logic, connection workflows, and deployment infrastructure.
Outcome
- Shipped a production-ready matchmaking flow with reliable request state transitions.
- Improved security posture with input sanitization and bcrypt hardening.
- Achieved dependable uptime on EC2 with reverse proxy and process management setup.
Technical choices
- JWT + HTTP-only cookies for secure session handling.
- MongoDB for flexible profile and request models.
- Socket.IO for bidirectional, real-time messaging between connected developers.
- AWS EC2 + NGINX + PM2 for stable production runtime.
Challenges
- Preventing duplicate or invalid connection interactions.
- Designing modular controllers without tight coupling between features.
- Keeping deployment simple but resilient for continuous updates.
Tradeoffs
- Prioritized robust core request/connection workflows before advanced recommendation tuning.
- Kept architecture monorepo-friendly to iterate quickly over strict service decomposition.
More highlights
- Built developer profiles and a discovery feed centered on skills and relevant peers.
- Added connection requests with accept/reject states and mutual connections.
Selected work / 03
NetflixGPT
AI-assisted streaming companion that mixes TMDB data with OpenAI prompts for tailored watchlists.
Key Highlights3 highlights- Implemented Firebase sign-in and persistent user sessions.
- Integrated TMDB data for movie browsing and search.
- Connected OpenAI prompts to multilingual movie recommendations.
ReactFirebaseReduxOpenAITMDB
Read NetflixGPT case study+
Problem
Traditional browsing made it hard to discover content quickly, especially across languages and changing preferences.
Role
Led frontend architecture and API integrations to combine conversational recommendations with fast browsing UX.
Outcome
- Delivered multilingual recommendation flows from natural language prompts.
- Improved browsing smoothness with shimmer states and memoized selectors.
- Maintained consistent sessions by syncing preferences with auth state.
Technical choices
- Redux Toolkit for predictable state handling and scalable slices.
- Firebase Auth for low-friction secure sign-in flows.
- TMDB + OpenAI integration for data-rich and context-aware recommendations.
Challenges
- Balancing recommendation latency with smooth UI interactions.
- Handling offline/loading states while preserving user trust.
- Keeping state complexity manageable as feature count grew.
Tradeoffs
- Focused first on recommendation quality and UX reliability before social features.
- Used curated prompt flows over open-ended chat to keep responses consistent.
More highlights
- Organized browsing and personalization state with Redux Toolkit.
- Added loading and offline states to keep the interface usable during slow or lost connections.
Mini Projects
Focused Learning Builds
Small projects I built to deeply understand real-time communication, caching, and scaling concepts.
WebSockets Chat App
Mar 2026
Small real-time chat app to understand live communication patterns beyond HTTP request-response.
- Online/offline user detection flow
- Bidirectional communication using WebSockets
- Typing indicator behavior with low-latency updates
- HTTP handshake and TCP-backed WebSocket workflow
ReactNode.jsWebSocketsExpressHTTP/TCP
Redis Practice Mini Project
Mar 2026
Mini backend practice build focused on performance and scaling fundamentals in distributed systems.
- Redis caching to reduce repeated work
- Session-based authentication with server-managed state
- Rate limiting for traffic protection and API stability
- Practical understanding of scaling-oriented backend patterns
Node.jsExpressRedisSession AuthRate Limiting