Files
prism/README.md

4.2 KiB
Raw Blame History

Prism Messenger

Мессенджер на основе Expo (React Native) + NestJS + GraphQL + PostgreSQL

Архитектура

Frontend (Mobile)

  • Framework: Expo с TypeScript
  • State Management: Apollo Client для GraphQL
  • UI: React Native Paper
  • Navigation: React Navigation

Backend

  • Framework: NestJS с TypeScript
  • API: GraphQL (code-first подход)
  • Database: PostgreSQL с TypeORM
  • Auth: JWT
  • Real-time: GraphQL Subscriptions

Быстрый старт

Предварительные требования

  • Node.js 18+
  • Docker и Docker Compose
  • Expo Go на мобильном устройстве

1. Настройка базы данных

Вариант A: Удаленная база данных (рекомендуется)

Проект настроен для работы с удаленной PostgreSQL. См. DATABASE_SETUP.md для деталей конфигурации.

Вариант B: Локальная база данных

# Раскомментируйте сервис postgres в docker-compose.yml
docker-compose up -d

2. Запуск Backend

cd backend
npm install
npm run start:dev

Backend будет доступен на http://localhost:3000 GraphQL Playground: http://localhost:3000/graphql

3. Запуск Frontend

cd frontend
npm install
npx expo start

Отсканируйте QR-код в Expo Go для запуска на устройстве.

Основные функции

Реализовано

  • Регистрация и авторизация пользователей
  • Создание приватных и групповых чатов
  • Отправка, редактирование и удаление сообщений
  • Real-time обновления через GraphQL subscriptions
  • Онлайн статус пользователей

В планах

  • 📱 Push-уведомления
  • 📷 Отправка изображений
  • 🔊 Голосовые сообщения
  • 🔒 End-to-end шифрование
  • 👥 Управление участниками групп

Структура проекта

Prism/
├── backend/
│   ├── src/
│   │   ├── modules/
│   │   │   ├── auth/        # Аутентификация
│   │   │   ├── users/       # Пользователи
│   │   │   ├── conversations/ # Чаты/беседы
│   │   │   └── messages/    # Сообщения
│   │   └── app.module.ts
│   └── package.json
├── frontend/
│   ├── src/
│   │   ├── components/      # Переиспользуемые компоненты
│   │   ├── screens/         # Экраны приложения
│   │   ├── navigation/      # Навигация
│   │   ├── services/        # Сервисы (Apollo Client)
│   │   ├── graphql/         # GraphQL запросы/мутации
│   │   ├── contexts/        # React Context (Auth)
│   │   └── types/           # TypeScript типы
│   └── App.tsx
└── docker-compose.yml

Разработка

Backend команды

npm run start:dev    # Запуск в режиме разработки
npm run build        # Сборка проекта
npm run test         # Запуск тестов

Frontend команды

npx expo start       # Запуск Expo
npx expo start --ios # Запуск на iOS симуляторе
npx expo start --android # Запуск на Android эмуляторе

Переменные окружения

Backend (.env)

DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=postgres
DATABASE_NAME=prism_messenger
JWT_SECRET=your-secret-key
JWT_EXPIRATION=7d

Frontend

Настройте URL backend в src/services/apollo-client.ts:

  • Для iOS симулятора: http://localhost:3000/graphql
  • Для Android эмулятора: http://10.0.2.2:3000/graphql
  • Для устройства в сети: http://<YOUR_IP>:3000/graphql