You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kubsu-platform-crud-2023/README.md

185 lines
6.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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:** - коммит, связанный с установкой новой библиотеки