https://github.com/hummel009/modern-programming-platforms
СПП - лабораторные работы, курсовая БГУИР
https://github.com/hummel009/modern-programming-platforms
bsuir gradle jdk17 js kotlin labs
Last synced: 2 months ago
JSON representation
СПП - лабораторные работы, курсовая БГУИР
- Host: GitHub
- URL: https://github.com/hummel009/modern-programming-platforms
- Owner: Hummel009
- License: gpl-3.0
- Created: 2024-09-11T18:59:13.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-03-27T09:07:41.000Z (3 months ago)
- Last Synced: 2025-03-27T10:23:42.040Z (3 months ago)
- Topics: bsuir, gradle, jdk17, js, kotlin, labs
- Language: Kotlin
- Homepage:
- Size: 20.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Code Smells][code_smells_badge]][code_smells_link]
[![Maintainability Rating][maintainability_rating_badge]][maintainability_rating_link]
[![Security Rating][security_rating_badge]][security_rating_link]
[![Bugs][bugs_badge]][bugs_link]
[![Vulnerabilities][vulnerabilities_badge]][vulnerabilities_link]
[![Duplicated Lines (%)][duplicated_lines_density_badge]][duplicated_lines_density_link]
[![Reliability Rating][reliability_rating_badge]][reliability_rating_link]
[![Quality Gate Status][quality_gate_status_badge]][quality_gate_status_link]
[![Technical Debt][technical_debt_badge]][technical_debt_link]
[![Lines of Code][lines_of_code_badge]][lines_of_code_link]Мои лабораторные работы для BSUIR/БГУИР (белорусский государственный университет информатики и радиоэлектроники).
Предмет - SPP/СПП (современные платформы программирования).
## Условия
### Курсовая работа
Интернет-магазин книг с бэкендом Kotlin Ktor и фронтендом React. Есть деплоймент на докерхаб.
### Лабораторная работа 1
Разработать простое приложения с рендерингом на сервере. Например, список задач со
статусом их выполнения, фильтрацией по статусу и выставлением ожидаемой даты завершения,
а также возможностью прикреплять файлы к каждой задаче. Сервер должен отдавать клиенту
готовую разметку, отправка данных серверу должна осуществляться через отправку форм.
Обязательно использование NodeJS , конкретные библиотеки могут отличаться. Например,
подойдут Express + EJS.### Лабораторная работа 2
Простое приложение, как в лабораторной работе №1, но с другой архитектурой. На сервере
должен быть реализован REST API , на клиенте - Single Page Application . Обмен данных
должен осуществляться путем отправки/принятия HTTP-запросов с данными в формате JSON
или файлов в формате multipart/form-data . Обновление данных на клиенте не должно
приводить к перегрузке страницы. Серверный REST API должен поддерживать ожидаемую
семантику: правильно использовать HTTP-методы ( GET для чтения данных, POST/PUT для
изменения, DELETE для удаления и т.п.) и возвращать правильные коды ответов (200 в случае
успешного чтения/изменения данных, 404 если ресурс не найдет и т.п.). Обязательно
использование NodeJS на сервере. На клиенте можно использовать что угодно,
React/Angular/Vue или вообще без библиотеки.### Лабораторная работа 3
Добавить к приложению из лабораторной №2 аутентификацию на базе JWT-токенов . Токен
должен передаваться через httponly cookie на клиент и так же отправляться на сервер. При
попытке прочитать/изменить данные на сервере без валидного токена, клиенту должен
возвращаться 401 код. При получении кода 401 клиент должен потребовать от пользователя
ввода логина/пароля. Для формирования JWT-токена можно использовать только пакеты
jsonwebtoken и bcrypt . Логику аутентификации нужно описать в виде отдельного middleware
той библиотеки, на которой написан сервер (например, Express )### Лабораторная работа 4
Как лабораторная работа №3, но заменить REST API на обмен данных через WebSockets.
Можно использовать библиотеку Socket.IO.### Лабораторная работа 5
Как лабораторная работа №3, но на сервере сделать API на GraphQL.
### Лабораторная работа 6
Как лабораторная работа №3, но сервера теперь два, и один с другим общается посредством GRPC.
## Приложения
В папке docs лежит пояснительная записка к курсовой работе.
[code_smells_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=code_smells
[code_smells_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[maintainability_rating_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=sqale_rating
[maintainability_rating_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[security_rating_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=security_rating
[security_rating_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[bugs_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=bugs
[bugs_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[vulnerabilities_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=vulnerabilities
[vulnerabilities_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[duplicated_lines_density_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=duplicated_lines_density
[duplicated_lines_density_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[reliability_rating_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=reliability_rating
[reliability_rating_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[quality_gate_status_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=alert_status
[quality_gate_status_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[technical_debt_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=sqale_index
[technical_debt_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms
[lines_of_code_badge]: https://sonarcloud.io/api/project_badges/measure?project=Hummel009_Modern-Programming-Platforms&metric=ncloc
[lines_of_code_link]: https://sonarcloud.io/summary/overall?id=Hummel009_Modern-Programming-Platforms