- Added production environment variables to docker-compose.yml - Updated Dockerfile for API and web to use Turbo build commands - Modified turbo.json to include new environment variables - Updated API index.ts to use new environment configuration - Updated README.md with correct API port - Added start:api script to package.json - Improved deployment and configuration management
91 lines
2.1 KiB
Markdown
91 lines
2.1 KiB
Markdown
# Unreal Chat API
|
|
|
|
The backend API for the Unreal Chat application, built with Mercurius, GraphQL, and Prisma.
|
|
|
|
## Features
|
|
|
|
- GraphQL API with Mercurius
|
|
- Real-time subscriptions for messages and rooms
|
|
- Prisma ORM with MariaDB
|
|
- User authentication
|
|
- Chat rooms and messaging
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js (v18 or later)
|
|
- npm (v10 or later)
|
|
- MariaDB or MySQL
|
|
|
|
### Installation
|
|
|
|
1. Install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Set up the database:
|
|
|
|
Make sure you have MariaDB running and update the connection string in `prisma/.env` if needed.
|
|
|
|
3. Run Prisma migrations:
|
|
|
|
```bash
|
|
npm run prisma:migrate
|
|
```
|
|
|
|
4. Start the development server:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The API will be available at http://localhost:4000/graphql.
|
|
|
|
## Available Scripts
|
|
|
|
- `npm run dev` - Start the development server
|
|
- `npm run build` - Build the application
|
|
- `npm run start` - Start the production server
|
|
- `npm run prisma:generate` - Generate Prisma client
|
|
- `npm run prisma:migrate` - Run Prisma migrations
|
|
- `npm run prisma:studio` - Open Prisma Studio
|
|
|
|
## API Documentation
|
|
|
|
### Authentication
|
|
|
|
For development purposes, authentication is simplified. In a production environment, you would use JWT tokens.
|
|
|
|
### GraphQL Schema
|
|
|
|
The GraphQL schema includes the following main types:
|
|
|
|
- `User`: Represents a user in the system
|
|
- `Room`: Represents a chat room
|
|
- `Message`: Represents a message in a chat room
|
|
|
|
### Queries
|
|
|
|
- `me`: Get the current user
|
|
- `users`: Get all users
|
|
- `user(id: ID!)`: Get a user by ID
|
|
- `rooms`: Get all public rooms
|
|
- `room(id: ID!)`: Get a room by ID
|
|
- `messages(roomId: ID!)`: Get messages in a room
|
|
|
|
### Mutations
|
|
|
|
- `register(email: String!, username: String!, password: String!)`: Register a new user
|
|
- `login(email: String!, password: String!)`: Login a user
|
|
- `createRoom(name: String!, description: String, isPrivate: Boolean)`: Create a new room
|
|
- `joinRoom(roomId: ID!)`: Join a room
|
|
- `leaveRoom(roomId: ID!)`: Leave a room
|
|
- `sendMessage(content: String!, roomId: ID!)`: Send a message to a room
|
|
|
|
### Subscriptions
|
|
|
|
- `messageAdded(roomId: ID!)`: Subscribe to new messages in a room
|
|
- `roomAdded`: Subscribe to new rooms
|