Modulis: T120B165 Saityno taikomųjų programų projektavimas
Studentas: Arnas Tamašauskas IFF-9/11
Projekto tikslas – sukurti platformą kurioje galima bendrauti žmonėms skirtingomis temomis, kanaluose/serveriuose skirtiems specifinėms temoms. Veikimo principas – Sudaro dvi dalys – client/server architektūra. Paprastas vartotojas galės peržiūrėti visus serverius ir serveriuose esančius kanalus ,kanaluose esančias žinutes su atsakymais ir visus kanaluose esančius vartotojus. Ten vartotojas gali specifiniame kanale rašyti žinutes (yra galimybė jas ištrinti bei redaguoti).
Gali atlikti visas CRUD operacijas su vartotojais (Users) Gali atlikti visas CRUD operacijas su žinutėmis (Messages) Gali atlikti visas CRUD operacijas su atsakymais (Reply) Gali atlikti visas CRUD operacijas su kanalais (Channel) Gali atlikti visas CRUD operacijas su serveriais (Server)
Gali atlikti visas CRUD operacijas su vartotojais (Users) (Savo serveriuos) Gali atlikti visas CRUD operacijas su žinutėmis (Messages) (Savo serveriuos) Gali atlikti visas CRUD operacijas su atsakymais (Reply) (Savo serveriuos) Gali atlikti visas CRUD operacijas su kanalais (Kanalais) (Savo serveriuos) Gali atlikti visas CRUD operacijas su su savo sukurtais serveriais
Gali atlikti visas CRUD operacijas su žinutėmis (Messages) (Savo žinutėmis) Gali skaityti kitu vartotoju žinutės Gali matyti visus kanalus Gali matyti visus serverius Gali matyti kitus naudotojus (kanalo viduje)
Sistemos sudedamosios dalys:
- Kliento pusė (angl. k. Front-End) – naudojant React.js;
- Serverio pusė (angl. k. Back-End) – naudojant Koa (NodeJS). Duomenų bazė – PostgreSQL.
Apačioje pavaizduota kuriamos sistemos diegimo diagrama. Sistemos talpinimui yra naudojamas AWS serveris. Kiekviena sistemos dalis yra diegiama tame pačiame serveryje. Internetinė aplikacija yra pasiekiama per HTTP protokolą. Šios sistemos veikimui (pvz., duomenų manipuliavimui su duomenų baze) yra reikalingas ChatDot API, kuris pasiekiamas per aplikacijų programavimo sąsają. Pats ChatDot API vykdo duomenų mainus su duomenų baze - tam naudojama ORM sąsaja.
Sukuriamas naujas vartotojas
- 201
- 400
{
"userName": "user1",
"email": "[email protected]",
"password": "user1",
"role": 1
}
{
"userName": "user1",
"email": "[email protected]",
"role": 1,
"password": "$2a$10$KyRHASbmaJX0vE.4FBmP2OUV9WIvgWzND9pgImsGsrJuN3ZWB1X2q",
"id": "1bde2641-5473-476c-ba00-3261fe30b2f8"
}
Gaunamas JWT tokenas teisingai nurodžius vartotojo duomenis
- 200
- 401
- 404
{
"userName": "user1",
"password": "user1"
}
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJlMjkwNjQ0MC1kODE2LTRiNTItOWM0OC04YjZjYzEwODMwN2QiLCJyb2xlIjoxLCJ1c2VyTmFtZSI6InNlcnZlciIsInRpbWUiOiJzdW4gZGVjIDE4IDIwMjIgMTY6MjI6NDUgZ210KzAwMDAgKGNvb3JkaW5hdGVkIHVuaXZlcnNhbCB0aW1lKSIsImlhdCI6MTY3MTM4MDU2NX0.8LAF-goFd_agjTkikvbBHDTBcq2osWznJyT0gu6Pe-4
Sukuriamas naujas serveris
- 201
- 400
- 401
- 403
{
"name": "serveris",
"description": "aprašymas"
}
{
"id": "4ef3a785-5919-4e15-bc4e-312e771543ad",
"adminId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"name": "serveris",
"description": "aprašymas"
}
Pagal id gaunami serverio duomenys
- 200
- 401
- 404
GET /servers/4ef3a785-5919-4e15-bc4e-312e771543ad
{
"id": "4ef3a785-5919-4e15-bc4e-312e771543ad",
"adminId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"name": "serveris",
"description": "aprašymas"
}
Atnaujinami serverio duomenys
- 201
- 400
- 401
- 403
- 404
PUT /servers/4ef3a785-5919-4e15-bc4e-312e771543ad
{
"name": "serveris2",
"description": "aprašymas2"
}
{
"id": "4ef3a785-5919-4e15-bc4e-312e771543ad",
"adminId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"name": "serveris2",
"description": "aprašymas2"
}
Ištrinamas serveris pagal id
- 204
- 401
- 403
- 404
DELETE /servers/4ef3a785-5919-4e15-bc4e-312e771543ad
204
Gaunamas visų serverių sąrašas
- 200
- 401
GET /servers
[
{
"id": "4ef3a785-5919-4e15-bc4e-312e771543ad",
"adminId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"name": "serveris",
"description": "aprašymas"
}
]
Serveryje pagal id sukuriamas naujas kanalas
- 201
- 400
- 401
- 403
POST /servers/4ef3a785-5919-4e15-bc4e-312e771543ad/channels
{
"name": "kanalas",
}
{
"id": "0286d937-4563-42d7-8273-e046693289b3",
"name": "kanalas",
"createdById": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"serverId": "fd618693-3dc0-41f3-926d-f21b46b266a7"
}
Gaunami kanalo duomenus pagal id
- 200
- 401
- 404
GET /servers/0286d937-4563-42d7-8273-e046693289b3/channels/0286d937-4563-42d7-8273-e046693289b3
{
"id": "0286d937-4563-42d7-8273-e046693289b3",
"name": "kanalas",
"createdById": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"serverId": "fd618693-3dc0-41f3-926d-f21b46b266a7"
}
Atnaujinami kanalo duomenys
- 201
- 400
- 401
- 403
- 404
PUT /servers/0286d937-4563-42d7-8273-e046693289b3/channels/4ef3a785-5919-4e15-bc4e-312e771543ad
{
"name": "kanalas2"
}
{
"id": "0286d937-4563-42d7-8273-e046693289b3",
"name": "kanalas2",
"createdById": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"serverId": "fd618693-3dc0-41f3-926d-f21b46b266a7"
}
Ištrinamas kanalas
- 204
- 401
- 403
- 404
DELETE /servers/0286d937-4563-42d7-8273-e046693289b3/channels/0286d937-4563-42d7-8273-e046693289b3
204
Gaunamas visų serverio pagal id kanalų sąrašas
- 200
- 401
GET /servers/fd618693-3dc0-41f3-926d-f21b46b266a7/channels
[
{
"id": "0286d937-4563-42d7-8273-e046693289b3",
"name": "kanalas",
"createdById": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9",
"serverId": "fd618693-3dc0-41f3-926d-f21b46b266a7"
}
]
Sukuriama pagal kanalo id nauja žinutė
- 201
- 400
- 401
POST /servers/4ef3a785-5919-4e15-bc4e-312e771543ad/channels/0286d937-4563-42d7-8273-e046693289b3/messages
{
"content": "žinutė",
}
{
"id": "90cbb5ed-0e19-4b0f-bf32-b549e75ab85d",
"content": "žinutė",
"dateCreated": "2022-12-18T15:59:09.344Z",
"dateUpdated": "2022-12-18T15:59:09.344Z",
"channelId": "0286d937-4563-42d7-8273-e046693289b3",
"authorId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9"
}
Gaunami žinutės duomenys pagal id
- 200
- 401
- 404
GET /servers/0286d937-4563-42d7-8273-e046693289b3/channels/0286d937-4563-42d7-8273-e046693289b3/messages/90cbb5ed-0e19-4b0f-bf32-b549e75ab85d
{
"id": "90cbb5ed-0e19-4b0f-bf32-b549e75ab85d",
"content": "content",
"dateCreated": "2022-12-18T15:59:09.344Z",
"dateUpdated": "2022-12-18T15:59:09.344Z",
"channelId": "0286d937-4563-42d7-8273-e046693289b3",
"authorId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9"
}
Atnaujinami žinutės duomenys
- 201
- 400
- 401
- 403
- 404
PUT /servers/0286d937-4563-42d7-8273-e046693289b3/channels/0286d937-4563-42d7-8273-e046693289b3/messages/90cbb5ed-0e19-4b0f-bf32-b549e75ab85d
{
"name": "žinutė2"
}
{
"id": "90cbb5ed-0e19-4b0f-bf32-b549e75ab85d",
"content": "žinutė2",
"dateCreated": "2022-12-18T15:59:09.344Z",
"dateUpdated": "2022-12-18T15:59:40.344Z",
"channelId": "0286d937-4563-42d7-8273-e046693289b3",
"authorId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9"
}
Ištrinama žinutė
- 204
- 401
- 403
- 404
DELETE /servers/0286d937-4563-42d7-8273-e046693289b3/channels/0286d937-4563-42d7-8273-e046693289b3/messages/90cbb5ed-0e19-4b0f-bf32-b549e75ab85d
204
Gaunamas kanalo pagal id žinučiu sąrašas
- 200
- 401
GET /servers/fd618693-3dc0-41f3-926d-f21b46b266a7/channels/0286d937-4563-42d7-8273-e046693289b3/messages
[
{
"id": "90cbb5ed-0e19-4b0f-bf32-b549e75ab85d",
"content": "content",
"dateCreated": "2022-12-18T15:59:09.344Z",
"dateUpdated": "2022-12-18T15:59:09.344Z",
"channelId": "0286d937-4563-42d7-8273-e046693289b3",
"authorId": "d3c752bd-f03f-4a49-a626-f01ba5ea1ee9"
}
]
Galima teigti, kad Koa, PostgressSQL, Azure ir React yra tinkami įrankiai norint realizuoti paprastomis CRUD opeacijomis grįsta projektą. Taip pat JWT panaudojimas autentifikacijoje/autorizacijoje yra tinkamas sprendimas norint užtikrinti puslapio bei vartotojo duomenų saugumą.