144144024719edef84d5a3752e3e5cccc2c49abb
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
Description
Languages
TypeScript
99.6%
JavaScript
0.4%