< div style = "display: flex; flex-direction: row; align-items: center; justify-content: center;" >
< img style = "border-radius: 1em; align-self: center;" src = "https://drive.google.com/uc?export=view&id=1_xQWdF3RtL1MRcdDESMPXMBiAQDHCDGT" width = "45" >
< h1 style = "text-align: center; margin-left: 10px; margin-top: 2px;" > IT Lab Platform< / h1 >
< / div >
< div style = "display: flex; align-items: center; border: 1px solid #ccc ; padding: 10px; border-radius: 5px;" >
< span style = "font-size: 20px; margin-right: 10px;" > ✨< / span >
< span style = "font-size: 16px;" >
Этот репозиторий содержит исходный код приложения "IT Lab Application", разработанного для Кубанского государственного университета и Лаборатории коммерческой разработки ПО IT Lab.
< / span >
< / div >
## Описание
Проект представляет собой приложение, созданное с использованием NX и JavaScript. Он разработан с целью удовлетворения потребностей Кубанского государственного университета и Лаборатории коммерческой разработки ПО IT Lab.
## Сервисы
- [frontend (ReactJS) ](https://github.com/IT-Lab-KubSU/platform/tree/main/apps/frontend )
- [AGW ](https://github.com/IT-Lab-KubSU/platform/tree/main/apps/agw )
- [User Data Service ](https://github.com/IT-Lab-KubSU/platform/tree/main/apps/user-data )
- [Auth Service ](https://github.com/IT-Lab-KubSU/platform/tree/main/apps/auth )
<!-- todo: интегрировать SC Omni Services Embeding c списком всех компонентов -->
## Развертывание
To start the development server run `nx serve frontend` . Open your browser and navigate to http://localhost:4200/. Happy coding!
```bash
npm i -g prisma nx
```
```bash
yarn install
```
```bash
copy .env.example .env
```
```bash
cd apps/auth/serving & & copy database.env.example database.env & & sudo docker-compose up -d
```
```bash
cd apps/auth/serving & & copy database.env.example database.env & & sudo docker-compose up -d & & cd ../../../
```
```bash
cd apps/user-data/serving & & copy database.env.example database.env & & sudo docker-compose up -d & & cd ../../../
```
auth
```bash
prisma generate --schema="./libs/prisma-clients/auth/prisma/schema.prisma"
```
```bash
prisma db push --schema="./libs/prisma-clients/auth/prisma/schema.prisma"
```
user data
```bash
prisma generate --schema="./libs/prisma-clients/user-data/prisma/schema.prisma"
```
```bash
prisma db push --schema="./libs/prisma-clients/user-data/prisma/schema.prisma"
```
Run all services:
```bash
nx run-many --parallel --target=serve --projects=agw,user-data,auth,frontend
```
< a style = "padding: 10px; background: black; color: white; border-radius: 25px;" href = "https://l.djft.ru/r/72/p/itlabplatform1/a/p/a/" >
Deploy on SCOS
< / a >
## Структура репозитория
Репозиторий содержит следующие основные каталоги и файлы:
- `apps` - приложения
- `libs` - библиотеки
- `tools` - Nx workspaces tools
- `docs` - документация
```mermaid
graph TD;
agw-e2w-->agw;
frontend-e2e-->frontend;
ui-modules-->agw;
agw-->user-data;
user-data-->user-data-db;
user-data-db-->user-data-pg-admin;
agw-->auth-client;
auth-client-->auth;
auth-->auth-db;
auth-db-->auth-db-admin;
ui-modules-->ui;
site-pages-->ui-modules;
frontend-->site-pages;
site-pages-->site-layouts;
```
## Generate code
If you happen to use Nx plugins, you can leverage code generators that might come with it.
Run `nx list` to get a list of available plugins and whether they have generators. Then run `nx list <plugin-name>` to see what generators are available.
Learn more about [Nx generators on the docs ](https://nx.dev/plugin-features/use-code-generators ).
## Running tasks
To execute tasks with Nx use the following syntax:
```
nx < target > < project > < ...options >
```
You can also run multiple targets:
```
nx run-many -t < target1 > < target2 >
```
..or add `-p` to filter specific projects
```
nx run-many -t < target1 > < target2 > -p < proj1 > < proj2 >
```
Targets can be defined in the `package.json` or `projects.json` . Learn more [in the docs ](https://nx.dev/core-features/run-tasks ).
## Want better Editor Integration?
Have a look at the [Nx Console extensions ](https://nx.dev/nx-console ). It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.
## Ready to deploy?
Just run `nx build demoapp` to build the application. The build artifacts will be stored in the `dist/` directory, ready to be deployed.
# Backend
## Prisma Types
```bash
nx g prisma-generator
```
# Frontend
## Create a new Layout
```bash
nx g @nx/react:component NAME --project site-layouts
```
## Create a new Page
```bash
nx g @nx/react:component NAME --project site-pages
```
## Create a new Component
Like navbar, footer, login card, delete modal alert and et.
```bash
nx g @nx/react:component NAME --project ui-modules
```
## Create a new UI Component
Like nav_link, cta_button, username_input and et.
```bash
nx g @nx/react:component NAME --project ui
```
# Стиль кода
## Коммиты
Используемые префиксы:
- **feat:** (от "feature") - новая функциональность или добавление нового компонента.
- **fix:** - исправление ошибок или дефектов.
- **docs:** - изменения, связанные с документацией, например, обновление README или документации в коде.
- **style:** - изменения внешнего вида кода, форматирование, пробелы, отступы и т.д., которые не влияют на е г о поведение.
- **refactor:** - рефакторинг кода без исправления ошибок или добавления новых функций.
- **test:** - добавление или исправление тестов.
- **chore:** - изменения в сборочных скриптах, настройках инструментов, обновление зависимостей и т.д.
- **perf:** - изменения, связанные с оптимизацией производительности.
- **revert:** - отмена предыдущего коммита.
- **merge:** - коммит, созданный при слиянии веток.
- **release:** - коммит, связанный с выпуском новой версии.
- **require:** - коммит, связанный с установкой новой библиотеки