Chap - Realtime Chat App
A realtime messaging app with direct and group chats, a friend system, and presence and seen indicators.

Chap is a full-stack realtime chat application. Users sign up, search for other people by username, send and answer friend requests, then start direct conversations or create group chats. Messages, unread counters, online presence and seen receipts are pushed instantly over Socket.IO, while conversation history loads through infinite scroll. The frontend is built with React 19, TypeScript and Vite, styled with Tailwind CSS v4 and shadcn/ui components on top of Radix UI primitives, with Zustand for state, react-hook-form and Zod for validation, emoji-mart for the emoji picker and sonner for toasts. The backend runs on Express 5 with MongoDB and Mongoose, JWT access tokens with refresh sessions stored in the database, bcrypt password hashing, Multer and Cloudinary for avatar uploads, and Socket.IO for realtime delivery.