58 lines
2.0 KiB
Markdown
58 lines
2.0 KiB
Markdown
# Image List Backend
|
||
|
||
Учебный backend-проект — упрощенный Instagram для обучения студентов.
|
||
|
||
## Назначение
|
||
|
||
REST API для работы с изображениями. Используется как практический проект при обучении backend-разработке на NestJS.
|
||
|
||
## Стек
|
||
|
||
- **Framework:** NestJS 11
|
||
- **Language:** TypeScript
|
||
- **Runtime:** Node.js
|
||
- **Database:** PostgreSQL (shared-db) + TypeORM
|
||
- **CI/CD:** Drone CI + ci-templates
|
||
|
||
## Структура
|
||
|
||
```
|
||
src/
|
||
├── main.ts # Точка входа
|
||
├── app.module.ts # Корневой модуль (ConfigModule + TypeORM)
|
||
├── app.controller.ts # REST контроллер
|
||
├── app.service.ts # Бизнес-логика (TypeORM Repository)
|
||
├── entities/
|
||
│ ├── author.entity.ts # Entity: authors
|
||
│ └── image.entity.ts # Entity: images
|
||
├── health/
|
||
│ ├── health.module.ts # Health check модуль
|
||
│ └── health.controller.ts # GET /health
|
||
├── schemas.ts # Swagger DTO
|
||
├── types.ts # TypeScript типы
|
||
├── consts.ts # Константы
|
||
└── api.responses.ts # Форматы ответов API
|
||
```
|
||
|
||
## Команды
|
||
|
||
```bash
|
||
npm install # Установка зависимостей
|
||
npm run start:dev # Запуск в dev режиме
|
||
npm run build # Сборка
|
||
npm run start:prod # Production запуск
|
||
```
|
||
|
||
## Деплой
|
||
|
||
- **CI/CD:** Drone CI через ci-templates (service.yaml + .drone.yml)
|
||
- **Namespace:** backend-for-learning
|
||
- **URL:** https://image-list.vigdorov.ru
|
||
- **Health:** GET /health
|
||
|
||
## Локальная разработка
|
||
|
||
Переменные окружения в `.env.local`:
|
||
- `DATABASE_HOST` — хост PostgreSQL (localhost для dev через NodePort :30432)
|
||
- `DATABASE_PORT`, `DATABASE_USER`, `DATABASE_PASSWORD`, `DATABASE_NAME`
|