Compare commits

..

24 Commits

Author SHA1 Message Date
11b1d670d0 Merge pull request 'small fixes in kfu-m-24-1/eng-it-lean' (#88) from kfu-m-24-1/eng-it-lean into master
Reviewed-on: #88
2025-02-07 12:26:56 +03:00
Ruslan Zagitov
522ea36bb9 fix: delete broken dicitonary 2025-02-07 00:32:53 +03:00
Ruslan Zagitov
8be391c8e1 fix: /units 2025-02-07 00:30:46 +03:00
Ruslan Zagitov
ea80304c21 fix: /users 2025-02-07 00:08:03 +03:00
aa
771f75ef08 Merge pull request 'add new game, add link' (#87) from gamehub into master
Reviewed-on: #87
2025-02-05 22:26:15 +03:00
aaeii
edf9b2c82b add new game, add link 2025-02-05 22:24:05 +03:00
Ruslan Zagitov
8c3bf8a8ed fix 2025-02-05 19:34:45 +03:00
a88d3657bf Merge pull request 'kfu-m-24-1/eng-it-lean quick fix' (#86) from kfu-m-24-1/eng-it-lean into master
Reviewed-on: #86
2025-02-05 19:33:51 +03:00
Ruslan Zagitov
1656ce8690 Merge branch 'master' into kfu-m-24-1/eng-it-lean 2025-02-05 19:25:39 +03:00
Ruslan Zagitov
7cdbec53ee fix 2025-02-05 18:55:22 +03:00
eee00f0797 Merge pull request 'feat: kfu-m-24-1/eng-it-lean add /users endpoint; small features in /units' (#85) from kfu-m-24-1/eng-it-lean into master
Reviewed-on: #85
2025-02-05 13:54:09 +03:00
Ruslan Zagitov
33845b743d feat: add /users endpoint; update /units 2025-02-05 13:53:11 +03:00
Ruslan Zagitov
059139e213 feat: add /users endpoint; update /units 2025-02-05 13:45:49 +03:00
Ruslan Zagitov
005e7a0ac9 chore: add dictionaries 2025-02-05 13:25:11 +03:00
9ee59256a9 feat: generate order number (#69)
Добавил генерацию номера заказа при создании

Co-authored-by: RustamRu <kagapov.rustam@gmail.com>
Reviewed-on: #69
Reviewed-by: Primakov Alexandr Alexandrovich <primakovpro@gmail.com>
2025-02-02 15:11:59 +03:00
aa
c2784dcf45 Merge pull request 'gamehub' (#76) from gamehub into master
Reviewed-on: #76
2025-02-01 16:20:44 +03:00
64ed9b8eda Merge pull request 'kazan-explore culture quiz' (#84) from kazan-explore into master
Reviewed-on: #84
2025-02-01 15:18:40 +03:00
e9814f36bf kazan-explore culture quiz 2025-02-01 15:17:54 +03:00
0bd883df59 Merge pull request 'delete verification user' (#83) from sberhubproject into master
Reviewed-on: #83
2025-02-01 14:17:43 +03:00
1657b0c5e9 Merge pull request 'feat (connectme): add request for city' (#82) from connectme-request into master
Reviewed-on: #82
2025-02-01 14:15:36 +03:00
khisametdinov
8ee5ca5528 feat (connectme): add request for city 2025-02-01 11:53:10 +03:00
aaeii
801f9ac1e3 new games-in-cart 2025-01-31 20:18:27 +03:00
aaeii
cbbb376fd6 update json gamehub: fix format 2025-01-25 23:24:34 +03:00
aaeii
faaec7c718 update json gamehub: fix price 2025-01-25 23:16:03 +03:00
23 changed files with 1067 additions and 251 deletions

26
package-lock.json generated
View File

@ -25,6 +25,7 @@
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"mongodb": "^6.12.0", "mongodb": "^6.12.0",
"mongoose": "^8.9.2", "mongoose": "^8.9.2",
"mongoose-sequence": "^6.0.1",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"pbkdf2-password": "^1.2.1", "pbkdf2-password": "^1.2.1",
"rotating-file-stream": "^3.2.5", "rotating-file-stream": "^3.2.5",
@ -2133,6 +2134,12 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
"license": "MIT"
},
"node_modules/asynckit": { "node_modules/asynckit": {
"version": "0.4.0", "version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@ -5642,6 +5649,12 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
},
"node_modules/lodash.includes": { "node_modules/lodash.includes": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@ -5995,6 +6008,19 @@
"url": "https://opencollective.com/mongoose" "url": "https://opencollective.com/mongoose"
} }
}, },
"node_modules/mongoose-sequence": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/mongoose-sequence/-/mongoose-sequence-6.0.1.tgz",
"integrity": "sha512-uXnLCW9pu2V49Xw8BmdXdeRugd2mv+ntu3nT2Bbm33pNRmmvHE2GKA+8BASKoQt960McLX4VL78wkb492f6MoQ==",
"license": "GPL-2.0",
"dependencies": {
"async": "^3.2.5",
"lodash": "^4.17.21"
},
"peerDependencies": {
"mongoose": ">=5"
}
},
"node_modules/mongoose/node_modules/mongodb": { "node_modules/mongoose/node_modules/mongodb": {
"version": "6.12.0", "version": "6.12.0",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz",

View File

@ -39,6 +39,7 @@
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"mongodb": "^6.12.0", "mongodb": "^6.12.0",
"mongoose": "^8.9.2", "mongoose": "^8.9.2",
"mongoose-sequence": "^6.0.1",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"pbkdf2-password": "^1.2.1", "pbkdf2-password": "^1.2.1",
"rotating-file-stream": "^3.2.5", "rotating-file-stream": "^3.2.5",

View File

@ -89,6 +89,7 @@ app.use("/freetracker", require("./routers/freetracker"))
app.use("/dhs-testing", require("./routers/dhs-testing")) app.use("/dhs-testing", require("./routers/dhs-testing"))
app.use("/gamehub", require("./routers/gamehub")) app.use("/gamehub", require("./routers/gamehub"))
app.use("/esc", require("./routers/esc")) app.use("/esc", require("./routers/esc"))
app.use('/connectme', require('./routers/connectme'))
app.use(require("./error")) app.use(require("./error"))

View File

@ -0,0 +1,8 @@
const { Router } = require('express')
const router = Router()
router.get('/cities', (request, response) => {
response.send(require('./json/cities.json'))
})
module.exports = router

View File

@ -0,0 +1,85 @@
{
"data": [
{
"id": 1,
"title": "Моска"
},
{
"id": 2,
"title": "Санкт-петербург"
},
{
"id": 3,
"title": "Новосибирска"
},
{
"id": 4,
"title": "Екатеринбург"
},
{
"id": 5,
"title": "Казань"
},
{
"id": 6,
"title": "Нижний новгород"
},
{
"id": 7,
"title": "Челябинск"
},
{
"id": 8,
"title": "Самара"
},
{
"id": 9,
"title": "Омск"
},
{
"id": 10,
"title": "Ростов-на-дону"
},
{
"id": 11,
"title": "Уфа"
},
{
"id": 12,
"title": "Красноярск"
},
{
"id": 13,
"title": "Пермь"
},
{
"id": 14,
"title": "Воронеж"
},
{
"id": 15,
"title": "Волгоград"
},
{
"id": 16,
"title": "Краснодар"
},
{
"id": 17,
"title": "Тюмень"
},
{
"id": 18,
"title": "Ижевск"
},
{
"id": 19,
"title": "Барнаул"
},
{
"id": 20,
"title": "Владивосток"
}
],
"count": 20
}

View File

@ -1,5 +1,6 @@
const { Schema, model } = require('mongoose') const { Schema, model } = require('mongoose')
const { orderStatus } = require('./const') const { orderStatus } = require('./const')
const { OrderNumberModel } = require('./order.number')
const schema = new Schema({ const schema = new Schema({
phone: { phone: {
@ -27,6 +28,10 @@ const schema = new Schema({
type: String, type: String,
required: true required: true
}, },
orderNumber: {
type: String,
unique: true
},
status: { status: {
type: String, type: String,
required: true, required: true,
@ -47,6 +52,18 @@ const schema = new Schema({
}, },
}) })
schema.pre('save', async function (next) {
if (this.isNew) {
const counter = await OrderNumberModel.findOneAndUpdate(
{ _id: 'orderNumber' },
{ $inc: { sequenceValue: 1 } },
{ new: true, upsert: true }
)
this.orderNumber = counter.sequenceValue.toString()
}
next()
})
schema.set('toJSON', { schema.set('toJSON', {
virtuals: true, virtuals: true,
versionKey: false, versionKey: false,

View File

@ -0,0 +1,14 @@
const { Schema, model } = require('mongoose')
const schema = new Schema({
_id: {
type: String,
required: true,
},
sequenceValue: {
type: Number,
default: 0
}
})
exports.OrderNumberModel = model('dry-wash-order-number', schema)

View File

@ -9,7 +9,11 @@ router.get("/update-like", (request, response) => {
}); });
router.get("/categories", (request, response) => { router.get("/categories", (request, response) => {
response.send(require("./json/categories/success.json")); response.send(require("./json/home-page-data/all-games.json"));
});
router.get("/favourites", (request, response) => {
response.send(require("./json/home-page-data/all-games.json"));
}); });
router.get("/shopping-cart", (request, response) => { router.get("/shopping-cart", (request, response) => {

View File

@ -1,186 +0,0 @@
{
"success": true,
"data": {
"games1": [
{
"id": 1,
"title": "How to Survive",
"price": 259,
"old_price": 500,
"image": "sales_game1",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 2,
"title": "Red Solstice 2 Survivors",
"price": 561,
"image": "sales_game2",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 3,
"title": "Sons Of The Forests",
"price": 820,
"old_price": 1100,
"image": "new_game2",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 4,
"title": "The Witcher 3: Wild Hunt",
"price": 990,
"old_price": 1200,
"image": "leaders_game4",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 5,
"title": "Atomic Heart",
"price": 1200,
"old_price": 2500,
"image": "leaders_game5",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 6,
"title": "Crab Game",
"price": 600,
"old_price": 890,
"image": "leaders_game6",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
}
],
"games2": [
{
"id": 7,
"title": "Alpha League",
"price": 299,
"image": "new_game1",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 8,
"title": "Sons Of The Forests",
"price": 820,
"old_price": 1100,
"image": "new_game2",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 9,
"title": "Pacific Drives",
"price": 1799,
"image": "new_game3",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 4,
"title": "The Witcher 3: Wild Hunt",
"price": 990,
"old_price": 1200,
"image": "leaders_game4",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 5,
"title": "Atomic Heart",
"price": 1200,
"old_price": 2500,
"image": "leaders_game5",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 6,
"title": "Crab Game",
"price": 600,
"old_price": 890,
"image": "leaders_game6",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
}
],
"games3": [
{
"id": 10,
"title": "Elden Ring",
"price": 3295,
"old_price": 3599,
"image": "leaders_game2",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 11,
"title": "Counter-Strike 2",
"price": 479,
"image": "leaders_game1",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 12,
"title": "PUBG: BATTLEGROUNDS",
"price": 199,
"image": "leaders_game3",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 4,
"title": "The Witcher 3: Wild Hunt",
"price": 990,
"old_price": 1200,
"image": "leaders_game4",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 5,
"title": "Atomic Heart",
"price": 1200,
"old_price": 2500,
"image": "leaders_game5",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
},
{
"id": 6,
"title": "Crab Game",
"price": 600,
"old_price": 890,
"image": "leaders_game6",
"os": "windows",
"fav1": "star1",
"fav2": "star2"
}
]
}
}

View File

@ -5,7 +5,7 @@
{ {
"username": ользователь1", "username": ользователь1",
"text": "Текст комментария 1", "text": "Текст комментария 1",
"likes": 9, "likes": 11,
"rating": 8, "rating": 8,
"date": "2025-03-01T10:00:00Z" "date": "2025-03-01T10:00:00Z"
}, },
@ -19,7 +19,7 @@
{ {
"username": ользователь3", "username": ользователь3",
"text": "Текст комментария 3", "text": "Текст комментария 3",
"likes": 5, "likes": 2,
"rating": 3, "rating": 3,
"date": "2025-02-01T10:00:00Z" "date": "2025-02-01T10:00:00Z"
}, },

View File

@ -3,144 +3,183 @@
"data": [ "data": [
{ {
"id": 1, "id": 1,
"name": "The Witcher 3: Wild Hunt", "title": "Elden Ring",
"image": "game1", "image": "game17",
"text": "$10", "price": 3295,
"imgPath": "img_top_1", "old_price": 3599,
"description": "Эпическая RPG с открытым миром, в которой Геральт из Ривии охотится на монстров и раскрывает политические заговоры.", "imgPath": "img_top_17",
"description": "Крупномасштабная RPG, действие которой происходит в обширном открытом мире c богатой мифологией и множеством опасных врагов.",
"category": "RPG" "category": "RPG"
}, },
{ {
"id": 2, "id": 2,
"name": "Red Dead Redemption 2", "title": "The Witcher 3: Wild Hunt",
"image": "game1",
"price": 990,
"old_price": 1200,
"imgPath": "img_top_1",
"description": "Эпическая RPG с открытым миром, в которой Геральт из Ривии охотится на монстров и раскрывает политические заговоры.",
"category": "RPG"
},
{
"id": 17,
"title": "Red Dead Redemption 2",
"image": "game2", "image": "game2",
"text": "$10", "price": 980,
"old_price": 3800,
"imgPath": "img_top_2", "imgPath": "img_top_2",
"description": "Приключенческая игра с открытым миром на Диком Западе, рассказывающая историю Артура Моргана.", "description": "Приключенческая игра с открытым миром на Диком Западе, рассказывающая историю Артура Моргана.",
"category": "Adventures" "category": "Adventures"
}, },
{ {
"id": 3, "id": 3,
"name": "Forza Horizon 5", "title": "Forza Horizon 5",
"image": "game3", "image": "game3",
"text": "$10", "price": 1900,
"imgPath": "img_top_3", "imgPath": "img_top_3",
"description": "Гоночная игра с огромным открытым миром, действие которой происходит в Мексике.", "description": "Гоночная игра с огромным открытым миром, действие которой происходит в Мексике.",
"category": "Race" "category": "Race"
}, },
{ {
"id": 4, "id": 4,
"name": "Atomic Heart", "title": "Atomic Heart",
"image": "game4", "image": "game4",
"text": "$10", "price": 1200,
"old_price": 2500,
"imgPath": "img_top_4", "imgPath": "img_top_4",
"description": "Экшен-шутер с элементами RPG, разворачивающийся в альтернативной Советской России.", "description": "Экшен-шутер с элементами RPG, разворачивающийся в альтернативной Советской России.",
"category": "Shooters" "category": "Shooters"
}, },
{ {
"id": 5, "id": 5,
"name": "Counter-Strike 2", "title": "Counter-Strike 2",
"image": "game5", "image": "game5",
"text": "$10", "price": 479,
"imgPath": "img_top_5", "imgPath": "img_top_5",
"description": "Популярный онлайн-шутер с соревновательным геймплеем и тактическими элементами.", "description": "Популярный онлайн-шутер с соревновательным геймплеем и тактическими элементами.",
"category": "Shooters" "category": "Shooters"
}, },
{ {
"id": 6, "id": 6,
"name": "Grand Theft Auto V", "title": "Grand Theft Auto V",
"image": "game6", "image": "game6",
"text": "$10", "price": 700,
"imgPath": "img_top_6", "imgPath": "img_top_6",
"description": "Игра с открытым миром, где можно погрузиться в криминальный мир Лос-Сантоса.", "description": "Игра с открытым миром, где можно погрузиться в криминальный мир Лос-Сантоса.",
"category": "Adventures" "category": "Adventures"
}, },
{ {
"id": 7, "id": 7,
"name": "Assassins Creed IV: Black Flag", "title": "Assassins Creed IV: Black Flag",
"image": "game7", "image": "game7",
"text": "$10", "price": 1100,
"imgPath": "img_top_7", "imgPath": "img_top_7",
"description": "Приключенческая игра о пиратах и морских сражениях в эпоху золотого века пиратства.", "description": "Приключенческая игра о пиратах и морских сражениях в эпоху золотого века пиратства.",
"category": "Adventures" "category": "Adventures"
}, },
{ {
"id": 8, "id": 8,
"name": "Spider-Man", "title": "Spider-Man",
"image": "game8", "image": "game8",
"text": "$10", "price": 3800,
"imgPath": "img_top_8", "imgPath": "img_top_8",
"description": "Игра о супергерое Человеке-пауке с захватывающими битвами и паркуром по Нью-Йорку.", "description": "Игра о супергерое Человеке-пауке с захватывающими битвами и паркуром по Нью-Йорку.",
"category": "Action" "category": "Action"
}, },
{ {
"id": 9, "id": 9,
"name": "Assassins Creed Mirage", "title": "Assassins Creed Mirage",
"image": "game9", "image": "game9",
"text": "$10", "price": 1600,
"imgPath": "img_top_9", "imgPath": "img_top_9",
"description": "Приключенческая игра с упором на скрытность, вдохновленная классическими частями серии.", "description": "Приключенческая игра с упором на скрытность, вдохновленная классическими частями серии.",
"category": "Action" "category": "Action"
}, },
{ {
"id": 10, "id": 10,
"name": "Assassins Creed Valhalla", "title": "Assassins Creed Valhalla",
"image": "game10", "image": "game10",
"text": "$10", "price": 800,
"old_price": 2200,
"imgPath": "img_top_10", "imgPath": "img_top_10",
"description": "RPG с открытым миром о викингах, включающая битвы, исследования и строительство поселений.", "description": "RPG с открытым миром о викингах, включающая битвы, исследования и строительство поселений.",
"category": "RPG" "category": "RPG"
}, },
{ {
"id": 11, "id": 11,
"name": "ARK: Survival Evolved", "title": "ARK: Survival Evolved",
"image": "game11", "image": "game11",
"text": "$10", "price": 790,
"imgPath": "img_top_11", "imgPath": "img_top_11",
"description": "Выживание в открытом мире с динозаврами, строительством и многопользовательскими элементами.", "description": "Выживание в открытом мире с динозаврами, строительством и многопользовательскими элементами.",
"category": "Simulators" "category": "Simulators"
}, },
{ {
"id": 12, "id": 12,
"name": "FIFA 23", "title": "FIFA 23",
"image": "game12", "image": "game12",
"text": "$10", "price": 3900,
"imgPath": "img_top_12", "imgPath": "img_top_12",
"description": "Популярный футбольный симулятор с улучшенной графикой и реалистичным геймплеем.", "description": "Популярный футбольный симулятор с улучшенной графикой и реалистичным геймплеем.",
"category": "Sports" "category": "Sports"
}, },
{ {
"id": 13, "id": 13,
"name": "Dirt 5", "title": "Dirt 5",
"image": "game13", "image": "game13",
"text": "$10", "price": 2300,
"imgPath": "img_top_13", "imgPath": "img_top_13",
"description": "Аркадная гоночная игра с фокусом на ралли и внедорожных соревнованиях.", "description": "Аркадная гоночная игра с фокусом на ралли и внедорожных соревнованиях.",
"category": "Race" "category": "Race"
}, },
{ {
"id": 14, "id": 14,
"name": "Cyberpunk 2077", "title": "Cyberpunk 2077",
"image": "game14", "image": "game14",
"text": "$10", "price": 3400,
"imgPath": "img_top_14", "imgPath": "img_top_14",
"description": "RPG в киберпанк-сеттинге с нелинейным сюжетом и детализированным открытым миром.", "description": "RPG в киберпанк-сеттинге с нелинейным сюжетом и детализированным открытым миром.",
"category": "RPG" "category": "RPG"
}, },
{ {
"id": 15, "id": 15,
"name": "Age of Empires IV", "title": "Age of Empires IV",
"image": "game15", "image": "game15",
"text": "$10", "price": 3200,
"imgPath": "img_top_15", "imgPath": "img_top_15",
"description": "Классическая стратегия в реальном времени с историческими кампаниями.", "description": "Классическая стратегия в реальном времени с историческими кампаниями.",
"category": "Strategies" "category": "Strategies"
}, },
{ {
"id": 16, "id": 16,
"name": "Civilization VI", "title": "Civilization VI",
"image": "game16", "image": "game16",
"text": "$10", "price": 4200,
"imgPath": "img_top_16", "imgPath": "img_top_16",
"description": "Глобальная пошаговая стратегия, в которой игроки строят и развивают цивилизации.", "description": "Глобальная пошаговая стратегия, в которой игроки строят и развивают цивилизации.",
"category": "Strategies" "category": "Strategies"

View File

@ -0,0 +1,16 @@
{
"success": true,
"data": {
"ids": [
3,
13,
1,
10,
4,
9,
15,
6,
7
]
}
}

View File

@ -3,43 +3,51 @@
"data": { "data": {
"topSail": [ "topSail": [
{ {
"id": 1,
"image": "game1", "image": "game1",
"text": "$10", "price": 1500,
"imgPath": "img_top_1" "imgPath": "img_top_1"
}, },
{ {
"id": 2,
"image": "game2", "image": "game2",
"text": "$10", "price": 980,
"imgPath": "img_top_2" "imgPath": "img_top_2"
}, },
{ {
"id": 3,
"image": "game3", "image": "game3",
"text": "$10", "price": 1900,
"imgPath": "img_top_3" "imgPath": "img_top_3"
}, },
{ {
"id": 4,
"image": "game4", "image": "game4",
"text": "$10", "price": 1200,
"imgPath": "img_top_4" "imgPath": "img_top_4"
}, },
{ {
"id": 5,
"image": "game5", "image": "game5",
"text": "$10", "price": 479,
"imgPath": "img_top_5" "imgPath": "img_top_5"
}, },
{ {
"id": 6,
"image": "game6", "image": "game6",
"text": "$10", "price": 700,
"imgPath": "img_top_6" "imgPath": "img_top_6"
}, },
{ {
"id": 7,
"image": "game7", "image": "game7",
"text": "$10", "price": 1100,
"imgPath": "img_top_7" "imgPath": "img_top_7"
}, },
{ {
"id": 8,
"image": "game8", "image": "game8",
"text": "$10", "price": 3800,
"imgPath": "img_top_8" "imgPath": "img_top_8"
} }
], ],

View File

@ -788,5 +788,121 @@
"image_url": "w_six" "image_url": "w_six"
} }
] ]
},
"history": {
"intro_text": "Let's see how well you know UNICS!",
"intro_image": "culture",
"questions": [
{
"question": "When was Kazan founded?",
"options": [
"1005",
"1156",
"1230",
"1323"
],
"correct_answer": "1005",
"image_url": "culture"
},
{
"question": "What is the main river flowing through Kazan?",
"options": [
"Volga",
"Kazanka",
"Kama",
"Izh"
],
"correct_answer": "Kazanka",
"image_url": "culture"
},
{
"question": "Who was the first khan of Kazan?",
"options": [
"Ulugh Muhammad",
"Akhmat",
"Shah Ali",
"Mamuka"
],
"correct_answer": "Ulugh Muhammad",
"image_url": "culture"
},
{
"question": "What is the name of Kazan's main sports complex where the 2013 Universiade was held?",
"options": [
"Kazan Arena",
"Tatneft Arena",
"Bugulma Arena",
"Ak Bars Sports Palace"
],
"correct_answer": "Kazan Arena",
"image_url": "culture"
},
{
"question": "Which mosque in Kazan is considered one of the largest in Russia?",
"options": [
"Kul Sharif Mosque",
"Mari El Mosque",
"Aisha Mosque",
"Imam Muhammad Mosque"
],
"correct_answer": "Kul Sharif Mosque",
"image_url": "culture"
},
{
"question": "What is the name of the square where the Kazan Kremlin and Kul Sharif Mosque are located?",
"options": [
"Vakhitov Square",
"Freedom Square",
"Kremlin Square",
"Revolution Square"
],
"correct_answer": "Kremlin Square",
"image_url": "culture"
},
{
"question": "What symbol of Kazan is depicted on the city's coat of arms?",
"options": [
"Dragon",
"Tiger",
"Lion",
"Eagle"
],
"correct_answer": "Dragon",
"image_url": "culture"
},
{
"question": "Who was the architect of the Kazan Kremlin?",
"options": [
"Ivan Zarudny",
"Fyodor Benjamin",
"Andrey Ushakov",
"Yury Dashevsky"
],
"correct_answer": "Andrey Ushakov",
"image_url": "culture"
},
{
"question": "Which of these universities is located in Kazan?",
"options": [
"Moscow State University",
"Kazan Federal University",
"St. Petersburg Polytechnic University",
"Novosibirsk State University"
],
"correct_answer": "Kazan Federal University",
"image_url": "culture"
},
{
"question": "What is the name of the largest street in Kazan, which is also the center of the city's nightlife?",
"options": [
"Kremlin Street",
"Bauman Street",
"Pushkin Street",
"Kayum Nasyri Street"
],
"correct_answer": "Bauman Street",
"image_url": "culture"
}
]
} }
} }

View File

@ -788,5 +788,121 @@
"image_url": "w_six" "image_url": "w_six"
} }
] ]
},
"history": {
"intro_text": "Давайте узнаем, насколько вы хорошо знаете историю Казани!",
"intro_image": "culture",
"questions": [
{
"question": "Когда Казань была основана?",
"options": [
"1000 год",
"1156 год",
"1230 год",
"1323 год"
],
"correct_answer": "1000 год",
"image_url": "culture"
},
{
"question": "Как называется главная река, протекающая через Казань?",
"options": [
"Волга",
"Казанка",
"Кама",
"Иж"
],
"correct_answer": "Казанка",
"image_url": "culture"
},
{
"question": "Кто был первым казанским ханом?",
"options": [
"Улу-Мухаммед",
"Ахмат",
"Шах-Али",
"Мамука"
],
"correct_answer": "Улу-Мухаммед",
"image_url": "culture"
},
{
"question": "Как называется главный спортивный комплекс Казани, где проводились Универсиада 2013 года?",
"options": [
"Казан Арена",
"Татнефть Арена",
"Бугульминская арена",
"Дворец спорта \"Ак Барс\""
],
"correct_answer": "Казан Арена",
"image_url": "culture"
},
{
"question": "Какая мечеть в Казани считается одной из самых больших в России?",
"options": [
"Мечеть Кул Шариф",
"Мечеть Марий Эл",
"Мечеть Айша",
"Мечеть имама Мухаммада"
],
"correct_answer": "Мечеть Кул Шариф",
"image_url": "culture"
},
{
"question": "Как называется площадь, на которой расположены Казанский Кремль и мечеть Кул Шариф?",
"options": [
"Площадь Вахитова",
"Площадь Свободы",
"Площадь Кремля",
"Площадь Революции"
],
"correct_answer": "Площадь Кремля",
"image_url": "culture"
},
{
"question": "Какой символ Казани изображён на гербе города?",
"options": [
"Дракон",
"Тигр",
"Лев",
"Орел"
],
"correct_answer": "Дракон",
"image_url": "culture"
},
{
"question": "Какой архитектор спроектировал Казанский Кремль?",
"options": [
"Иван Зарудный",
"Фёдор Бенжамин",
"Андрей Ушаков",
"Юрий Дашевский"
],
"correct_answer": "Андрей Ушаков",
"image_url": "culture"
},
{
"question": "Какой из этих вузов находится в Казани?",
"options": [
"Московский государственный университет",
"Казанский федеральный университет",
"Санкт-Петербургский политехнический университет",
"Новосибирский государственный университет"
],
"correct_answer": "Казанский федеральный университет",
"image_url": "culture"
},
{
"question": "Как называется крупнейшая в Казани улица, которая также является центром ночной жизни города?",
"options": [
"Кремлевская улица",
"Баумана улица",
"Пушкина улица",
"Каюма Насыри улица"
],
"correct_answer": "Баумана улица",
"image_url": "culture"
}
]
} }
} }

View File

@ -788,5 +788,121 @@
"image_url": "w_six" "image_url": "w_six"
} }
] ]
},
"history": {
"intro_text": "Әйдәгез, Казан тарихын белүегезне ачыклыйк!",
"intro_image": "culture",
"questions": [
{
"question": "Казан кайчан нигезләнгән?",
"options": [
"1000 ел",
"1156 ел",
"1230 ел",
"1323 ел"
],
"correct_answer": "1000 ел",
"image_url": "culture"
},
{
"question": "Казан аша агучы төп елга ничек атала?",
"options": [
"Идел",
"Казанка",
"Кама",
"Иж"
],
"correct_answer": "Казанка",
"image_url": "culture"
},
{
"question": "Казанның беренче ханы кем булган?",
"options": [
"Олуг Мөхәммәт",
"Әхмәт",
"Шаһ-Әли",
"Мамука"
],
"correct_answer": "Олуг Мөхәммәт",
"image_url": "culture"
},
{
"question": "2013 елда Универсиада узган Казанның төп спорт комплексы ничек атала?",
"options": [
"Казан Арена",
"Татнефть Арена",
"Бөгелмә Арена",
"Ак Барс спорт сарае"
],
"correct_answer": "Казан Арена",
"image_url": "culture"
},
{
"question": "Казандагы иң зур мәчетләрнең берсе Россиядәге кайсысы?",
"options": [
"Кол Шәриф мәчете",
"Марий Эл мәчете",
"Айша мәчете",
"Имам Мөхәммәт мәчете"
],
"correct_answer": "Кол Шәриф мәчете",
"image_url": "culture"
},
{
"question": "Казан Кремле һәм Кол Шәриф мәчете урнашкан мәйдан ничек атала?",
"options": [
"Вахитов мәйданы",
"Ирек мәйданы",
"Кремль мәйданы",
"Революция мәйданы"
],
"correct_answer": "Кремль мәйданы",
"image_url": "culture"
},
{
"question": "Казан гербында кайсы символ сурәтләнгән?",
"options": [
"Аждаһа",
"Юлбарыс",
"Арслан",
"Бүре"
],
"correct_answer": "Аждаһа",
"image_url": "culture"
},
{
"question": "Казан Кремленең архитекторын атагыз.",
"options": [
"Иван Зарудный",
"Фёдор Бенжамин",
"Андрей Ушаков",
"Юрий Дашевский"
],
"correct_answer": "Андрей Ушаков",
"image_url": "culture"
},
{
"question": "Бу югары уку йортларының кайсысы Казанда урнашкан?",
"options": [
"Мәскәү дәүләт университеты",
"Казан федераль университеты",
"Санкт-Петербург политехник университеты",
"Новосибирск дәүләт университеты"
],
"correct_answer": "Казан федераль университеты",
"image_url": "culture"
},
{
"question": "Казандагы иң зур урам ничек атала? Ул шулай ук шәһәрнең төнге тормыш үзәге булып тора.",
"options": [
"Кремль урамы",
"Бауман урамы",
"Пушкин урамы",
"Каюм Насыйри урамы"
],
"correct_answer": "Бауман урамы",
"image_url": "culture"
}
]
} }
} }

View File

@ -1 +1,26 @@
[{"id":1,"description":"10 слов в Data Science","imageFilename":"kart1.jpg","words":[2,3,4,5,6,7,8,9,10,11,12]}] [
{
"id": 1,
"description": "10 слов в Data Science",
"imageFilename": "kart1.jpg",
"words": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
},
{
"id": 2,
"description": "Job Interview",
"imageFilename": "kart1.jpg",
"words": [13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
},
{
"id": 3,
"description": "ReactJS",
"imageFilename": "kart1.jpg",
"words": [23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
},
{
"id": 4,
"description": "NodeJS",
"imageFilename": "kart1.jpg",
"words": [33, 34, 35, 36, 37, 38, 39, 40, 41, 42]
}
]

View File

@ -1,8 +1,10 @@
const router = require('express').Router(); const router = require('express').Router();
const wordsRouter = require('./words');
const dictionariesRouter = require('./dictionaries'); const dictionariesRouter = require('./dictionaries');
const unitsRouter = require('./units'); const unitsRouter = require('./units');
const gigachatRouter = require('./gigachat'); const gigachatRouter = require('./gigachat');
const usersRouter = require('./users');
module.exports = router; module.exports = router;
const delay = const delay =
@ -12,6 +14,8 @@ const delay =
}; };
router.use(delay()); router.use(delay());
router.use('/words', wordsRouter);
router.use('/dictionaries', dictionariesRouter); router.use('/dictionaries', dictionariesRouter);
router.use('/units', unitsRouter); router.use('/units', unitsRouter);
router.use('/gigachat', gigachatRouter); router.use('/gigachat', gigachatRouter);
router.use('/users', usersRouter);

View File

@ -4,9 +4,45 @@ const router = require('express').Router();
module.exports = router; module.exports = router;
const data = require('./data/units.json'); const data = require('./units.json');
router.get('/', (req, res) => { router.get('/', (req, res) => {
res.send(data); // for every data set author from users and save it to authoredData variable
const users = require('../users/users.json');
const authoredData = data.map((unit) => {
const user = users.find((user) => user.public_id == unit.author);
let authoredUnit = undefined;
if (user) {
authoredUnit = { ...unit, author: user };
}
return authoredUnit;
});
res.send(authoredData);
});
router.post('/:id', (req, res) => {
const id = parseInt(req.params.id);
const updatedUnit = req.body;
if (!updatedUnit) {
return res.status(400).send('No unit to be added');
}
if (!data) {
return res.status(500).send('No data to be updated');
}
const index = data.findIndex((unit) => unit.id === id);
if (index < 0) {
return res.status(404).send('Not found');
}
data.splice(index, 1);
data.push({...updatedUnit, author: updatedUnit.author.public_id});
res.status(200).send(data);
}); });
router.put('/', (req, res) => { router.put('/', (req, res) => {
@ -16,17 +52,17 @@ router.put('/', (req, res) => {
return res.status(400).send('No new unit to be added'); return res.status(400).send('No new unit to be added');
} }
if (!newUnit.author) {
return res.status(400).send('User is not logged in!');
}
if (!data) { if (!data) {
return res.status(500).send('No data to be updated'); return res.status(500).send('No data to be updated');
} }
const newId = data.length + 1; const newId = data.length + 1;
const filename = newUnit.name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); data.push({ ...newUnit, id: newId });
fs.writeFileSync(path.join(__dirname, 'data', `${filename}.md`), newUnit.content);
data.push({ id: newId, filename: filename, name: newUnit.name });
fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
res.status(200).send(data); res.status(200).send(data);
}); });
@ -39,24 +75,19 @@ router.delete('/:id', (req, res) => {
} }
data.splice(index, 1); data.splice(index, 1);
fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
res.send({ message: `Unit with ID ${id} deleted` }); res.send({ message: `Unit with ID ${id} deleted` });
}); });
router.get('/:id', (req, res) => { router.get('/:id', (req, res) => {
const users = require('../users/users.json');
const id = parseInt(req.params.id); const id = parseInt(req.params.id);
const unit = data.find((unit) => unit.id === id); const unit = data.find((unit) => unit.id === id);
if (!unit) { if (!unit) {
return res.status(404).send('Not found'); return res.status(404).send('Unit not found');
} }
const unitFilepath = path.join(__dirname, 'data', `${unit.filename}.md`); const user = users.find((user) => user.public_id == unit.author);
const unitContent = fs.readFileSync(unitFilepath, 'utf-8');
if (!unitContent) { res.send({...unit, author: user});
return res.status(404).send('Not found');
}
res.send({ ...unit, content: unitContent });
}); });

View File

@ -0,0 +1,20 @@
[
{
"content": "# Цель урока\n\nИзучение структуры документации программы с блоком кода.\n\n## Лексика\n\n### Базовая лексика:\n\n- Documentation документация\n- Code block блок кода\n- Description описание\n- Function функция\n- Variable переменная\n- Comment комментарий\n\n### Расширенная лексика:\n\n- API интерфейс прикладного программирования\n- Method метод\n- Class класс\n- Library библиотека\n- Framework фреймворк\n\n## Грамматический фокус\n\nПравило: Структура документации программы должна включать краткое описание, блок кода и примеры использования.\n\nПример:\n\nDocumentation for a program typically includes the following sections:\n\n1. **Description**: A brief overview of what the program does and its purpose.\n2. **Code Block**: The actual code that implements the functionality described in the first section.\n3. **Examples**: One or more examples demonstrating how to use the features described in the documentation.\n\nТипичные ошибки и как их избежать: Ошибки могут возникнуть из-за недостаточного описания функционала или неправильного форматирования кода. Чтобы избежать этого, важно тщательно проработать каждый раздел документации и убедиться, что все примеры корректны и понятны.\n\n## Контекстуализация\n\nТекст для анализа:\n\n**Description**: This is a simple Python script that calculates the average value of a list of numbers.\n\n**Code Block**: \n```python\ndef calculate_average(numbers):\n \"\"\"Calculate the average value of a list of numbers\"\"\"\n return sum(numbers)/len(numbers)\n```\n\nПримеры использования:\n\n```python\n# Example usage\nnumbers = [10, 20, 30]\naverage = calculate_average(numbers)\nprint(\"The average value of the list\", numbers, \"is\", average)\n```\n\n## Упражнения\n\nПисьменное задание: Написать документацию для простой функции на языке Python, которая принимает список чисел и возвращает среднее значение. Включить описание, код блока и пример использования.\n\nУстная практика: Ролевой диалог между разработчиком и техническим писателем о структуре и содержании документации программы.\n\nАналитическое задание: Проанализировать существующую документацию программы и найти ошибки или неясности. Предложить улучшения.\n\n## Домашнее задание\n\nТекстовые задачи:\n\n- Написать документацию для другой функции на языке Python, используя правильную структуру.\n- Исправить ошибки в существующей документации программы.\n- Перевести фрагмент документации на русский язык, сохраняя точность и стиль.\n",
"id": 2,
"author": "1738707541324",
"name": "Документация программы"
},
{
"content": "### Цель урока:\nИзучение ключевых слов и фраз, связанных с процессом трудоустройства, а также освоение базовой структуры диалога на собеседовании.\n\n### Лексика:\n**Базовая лексика:**\n1. **Job interview** собеседование при приеме на работу\n2. **Resume / CV** резюме\n3. **Cover letter** сопроводительное письмо\n4. **Interviewer** интервьюер\n5. **Application form** анкета при приеме на работу\n6. **Salary** зарплата\n7. **Benefits** льготы\n\n**Расширенная лексика:**\n1. **To apply for a job** подавать заявку на работу\n2. **To be offered the job** получить предложение о работе\n3. **To negotiate salary** вести переговоры о зарплате\n4. **To accept the offer** принять предложение\n5. **To decline the offer** отклонить предложение\n6. **To resign from your current position** подать заявление об уходе с текущей работы\n7. **To start working at the company** начать работать в компании\n8. **Probation period** испытательный срок\n9. **References** рекомендации\n10. **Work experience** опыт работы\n\n### Грамматический фокус:\n**Правило:**\nСтруктура простого вопроса на английском языке:\n- Общий вопрос: \"Do you have any questions?\"\n- Специальный вопрос: \"What are your strengths and weaknesses?\"\n\n**Пример:**\nОбщий вопрос: \"How do you feel about this job opportunity?\"\nСпециальный вопрос: \"Can you tell me about your previous work experience?\"\n\n**Типичные ошибки и как их избежать:**\nОшибка: Неправильное использование порядка слов в вопросах.\nРешение: Практиковать построение вопросов до автоматизма.\n\n### Контекстуализация:\n**Текст для анализа:**\n\"I'm applying for the position of a marketing manager at XYZ Company. Here is my resume.\"\n\"Thank you for considering me. Can you please tell me more about the responsibilities of this role?\"\n\"Sure, let me give you an overview.\"\n\n### Упражнения:\n**Письменное задание:**\nСоставьте список из 5 вопросов, которые вы бы задали на собеседовании. Используйте простые вопросы и специальные вопросы.\n\n**Устная практика:**\nРолевая игра: один студент играет роль интервьюера, другой кандидата на должность. Меняйтесь ролями.\n\n**Аналитическое задание:**\nНайдите и исправьте ошибки в следующем письме:\n\"Dear HR Manager,\n\nMy name is John Smith and I am writing to apply for the position of Sales Representative at ABC Inc. I enclose my resume for your review.\n\nI believe that my skills and experiences make me an ideal candidate for this position. In my current role as a sales representative at XYZ Corp, I have consistently met or exceeded my sales targets. Additionally, I possess strong communication and negotiation skills which will enable me to effectively represent your products and services.\n\nIf you would like to schedule an interview, please contact me at your convenience. Thank you for your time and consideration.\n\nBest regards,\nJohn Smith\"\n\n### Домашнее задание:\n**Текстовые задачи:**\n1. Написать сопроводительное письмо для конкретной вакансии, используя расширенную лексику.\n2. Составить резюме для воображаемой должности, включая все необходимые разделы.\n3. Перевести текст собеседования на английский язык, сохраняя структуру и смысл.",
"id": 3,
"author": "1738707541324",
"name": "Job Interview"
},
{
"content": "# Multifunctional Verbs\n\n## Overview\n\nThis unit focuses on the use of multifunctional verbs in English. These verbs are able to express multiple meanings depending on their use in a sentence.\n\n## Learning Objectives\n\nBy the end of this unit, you will be able to:\n\n* Identify the different forms of the main multifunctional verb.\n* Explain how these forms can be used interchangeably in sentences.\n* Demonstrate the correct usage of the three forms of the multifunctional verb by providing sentences and examples.\n\n## Vocabulary Review\n\n| Term | Definition |\n| ---- | -------------------------------------------------------- |\n| Be | To express a present or ongoing state of being. |\n| Have | To express ownership or possession. |\n| Do | To express an action to be done, future action or habit. |\n\n## Activities\n\n### Activity 1: Identify the Different Forms of the Main Multifunctional Verb\n\n* Read through each sentence and identify if the verb is used in its present tense (is), past tense (was/were), or future tense (will, would).\n* Discuss how this usage can vary depending on context.\n* Write down sentences that use different forms to illustrate your points.\n\n1. **Sentence 1**\n\n : \"The cat is sleeping.\"\n * Present tense: The cat is sleeping.\n * Past tense: The cat slept.\n * Future tense: The cat will sleep.\n2. **Sentence 2**\n\n : \"I have a dog at home.\"\n * Present tense: I have a dog.\n * Past tense: I had a dog.\n * Future tense: I will have a dog.\n3. **Sentence 3**\n\n : \"We are going on a hike tomorrow.\"\n * Present tense: We are going on a hike.\n * Past tense: We went on a hike.\n * Future tense: We will go on a hike.\n4. **Sentence 4**\n\n : \"He has been studying all day.\"\n * Present tense: He is studying.\n * Past tense: He studied.\n * Future tense: He will study.\n5. **Sentence 5**\n\n : \"We are going to buy some groceries later today.\"\n * Present tense: We are going to buy some groceries.\n * Past tense: We bought some groceries.\n * Future tense: We will buy some groceries.\n\n### Activity 2: Explain How These Forms Can Be Used Interchangeably in Sentences\n\n* Read through a sentence and identify the present, past, and future tense uses.\n* In pairs, explain why these forms are used interchangeably.\n* Provide examples of sentences that demonstrate this usage.\n* Highlight how the context changes the meaning.\n\n### Activity 3: Correct Usage of the Three Forms of the Multifunctional Verb\n\n* Read through a sentence and identify which form is being used.\n* In pairs, discuss why these forms are used in certain situations.\n* Provide sentences that demonstrate the correct usage of the three forms.",
"id": 1,
"author": "1738707541324",
"name": "Multifunctional Verbs"
}
]

View File

@ -0,0 +1,53 @@
const router = require('express').Router();
const fs = require('fs');
module.exports = router;
let data = require('./users.json');
const path = require('path');
router.get('/', (req, res) => {
res.send(data);
});
router.post('/', (req, res) => {
const newUser = req.body;
data.push(newUser);
fs.writeFileSync(path.join(__dirname, 'users.json'), JSON.stringify(data));
res.send(data);
});
router.post('/login', (req, res) => {
const { email, password } = req.body;
const user = data.find((user) => user.email === email && user.password === password);
if (!user) {
res.status(404).send('Пользователь не найден');
}
res.json({ public_id: user.public_id });
});
router.get('/account', (req, res) => {
const { public_id } = req.query;
const user = data.find((user) => user.public_id == public_id);
if (!user) {
res.status(404).send('Пользователь не найден');
}
res.send({ ...user, id: -1 });
});
router.post('/account/save', (req, res) => {
const updatedUser = req.body;
const { public_id } = updatedUser;
const index = data.findIndex((user) => user.public_id == public_id);
if (!index || index === -1) {
res.status(404).send('Пользователь не найден');
}
data[index] = { ...data[index], ...updatedUser, id: data[index].id, password: data[index].password };
fs.writeFileSync(path.join(__dirname, 'users.json'), JSON.stringify(data));
res.status(200);
});

View File

@ -0,0 +1 @@
[{"id":1738707541324,"public_id":1738707541324,"email":"1@gmail.com","password":"1","age":"22","nickname":"324324","about":"Чиловый "}]

View File

@ -132,5 +132,306 @@
"During model validation, its ability to make accurate predictions on new data is checked.", "During model validation, its ability to make accurate predictions on new data is checked.",
"Validation showed that the model is robust against changes in data and has low generalization error." "Validation showed that the model is robust against changes in data and has low generalization error."
] ]
},
{
"id": 13,
"word": "resume",
"translation": "резюме",
"definition": "a document containing a summary of your work experience, education, and skills that you submit when applying for a job",
"synonyms": ["CV", "curriculum vitae"],
"examples": [
"Make sure to update your resume before the interview."
]
},
{
"id": 14,
"word": "interviewer",
"translation": "интервьюер",
"definition": "the person who conducts an interview, typically a representative of the company or organization offering the job",
"synonyms": ["questioner", "examiner"],
"examples": [
"The interviewer asked about my previous work experiences."
]
},
{
"id": 15,
"word": "qualification",
"translation": "квалификация",
"definition": "a quality, skill, or attribute that makes someone suitable for a particular job or activity",
"synonyms": ["credential", "competence"],
"examples": [
"Do you have any qualifications in project management?"
]
},
{
"id": 16,
"word": "experience",
"translation": "опыт",
"definition": "practical contact with and observation of facts or events, especially those gained through employment",
"synonyms": ["background", "track record"],
"examples": [
"She has five years of experience in marketing."
]
},
{
"id": 17,
"word": "skillset",
"translation": "набор навыков",
"definition": "the range of skills and abilities possessed by an individual",
"synonyms": ["abilities", "talents"],
"examples": [
"Her skillset includes proficiency in several programming languages."
]
},
{
"id": 18,
"word": "cover letter",
"translation": "сопроводительное письмо",
"definition": "a document sent with your resume that provides additional information on why you're qualified for the position",
"synonyms": ["application letter", "letter of introduction"],
"examples": [
"Always include a well-written cover letter with your application."
]
},
{
"id": 19,
"word": "hiring manager",
"translation": "менеджер по найму",
"definition": "the person responsible for making hiring decisions within a company or department",
"synonyms": ["recruiter", "HR manager"],
"examples": [
"The hiring manager will review all applications and select candidates for interviews."
]
},
{
"id": 20,
"word": "job description",
"translation": "описание вакансии",
"definition": "a detailed account of the responsibilities, duties, required skills, and working conditions associated with a specific job",
"synonyms": ["position profile", "role specification"],
"examples": [
"Read the job description carefully to understand what the employer is looking for."
]
},
{
"id": 21,
"word": "salary negotiation",
"translation": "переговоры о зарплате",
"definition": "the process of discussing and agreeing upon the compensation for a job, including salary, benefits, and other forms of remuneration",
"synonyms": ["compensation discussion", "pay bargaining"],
"examples": [
"It's important to prepare for salary negotiations during the final stages of the interview process."
]
},
{
"id": 22,
"word": "reference",
"translation": "рекомендация",
"definition": "a person who can vouch for your qualifications, character, and work ethic, often contacted by potential employers",
"synonyms": ["endorsement", "testimonial"],
"examples": [
"Be prepared to provide references from former supervisors or colleagues."
]
},
{
"id": 23,
"word": "component",
"translation": "компонент",
"definition": "A reusable piece of code that renders part of the user interface.",
"synonyms": ["module", "widget"],
"examples": [
"In React, components are the building blocks of the UI."
]
},
{
"id": 24,
"word": "props",
"translation": "пропсы",
"definition": "Short for 'properties', these are read-only components passed down from parent components to child components.",
"synonyms": ["attributes", "parameters"],
"examples": [
"Props allow you to pass data between components."
]
},
{
"id": 25,
"word": "state",
"translation": "состояние",
"definition": "An object that holds data specific to a component which may change over time.",
"synonyms": ["data", "context"],
"examples": [
"Managing state is crucial for dynamic web applications."
]
},
{
"id": 26,
"word": "render",
"translation": "рендеринг",
"definition": "The process of updating the DOM to match the current state of a component.",
"synonyms": ["update", "refresh"],
"examples": [
"React efficiently handles rendering to ensure smooth updates."
]
},
{
"id": 27,
"word": "virtual DOM",
"translation": "виртуальный DOM",
"definition": "A lightweight copy of the actual DOM maintained by React to improve performance by minimizing updates to the real DOM.",
"synonyms": ["shadow tree", "virtual representation"],
"examples": [
"Virtual DOM allows React to update only necessary parts of the UI."
]
},
{
"id": 28,
"word": "JSX",
"translation": "JSX",
"definition": "A syntax extension to JavaScript used in React to describe what the user interface should look like.",
"synonyms": ["template language", "syntax extension"],
"examples": [
"JSX makes it easier to write and understand React components."
]
},
{
"id": 29,
"word": "hooks",
"translation": "хуки",
"definition": "Functions that let you use state and other React features without writing a class.",
"synonyms": ["functionalities", "utilities"],
"examples": [
"Hooks make functional components more powerful."
]
},
{
"id": 30,
"word": "event handling",
"translation": "обработка событий",
"definition": "The mechanism by which React components respond to user actions such as clicks, key presses, etc.",
"synonyms": ["interaction management", "action response"],
"examples": [
"Event handlers in React allow you to define how components react to user interactions."
]
},
{
"id": 31,
"word": "lifecycle methods",
"translation": "методы жизненного цикла",
"definition": "Methods called at different stages of a component's existence, allowing developers to perform tasks at each stage.",
"synonyms": ["phase callbacks", "stage handlers"],
"examples": [
"Lifecycle methods help manage the behavior of components throughout their lifecycle."
]
},
{
"id": 32,
"word": "routing",
"translation": "маршрутизация",
"definition": "The process of defining and managing navigation paths within a single-page application.",
"synonyms": ["navigation control", "path management"],
"examples": [
"React Router is commonly used for routing in React apps."
]
},
{
"id": 33,
"word": "server-side",
"translation": "серверная сторона",
"definition": "Refers to operations performed by the server in contrast to client-side operations.",
"synonyms": ["backend", "back-end"],
"examples": [
"Node.js is primarily used for server-side development."
]
},
{
"id": 34,
"word": "asynchronous",
"translation": "асинхронный",
"definition": "Programming model where operations execute independently of other operations, allowing efficient handling of multiple requests simultaneously.",
"synonyms": ["non-blocking", "concurrent"],
"examples": [
"Node.js uses asynchronous I/O to handle many concurrent connections efficiently."
]
},
{
"id": 35,
"word": "callback",
"translation": "коллбек",
"definition": "A function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.",
"synonyms": ["handler", "continuation"],
"examples": [
"Callbacks are widely used in Node.js for handling asynchronous operations."
]
},
{
"id": 36,
"word": "event loop",
"translation": "цикл событий",
"definition": "Mechanism in Node.js that handles asynchronous operations and ensures non-blocking I/O by offloading operations to the system kernel whenever possible.",
"synonyms": ["event-driven architecture", "runtime environment"],
"examples": [
"The event loop is fundamental to understanding how Node.js works."
]
},
{
"id": 37,
"word": "package manager",
"translation": "менеджер пакетов",
"definition": "Tool used to install, update, configure, and remove packages in Node.js projects.",
"synonyms": ["dependency manager", "library manager"],
"examples": [
"npm and yarn are popular package managers for Node.js."
]
},
{
"id": 38,
"word": "middleware",
"translation": "промежуточное ПО",
"definition": "Software that sits between an application and the backend infrastructure, providing additional functionality to the request-response cycle.",
"synonyms": ["interceptor", "filter"],
"examples": [
"Express.js uses middleware to handle common tasks like logging, authentication, and error handling."
]
},
{
"id": 39,
"word": "REST API",
"translation": "REST API",
"definition": "Architectural style for building APIs using HTTP methods to perform CRUD operations on resources.",
"synonyms": ["web service", "API design pattern"],
"examples": [
"Many Node.js applications implement RESTful APIs to communicate with clients."
]
},
{
"id": 40,
"word": "streams",
"translation": "потоки",
"definition": "Data structures that facilitate continuous transfer of data in chunks rather than loading everything into memory at once.",
"synonyms": ["data flow", "pipeline"],
"examples": [
"Streams are useful for handling large files or continuous data in Node.js."
]
},
{
"id": 41,
"word": "cluster module",
"translation": "модуль кластера",
"definition": "Built-in module in Node.js that allows an application to be split into multiple processes running on separate CPU cores, improving performance and scalability.",
"synonyms": ["multi-processing", "parallel execution"],
"examples": [
"Using the cluster module can significantly enhance the throughput of a Node.js application."
]
},
{
"id": 42,
"word": "event emitter",
"translation": "излучатель событий",
"definition": "Class in Node.js that facilitates communication between objects in an application by emitting named events that other objects can listen to.",
"synonyms": ["publisher-subscriber", "observer pattern"],
"examples": [
"Event emitters are useful for implementing custom event-based systems in Node.js."
]
} }
] ]