An open API service indexing awesome lists of open source software.

https://github.com/algorithm-ssau/team-3-6302


https://github.com/algorithm-ssau/team-3-6302

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

          

# Команда 3

## Проект: сайт рецептов ##

### Разработчики:
| Имя | Роль в проекте |
|-----------------------|-----------------------|
| Кабаева Алёна | капитан команды |
| Хасанова Эльвира | разработчик |
| Линьков Андрей | разработчик |
| Маркелов Денис | разработчик |
| Гуторов Владислав | разработчик |
| Перепонов Леонид | разработчик |

## Инструкция по запуску проекта

### Требования

Перед началом работы убедитесь, что у вас установлены:

- **Node.js** (версия 18 или выше) - [скачать](https://nodejs.org/)
- **PostgreSQL** (версия 12 или выше) - [скачать](https://www.postgresql.org/download/)
- **npm** (обычно устанавливается вместе с Node.js)
- **Git** - [скачать](https://git-scm.com/)

### Вариант 1: Локальный запуск (для разработки)

#### Шаг 1: Клонирование репозитория

```bash
git clone https://github.com/algorithm-ssau/team-3.git
cd team-3
```

#### Шаг 2: Установка и настройка базы данных PostgreSQL

1. Установите PostgreSQL, если ещё не установлен
2. Создайте базу данных для проекта:

```bash
# Войдите в PostgreSQL (введите пароль суперпользователя)
psql -U postgres

# В консоли PostgreSQL выполните:
CREATE DATABASE recipes;
\q
```

Или используйте графический интерфейс (pgAdmin, DBeaver и т.д.) для создания базы данных с именем `recipes`.

#### Шаг 3: Настройка сервера

1. Перейдите в папку сервера:

```bash
cd server
```

2. Установите зависимости:

```bash
npm install
```

3. Создайте файл `.env` в папке `server/` со следующим содержимым:

```env
# URL подключения к базе данных PostgreSQL
# Формат: postgresql://пользователь:пароль@хост:порт/имя_базы?schema=public
DATABASE_URL="postgresql://postgres:ваш_пароль@localhost:5432/recipes?schema=public"
```

**Важно:**
- Замените `postgres` на ваше имя пользователя PostgreSQL
- Замените `ваш_пароль` на ваш пароль PostgreSQL
- Если PostgreSQL работает на другом порту, измените `5432`
- Если база данных имеет другое имя, измените `recipes`

4. Сгенерируйте Prisma Client:

```bash
npm run prisma:generate
```

5. Примените миграции базы данных:

```bash
npm run prisma:migrate
```

6. Заполните базу данных начальными данными (категории, рецепты, настроения):

```bash
npm run prisma:seed
```

#### Шаг 4: Настройка клиента

1. Откройте новый терминал и перейдите в папку клиента:

```bash
cd client
```

2. Установите зависимости:

```bash
npm install
```

3. (Опционально) Создайте файл `.env` в папке `client/` для настройки URL API:

```env
# URL сервера (опционально, по умолчанию http://localhost:4000)
VITE_API_URL=http://localhost:4000
```

#### Шаг 5: Запуск приложения

1. **Запустите сервер** (в терминале из папки `server/`):

```bash
npm run dev
```

Сервер должен запуститься на `http://localhost:4000`

2. **Запустите клиент** (в другом терминале из папки `client/`):

```bash
npm run dev
```

Клиент должен запуститься на `http://localhost:5173`

3. Откройте браузер и перейдите по адресу `http://localhost:5173`

### Вариант 2: Запуск через Docker Compose

Если у вас установлен Docker и Docker Compose, вы можете запустить весь проект одной командой:

1. Убедитесь, что в папке `server/` создан файл `.env` с правильными настройками (см. Шаг 3 выше)

2. Из корневой папки проекта выполните:

```bash
docker-compose up --build
```

Это запустит:
- MongoDB (порт 27017) - **Примечание:** в текущей версии проект использует PostgreSQL, а не MongoDB. Возможно, это устаревшая конфигурация.
- Сервер (порт 4000)
- Клиент (порт 3000)

**Важно:** При использовании Docker Compose убедитесь, что переменные окружения в `server/.env` указывают на правильный хост базы данных (например, `postgresql://postgres:password@mongo:27017/recipes` для MongoDB или на внешний PostgreSQL сервер).

### Полезные команды

#### Для сервера (в папке `server/`):

- `npm run dev` - Запуск сервера в режиме разработки
- `npm run build` - Сборка проекта
- `npm run start` - Запуск собранного проекта
- `npm run prisma:generate` - Генерация Prisma Client
- `npm run prisma:migrate` - Применение миграций
- `npm run prisma:push` - Синхронизация схемы с БД (без миграций)
- `npm run prisma:studio` - Открыть Prisma Studio (GUI для работы с БД)
- `npm run prisma:seed` - Заполнить БД начальными данными

#### Для клиента (в папке `client/`):

- `npm run dev` - Запуск в режиме разработки
- `npm run build` - Сборка проекта для продакшена
- `npm run preview` - Предпросмотр собранного проекта
- `npm run lint` - Проверка кода линтером

### Решение проблем

#### Ошибка подключения к базе данных

- Убедитесь, что PostgreSQL запущен
- Проверьте правильность данных в `DATABASE_URL` в файле `server/.env`
- Убедитесь, что база данных `recipes` создана
- Проверьте, что пользователь PostgreSQL имеет права на доступ к базе данных

#### Ошибка "Prisma Client не найден"

Выполните:
```bash
cd server
npm run prisma:generate
```

#### Ошибка "Миграции не применены"

Выполните:
```bash
cd server
npm run prisma:migrate
```

#### Порт уже занят

- Измените порт сервера в `server/.env` (переменная `PORT`)
- Или измените порт клиента в `client/vite.config.ts` (опция `server.port`)

#### Клиент не может подключиться к серверу

- Убедитесь, что сервер запущен
- Проверьте, что в `client/src/services/api.ts` указан правильный `API_BASE_URL`
- Или создайте файл `client/.env` с переменной `VITE_API_URL=http://localhost:4000`