Initial commit: Prism messenger with Expo + NestJS + GraphQL + PostgreSQL
This commit is contained in:
126
README.md
Normal file
126
README.md
Normal file
@ -0,0 +1,126 @@
|
||||
# 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. Запуск базы данных
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 2. Запуск Backend
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
npm run start:dev
|
||||
```
|
||||
|
||||
Backend будет доступен на http://localhost:3000
|
||||
GraphQL Playground: http://localhost:3000/graphql
|
||||
|
||||
### 3. Запуск Frontend
|
||||
```bash
|
||||
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 команды
|
||||
```bash
|
||||
npm run start:dev # Запуск в режиме разработки
|
||||
npm run build # Сборка проекта
|
||||
npm run test # Запуск тестов
|
||||
```
|
||||
|
||||
### Frontend команды
|
||||
```bash
|
||||
npx expo start # Запуск Expo
|
||||
npx expo start --ios # Запуск на iOS симуляторе
|
||||
npx expo start --android # Запуск на Android эмуляторе
|
||||
```
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
### Backend (.env)
|
||||
```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`
|
Reference in New Issue
Block a user