# Unreal Chat A real-time chat application built with SolidJS, GraphQL, and Prisma. ## Project Structure This is a monorepo containing the following packages: - `apps/api`: GraphQL API server built with Apollo Server, GraphQL, and Prisma - `apps/web`: Web client built with SolidJS and URQL GraphQL client ## Features - Real-time chat with GraphQL subscriptions - User authentication - Chat room management - Message sending and receiving - Public and private chat rooms ## Getting Started ### Prerequisites - Node.js (v18 or later) - npm (v10 or later) - MariaDB or MySQL ### Installation 1. Clone the repository: ```bash git clone https://github.com/yourusername/unreal-chat.git cd unreal-chat ``` 2. Install dependencies: ```bash npm install ``` 3. Set up environment variables: Create a `.env` file in the `apps/api` directory: ``` DATABASE_URL="mysql://root:password@localhost:3306/unreal_chat" JWT_SECRET="your-secret-key" ``` Create a `.env` file in the `apps/web` directory: ``` VITE_API_URL=http://localhost:4000/graphql VITE_WS_URL=ws://localhost:4000/graphql ``` 4. Initialize the database: ```bash npm run prisma:init ``` 5. Start the development servers: ```bash # Start both API and web servers npm run dev # Or start them individually npm run api:dev npm run web:dev ``` The API will be available at http://localhost:4000/graphql and the web app at http://localhost:5173. ## Available Scripts - `npm run dev` - Start all development servers - `npm run api:dev` - Start the API development server - `npm run web:dev` - Start the web development server - `npm run build` - Build all packages - `npm run api:build` - Build the API - `npm run web:build` - Build the web app - `npm run prisma:generate` - Generate Prisma client - `npm run prisma:migrate` - Run Prisma migrations - `npm run prisma:studio` - Open Prisma Studio ## Technologies ### Backend (API) - Apollo Server - GraphQL - Prisma ORM - MariaDB - JSON Web Tokens (JWT) ### Frontend (Web) - SolidJS - URQL GraphQL Client - GraphQL Subscriptions - CSS ## License This project is licensed under the MIT License - see the LICENSE file for details.