https://github.com/code-418-dpr/kntista-api
Бэкенд для проекта KNTista
https://github.com/code-418-dpr/kntista-api
backend docker drizzle-orm fastify kntista nestjs rest-api swagger
Last synced: about 2 months ago
JSON representation
Бэкенд для проекта KNTista
- Host: GitHub
- URL: https://github.com/code-418-dpr/kntista-api
- Owner: code-418-dpr
- License: mit
- Created: 2025-01-08T18:52:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-25T15:29:05.000Z (about 1 year ago)
- Last Synced: 2025-03-25T16:32:46.190Z (about 1 year ago)
- Topics: backend, docker, drizzle-orm, fastify, kntista, nestjs, rest-api, swagger
- Language: TypeScript
- Homepage:
- Size: 1.09 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# KNTista-api
[](https://opensource.org/licenses/MIT)
[](https://github.com/Scorpi-ON/KNTista-api/releases)
[](https://github.com/Scorpi-ON/KNTista-api/releases)
[](https://github.com/Scorpi-ON/KNTista-api)
[](https://github.com/Scorpi-ON/KNTista-api/actions/workflows/linter.yaml)
[](https://github.com/Scorpi-ON/KNTista-api/actions/workflows/codeql.yaml)
[](https://github.com/Scorpi-ON/KNTista-api/actions/workflows/build.yaml)
Бэкенд для проекта KNTista
## Особенности реализации
- отслеживание активности на факультете:
- [x] возможность заполнить справочники БД данными
- [x] CRUD-операции со всеми сущностями
- [x] создание DOCX-отчётов об активности
- [ ] параметризованный поиск по всем таблицам с пагинацией
- [x] документация Swagger
- [x] интеграция CI/CD
- [ ] авторизация JWT и OAuth
- [ ] логирование
- [ ] кеширование ответов сервера
- [ ] покрытие тестами
## Стек
- **Node.js** — платформа для запуска JavaScript
- **SWC** — веб-сборщик (более быстрый, чем стандартный Babel)
- **pnpm** — пакетный менеджер
- **TypeScript** — язык программирования
- **NestJS** — основной бэкенд-фреймворк
- **Fastify** — фреймворк под капотом NestJS (более быстрый, чем стандартный Express)
- **Drizzle** — ORM
- **Jest** — фреймворк для тестирования
- **Swagger** — инструмент документирования API
- **ESLint** — статический анализатор кода
- **Prettier** — форматировщик кода
- **Docker** — платформа для контейнеризации
## Установка и запуск
0. Клонируйте репозиторий и перейдите в его папку.
1. Создайте файл `.env` на основе [.env.template](.env.template) и настройте все описанные там сервисы.
В частности сервер PostrgeSQL можно поднять как вручную, так и через Docker compose командой
```shell
docker-compose up -d
```
2. Заполнить справочные таблицы данными можно командой:
> [!WARNING]
> Эта команда очистит все данные справочных таблиц перед их заполнением!
```shell
pnpm db:seed
```
Остальные данные можно внести в графическом режиме, открыв Drizzle Studio:
```shell
pnpm db:studio
```
### Посредством Docker
3. Установите Docker.
4. Запустите сборку образа:
```shell
docker build -t kntista-api .
```
5. Теперь запускать образ можно командой:
```shell
docker run -d --name kntista-api-standalone -p 3000:3000 kntista-api
```
### Без использования Docker
3. Установите Node.js и пакетный менеджер pnpm.
4. Установите зависимости:
```shell
pnpm i
```
5. Соберите проект:
```shell
pnpm build
```
6. Теперь запускать проект можно командой:
```shell
pnpm start:prod
```
## Модификация
Запуск сервера в режиме отладки осуществляется командой:
```shell
pnpm start:debug
```
Документация API в Swagger UI, где его можно будет протестировать, при запуске на локалхосте со стандартными параметрами
доступна по ссылке https://localhost:3000/docs.
Прочие скрипты, необходимые для запуска линтера, форматировщика, тестов и т. д. находятся в
файле [package.json](./package.json).