unreal-chat/apps/api
Juan Sebastian Montoya 885a65c796 chore: update Prisma migration commands for environment configuration
- Changed environment file reference from .env.local to .env in package.json for Prisma migration commands
- Ensured consistent environment variable usage across development commands
2025-04-10 14:46:54 -05:00
..
prisma feat: enhance authentication and user management with token-based system 2025-03-09 22:34:57 -05:00
src chore: update environment configuration and Docker setup 2025-04-10 14:36:22 -05:00
.dockerignore feat: improve authentication and cookie management 2025-03-10 00:41:39 -05:00
.gitignore Feature/Use fastify instead of express (#1) 2025-03-06 19:15:56 -05:00
Dockerfile chore: add Keyv package for improved caching and key-value storage 2025-03-10 09:10:17 -05:00
eslint.config.js Feature/Use fastify instead of express (#1) 2025-03-06 19:15:56 -05:00
package.json chore: update Prisma migration commands for environment configuration 2025-04-10 14:46:54 -05:00
README.md chore: update environment configuration and deployment scripts 2025-03-06 23:08:10 -05:00
tsconfig.json chore: update environment configuration and Docker setup 2025-04-10 14:36:22 -05:00

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:
npm install
  1. Set up the database:

Make sure you have MariaDB running and update the connection string in prisma/.env if needed.

  1. Run Prisma migrations:
npm run prisma:migrate
  1. Start the development server:
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