# Chat App

A real-time chat application with modern features including chat rooms, direct messaging, image sharing, message reactions, and user presence tracking.

![Chat App Main Interface](screenshots/main-interface.png)

## Features

- **Authentication** - Secure login and registration
- **Real-time Messaging** - Instant message delivery
- **Chat Rooms** - Create, join, and manage chat rooms
- **Media Sharing** - Share images in conversations
- **Message Reactions** - React to messages with emojis
- **Message Status** - See when messages are delivered and read
- **Typing Indicators** - Know when someone is typing
- **User Presence** - See who's online in real-time
- **Profile Management** - Update profile information and avatar
- **Theme Support** - Light, dark, and system theme options
- **Responsive Design** - Works on desktop and mobile devices

## Technology Stack

### Frontend
- React with TypeScript
- Vite for building and development
- Tailwind CSS for styling
- Radix UI components
- Socket.IO client for real-time communication
- React Query for data fetching
- Zustand for state management

### Backend
- Node.js with Express
- TypeScript
- Socket.IO for real-time communication
- Prisma ORM
- PostgreSQL database
- JWT authentication

### DevOps
- Docker for containerization
- Gitea CI/CD pipeline for deployment
- Nginx for serving the frontend and routing API requests

## Installation

### Prerequisites
- Node.js (v20+)
- npm or yarn
- PostgreSQL database
- Docker and Docker Compose (for containerized deployment)

### Local Development Setup

1. Clone the repository:
```bash
git clone https://github.com/yourusername/chat-app.git
cd chat-app