diff --git a/README.md b/README.md index f76421c..a2034cf 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,11 @@ -# Campus_second-hand_trading_platform +# Campus_second-hand_trading_platform(校园交易平台) +## 项目介绍 +- 项目基于`SpringBoot`+`Mybatis`+`Vue3`+`Element-plus`构建; +- 主要功能有:用户注册、用户登录、用户信息修改、商品发布、商品浏览、商品收藏、商品浏览、商品评论、商品搜索、商品购买、商品交易、商品评价等。 + +## 项目目录说明 +- `.git`:git仓库管理文件 +- `front_page`:前端页面代码文件夹 +- `trading_platform`:后端代码文件夹 +- `README.md`:项目说明文件 diff --git a/document/secondhandtransactions.sql b/document/secondhandtransactions.sql new file mode 100644 index 0000000..c28c827 --- /dev/null +++ b/document/secondhandtransactions.sql @@ -0,0 +1,189 @@ +-- 创建名为`secondhandtransactions`的数据库 +CREATE DATABASE `secondhandtransactions`; + +-- 使用`secondhandtransactions`数据库 +USE `secondhandtransactions`; + +-- 创建`role`表,用于定义系统中的角色 +CREATE TABLE role +( + role_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID(主键)', + role_name VARCHAR(18) NOT NULL COMMENT '角色名称', + remark VARCHAR(128) NULL COMMENT '备注', + status TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态(0:禁用,1:启用)', + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' +); + +-- 插入角色数据 +INSERT INTO role (role_name, remark, status) +VALUES ('管理员', '拥有平台所有管理权限,负责审核、管理用户和商品', 1), + ('普通用户', '可以浏览商品、发布商品、进行交易', 1), + ('配送员', '负责配送商品,完成交易,管理自己的订单', 1), + ('商家', '商家可以发布商品,管理自己的商品和订单', 1); + +-- 创建`users`表,用于定义系统中的用户 +CREATE TABLE users +( + user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID(主键)', + head_pic_url VARCHAR(128) NULL COMMENT '头像', + nick_name VARCHAR(18) NULL COMMENT '昵称', + username VARCHAR(18) NOT NULL COMMENT '用户名', + mobile VARCHAR(15) NOT NULL COMMENT '手机号', + password VARCHAR(255) NOT NULL COMMENT '加密后的密码', + sex CHAR(1) NOT NULL COMMENT '性别(0:女,1:男) ', + email VARCHAR(255) NOT NULL comment '邮箱', + address VARCHAR(70) NOT NULL COMMENT '地址', + create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + + CONSTRAINT nick_name UNIQUE (nick_name), -- 确保昵称唯一性 + CONSTRAINT username UNIQUE (username) -- 确保用户名唯一性 +); + +-- 创建`deliveries`表,用于定义配送员信息 +CREATE TABLE deliveries +( + delivery_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '配送ID', + order_id INT NOT NULL COMMENT '订单ID(外键引用 orders)', + delivery_person_id INT NOT NULL COMMENT '配送员ID(外键引用 users)', + delivery_status ENUM ('pending', 'in_progress', 'delivered') NOT NULL DEFAULT 'pending' COMMENT '配送状态', + delivered_at TIMESTAMP NULL COMMENT '配送完成时间', + CONSTRAINT order_id_fk_delivery FOREIGN KEY (order_id) REFERENCES orders (order_id), -- 外键引用orders表 + CONSTRAINT delivery_person_id_fk_delivery FOREIGN KEY (delivery_person_id) REFERENCES users (user_id) -- 外键引用users表 +); + +-- 创建`user_roles`关联表,用于用户和角色之间的多对多关系 +CREATE TABLE user_roles +( + user_id INT NOT NULL COMMENT '用户ID(外键引用 user 表)', + role_id INT NOT NULL COMMENT '角色ID(外键引用 role 表)', + PRIMARY KEY (user_id, role_id), + CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES role (role_id) -- 外键引用role表 +); + +INSERT INTO users (nick_name, mobile, username, password, sex, email, address) +VALUES ('user001', '13800000001', 'user001', 'password123', '1', 'user001@example.com', '中区1'), + ('user002', '13800000002', 'user002', 'password456', '1', 'user002@example.com', '中区1'), + ('admin', '13800000003', 'admin', 'password789', '1', 'admin@example.com', '中区1'), + ('deliveries', '13800000004', 'deliveries', 'password147', '1', 'deliveries@example.com', '中区1'); + +# -- 将用户与普通用户角色关联 +# INSERT INTO user_roles (user_id, role_id) +# VALUES (LAST_INSERT_ID(), 2); +# +# -- 将用户与商家角色关联 +# INSERT INTO user_roles (user_id, role_id) +# VALUES (LAST_INSERT_ID(), 3); + +-- 创建`orders`表,用于存储订单信息 +CREATE TABLE orders +( + order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID(主键)', + buyer_id INT NOT NULL COMMENT '买家用户ID', + item_id INT NOT NULL COMMENT '商品ID', + seller_id INT NOT NULL COMMENT '卖家用户ID', + address VARCHAR(255) NOT NULL COMMENT '收货地址', + total_amount DECIMAL(10, 2) NOT NULL COMMENT '订单总金额', + status ENUM ('pending', 'paid', 'shipped', 'completed', 'cancelled') NOT NULL DEFAULT 'pending' + COMMENT '订单状态:pending-订单已创建,等待支付;paid-订单已支付,等待发货;shipped-订单已发货,等待收货;completed-订单已完成;cancelled-订单已取消', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单创建时间', + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '订单更新时间', + + -- 外键约束 + CONSTRAINT buyer_id_fk_orders FOREIGN KEY (buyer_id) REFERENCES users (user_id), -- 外键引用users表(买家) + CONSTRAINT seller_id_fk_orders FOREIGN KEY (seller_id) REFERENCES users (user_id), -- 外键引用users表(卖家) + CONSTRAINT item_id_fk_orders FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); + +-- 创建`items`表,用于定义商品信息 +CREATE TABLE items +( + item_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID(主键)', + user_id INT NOT NULL COMMENT '发布商品的用户ID(外键引用 users)', + item_name VARCHAR(255) NOT NULL COMMENT '商品名称', + description VARCHAR(500) NULL COMMENT '商品描述', + category_id INT NOT NULL COMMENT '商品类别ID(外键引用 categories 表)', + price DECIMAL(10, 2) CHECK (price >= 0) NOT NULL COMMENT '商品价格', + status ENUM ('available', 'sold', 'removed') NOT NULL DEFAULT 'available' + COMMENT '商品状态:available(可售)、sold(已售出)、removed(已下架)', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '商品创建时间', + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '商品更新时间', + + -- 外键约束 + CONSTRAINT user_id_fk_items FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT category_id_fk_items FOREIGN KEY (category_id) REFERENCES item_categories (category_id) -- 外键引用item_categories表 +); + +-- 创建`categories`表,用于定义商品类别 +CREATE TABLE item_categories +( + category_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '类别ID', + category_name VARCHAR(50) NOT NULL COMMENT '类别名称' +); + +-- 创建`item_images`表,用于存储商品的图片信息 +CREATE TABLE item_images +( + image_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '图片ID(主键)', + item_id INT NOT NULL COMMENT '商品ID', + image_path VARCHAR(255) NULL COMMENT '图片路径', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '图片创建时间', + -- 外键约束 + CONSTRAINT item_id_fk_image FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); + +-- 创建`item_comments`表,用于存储商品的评论信息 +CREATE TABLE item_comments +( + comment_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '评论ID(主键)', + user_id INT NOT NULL COMMENT '评论用户ID', + item_id INT NOT NULL COMMENT '被评论的商品ID', + content VARCHAR(1000) NOT NULL COMMENT '评论内容', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '评论创建时间', + + -- 外键约束 + CONSTRAINT user_id_fk_comment FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT item_id_fk_comment FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); + +-- 创建`item_likes`表,用于存储商品的点赞信息 +CREATE TABLE item_likes +( + like_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '点赞ID(主键)', + user_id INT NOT NULL COMMENT '点赞用户ID', + item_id INT NOT NULL COMMENT '被点赞的商品ID', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '点赞创建时间', + + -- 外键约束 + CONSTRAINT user_id_fk_like FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT item_id_fk_like FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); + +-- 创建`item_favorites`表,用于用户收藏的商品信息 +CREATE TABLE item_favorites +( + favorite_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '收藏ID(主键)', + user_id INT NOT NULL COMMENT '用户ID(外键引用 users)', + item_id INT NOT NULL COMMENT '商品ID(外键引用 items)', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '收藏时间', + + -- 外键约束 + CONSTRAINT user_id_fk_favorite FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT item_id_fk_favorite FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); + +-- 创建`item_offers`表,用于存储物品下架的信息 +CREATE TABLE item_offers +( + offer_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '物品下架ID(主键)', + user_id INT NOT NULL COMMENT '用户ID(外键引用 users)', + item_id INT NOT NULL COMMENT '商品ID(外键引用 items)', + reason VARCHAR(500) NOT NULL COMMENT '下架理由', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下架时间', + + -- 外键约束 + CONSTRAINT user_id_fk_offer FOREIGN KEY (user_id) REFERENCES users (user_id), -- 外键引用users表 + CONSTRAINT item_id_fk_offer FOREIGN KEY (item_id) REFERENCES items (item_id) -- 外键引用items表 +); diff --git a/document/二手交易平台接口文档.md b/document/二手交易平台接口文档.md new file mode 100644 index 0000000..ff22e2d --- /dev/null +++ b/document/二手交易平台接口文档.md @@ -0,0 +1,1235 @@ +# 二手交易平台接口文档 + +## 目录 + +- [1、接口概述](#1接口概述) +- [2、用户接口列表](#2用户接口列表) + - [2.1、用户注册](#21用户注册) + - [2.1.1基本信息](#211基本信息) + - [2.1.2请求参数](#212请求参数) + - [2.1.3响应数据](#213响应数据) + + - [2.2、用户登录](#22用户登录) + - [2.2.1基本信息](#221基本信息) + - [2.2.2请求参数](#222请求参数) + - [2.2.3响应数据](#223响应数据) + - [2.2.4备注说明](#224备注说明) + + - [2.3、获取用户基本信息](#23获取用户基本信息) + - [2.3.1基本信息](#231基本信息) + - [2.3.2请求参数](#232请求参数) + - [2.3.3响应数据](#233响应数据) + + - [2.4、更新用户基本信息](#24更新用户基本信息) + - [2.4.1基本信息](#241基本信息) + - [2.4.2请求参数](#242请求参数) + - [2.4.3响应数据](#243响应数据) + + - [2.5、更新用户头像](#25更新用户头像) + - [2.5.1基本信息](#251基本信息) + - [2.5.2请求参数](#252请求参数) + - [2.5.3响应数据](#253响应数据) + + - [2.6、更新用户密码](#26更新用户密码) + - [2.6.1基本信息](#261基本信息) + - [2.6.2请求参数](#262请求参数) + - [2.6.3响应数据](#263响应数据) + +- [3、商品接口列表](#3商品接口列表) + - [3.1、添加商品](#31添加商品) + - [3.1.1基本信息](#311基本信息) + - [3.1.2请求参数](#312请求参数) + - [3.1.3响应数据](#313响应数据) + + - [3.2、获取商品列表](#32获取商品列表) + - [3.2.1基本信息](#321基本信息) + - [3.2.2请求参数](#322请求参数) + - [3.2.3响应数据](#323响应数据) + + - [3.3、获取商品详情](#33获取商品详情) + - [3.3.1基本信息](#331基本信息) + - [3.3.2请求参数](#332请求参数) + - [3.3.3响应数据](#333响应数据) + + - [3.4、删除商品](#34删除商品) + - [3.4.1基本信息](#341基本信息) + - [3.4.2请求参数](#342请求参数) + - [3.4.3响应数据](#343响应数据) + +- [4、交易管理](#4交易管理) + - [4.1、创建订单](#41创建订单) + - [4.1.1基本信息](#411基本信息) + - [4.1.2请求参数](#412请求参数) + - [4.1.3响应数据](#413响应数据) + + - [4.2、获取订单列表](#42获取订单列表) + - [4.2.1基本信息](#421基本信息) + - [4.2.2请求参数](#422请求参数) + - [4.2.3响应数据](#423响应数据) + + - [4.3、获取订单详情](#34删除商品) + - [4.3.1基本信息](#431基本信息) + - [4.3.2请求参数](#432请求参数) + - [4.3.3响应数据](#433响应数据) + + - [4.4、取消订单](#44取消订单) + - [4.4.1基本信息](#441基本信息) + - [4.4.2请求参数](#442请求参数) + - [4.4.3响应数据](#443响应数据) + +- [5、管理员管理](#5管理员管理) + - [5.1、管理员登录](#51管理员管理) + - [5.1.1基本信息](#511基本信息) + - [5.1.2请求参数](#512请求参数) + - [5.1.3响应数据](#513响应数据) + - [5.2、用户管理](#52管理员管理) + - [5.2.1基本信息](#521基本信息) + - [5.2.2请求参数](#522请求参数) + - [5.2.3响应数据](#523响应数据) + - [5.3、商品管理](#53商品管理) + - [5.3.1基本信息](#531基本信息) + - [5.3.2请求参数](#532请求参数) + - [5.3.3响应数据](#533响应数据) + - [5.4、订单管理](#54订单管理) + - [5.4.1基本信息](#541基本信息) + - [5.4.2请求参数](#542请求参数) + - [5.4.3响应数据](#543响应数据) + - [5.5、退出模块](#55退出模块) + - [5.5.1基本信息](#551基本信息) + - [5.5.2请求参数](#552请求参数) + - [5.5.3响应数据](#553响应数据) +- [6、其他接口](#6其他接口) + - [6.1、搜索商品](#61搜索商品) + - [6.1.1基本信息](#611基本信息) + - [6.1.2请求参数](#612请求参数) + - [6.1.3响应数据](#613响应数据) + + - [6.2、用户反馈](#62用户反馈) + - [6.2.1基本信息](#621基本信息) + - [6.2.2请求参数](#622请求参数) + - [6.2.3响应数据](#623响应数据) + +## 1、接口概述 + +该接口文档描述了二手交易平台的所有API接口,包括用户管理、商品管理、交易管理、管理员管理等功能。 + +## 2、用户接口列表 + +### 2.1、用户注册 + +#### 2.1.1基本信息 + +- 请求路径URL:`user/register` +- 请求方式:`POST` +- 接口描述:该接口用于注册新用户 + +#### 2.1.2请求参数 + +- 请求参数格式:`X-www-form-urlencoded` + ` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:-------|:------:|:---------|:----------| +| **username** | 用户名 | string | 是 | 5-16位非空字符 | +| **password** | 密码 | string | 是 | 5-16位非空字符 | + +- 请求数据样例: + +```json +username=sunhehe&password=123456 +``` + +#### 2.1.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | string | 必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message": "操作成功", + "data": null +} +``` + +### 2.2、用户登录 + +#### 2.2.1基本信息 + +- 请求路径URL:`user/login` +- 请求方式:`POST` +- 接口描述:该接口用于用户登录 + +#### 2.2.2请求参数 + +- 请求参数格式:`X-www-form-yrlencoded` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:-------|:-------|:---------|:----------| +| **username** | 用户名 | string | 是 | 5-16位非空字符 | +| **password** | 密码 | string | 是 | 5-16位非空字符 | + +- 请求数据样例: + +```json +username=sunhehe&password=123456 +``` + +#### 2.2.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | string | 必须 | 返回的数据 jwt 令牌 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message": "操作成功", + "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoiMSIsInVzZXJuYW1lIjoi5byg5LiJIn0sImV4cCI6MTczMDY1MjY4NH0.U9DCkONPv_Nw29WHbpABQ2yRl4LVoQYPpkZ1_qKIR2U" +} +``` + +#### 2.2.4备注说明 + +> 用户登录成功后,系统会自动下发 JWT 令牌,然后在后续的每次请求中,浏览器都需要在请求头 header 中携带到服务端,请求头的名称为 +` Authorization ` ,值为登录时下发的 JWT 令牌。 +> \ +> 如果检测到用户未登录,则 http 响应状态码为 `401` + +### 2.3、获取用户基本信息 + +#### 2.3.1基本信息 + +- 请求路径URL:`user/userinfo` +- 请求方式:`GET` +- 接口描述:该接口用于获取当前已登陆用户的详细信息 + +#### 2.3.2请求参数 + +无 + +#### 2.3.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:------------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | string | 必须 | 返回的数据 | +| --id | number | 非必须 | 主键ID | +| --userna | string | 非必须 | 用户名 | +| --nickname | string | 非必须 | 昵称 | +| --email | string | 非必须 | 邮箱 | +| --userPic | string | 非必须 | 头像地址 | +| --createTime | string | 非必须 | 创建时间 | +| --updateTime | string | 非必须 | 更新时间 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": { + "id": 5, + "username": "sunhehe", + "nickname": "", + "emai1": "", + "userPic": "", + "createTime": "2024-11-0322:21:31", + "updateTime": "2024-11-0322:21:31" + } +} +``` + +### 2.4、更新用户基本信息 + +#### 2.4.1基本信息 + +- 请求路径URL:`/user/update` +- 请求方式:`PUT` +- 接口描述:该接口用于更新已登录用户的基本信息(除头像和密码) + +#### 2.4.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:-------|:-------|:---------|----------:| +| **id** | 主键ID | number | 是 | | +| **username** | 用户名 | string | 否 | 5-16位非空字符 | +| **nickname** | 昵称 | string | 是 | 1-10位非空字符 | +| **email** | 邮箱 | string | 是 | 满足邮箱格式要求 | + +- 请求数据样例: + +```json +{ + "id": 5, + "username": "sunhehe", + "nickname": "澜崽", + "email": "151037@qq.com" +} +``` + +#### 2.4.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 2.5、更新用户头像 + +#### 2.5.1基本信息 + +- 请求路径URL:`user/updateAvatar` +- 请求方式:`PATCH` +- 接口描述:该接口用于更新已登录用户的头像 + +#### 2.5.2请求参数 + +- 请求参数格式:`queryString` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:--------------|:-------|:-------|:---------|-------:| +| **avatarUrl** | 头像地址 | string | 是 | url地址 | + +- 请求数据样例: + +```js +{ + avatarur1 = https://haowallpaper.com/link/common/file/previewFileImg/15690537886650688 +} +``` + +#### 2.5.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 2.6、更新用户密码 + +#### 2.6.1基本信息 + +- 请求路径URL:`user/updatePwd` +- 请求方式:`PATCH` +- 接口描述:该接口用于更新已登录用户的密码 + +#### 2.6.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:-------|:---------|-------:| +| **old_pwd** | 原密码 | string | 是 | | +| **new_pwd** | 新密码 | string | 是 | | +| **re_pwd** | 确认新密码 | string | 是 | | + +- 请求数据样例: + +```json +{ + "old_pwd": "123456", + "new_pwd": "234567", + "re_pwd": "234567" +} +``` + +#### 2.6.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +## 3、商品接口列表 + +### 3.1、添加商品 + +#### 3.1.1基本信息 + +- 请求路径URL:`product/add` +- 请求方式:`POST` +- 接口描述:该接口用于添加新商品 + +#### 3.1.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:----------------|:---------|:--------|:---------|----------:| +| **name** | 商品名称 | string | 是 | 商品的名称 | +| **price** | 商品价格 | number | 是 | 商品的价格(¥) | +| **description** | 商品描述 | string | 否 | 对商品的详细描述 | +| **category** | 商品类别 | string | 是 | 商品所属类别 | +| **imageUrl** | 商品图片链接 | string | 否 | 商品图片的URL | + +- 请求数据样例: + +```json +{ + "name": "二手书籍", + "price": 50, + "description": "一本很好的二手书籍", + "category": "书籍", + "imageUrl": "https://img3m5.ddimg.cn/58/24/27883705-1_e_2.jpg" +} +``` + +#### 3.1.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 3.2、获取商品列表 + +#### 3.2.1基本信息 + +- 请求路径URL:`product/list` +- 请求方式:`GET` +- 接口描述:该接口用于获取商品列表 + +#### 3.2.2请求参数 + +无 + +#### 3.2.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:--------------|:---------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 商品列表 | +| --id | number | 非必须 | 商品ID | +| --name | string | 非必须 | 商品的名称 | +| --price | number | 非必须 | 商品的价格(¥) | +| --description | string | 非必须 | 商品描述 | +| --category | string | 非必须 | 商品类别 | +| --imageUrl | string | 非必须 | 商品图片 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": [ + { + "id": 1, + "name": "二手书籍", + "price": 50, + "description": "一本很好的二手书籍", + "category": "书籍", + "imageUrl": "http://example.com/image.jpg" + }, + { + "id": 2, + "name": "二手台灯", + "price": 300, + "description": "状态良好的二手台灯", + "category": "杂物", + "imageUrl": "http://example.com/image2.jpg" + } + ] +} +``` + +### 3.3、获取商品详情 + +#### 3.3.1基本信息 + +- 请求路径URL:`product/detail/{id}` +- 请求方式:`GET` +- 接口描述:该接口用于获取指定商品的详细信息 + +#### 3.3.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:---------|:-------|:--------|:---------|-----------:| +| **id** | 商品ID | number | 必须 | 要获取详情的商品ID | + +- 请求数据样例: + +```json +{ + "id": 1 +} +``` + +#### 3.3.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 商品详细信息 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": { + "id": 1, + "name": "二手书籍", + "price": 50, + "description": "一本很好的二手书籍", + "category": "书籍", + "imageUrl": "http://example.com/image.jpg" + } +} +``` + +### 3.4、删除商品 + +#### 3.4.1基本信息 + +- 请求路径URL:`product/delete/{id}` +- 请求方式:`DELETE` +- 接口描述:该接口用于删除指定商品 + +#### 3.4.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:---------|:-------|:--------|:---------|---------:| +| **id** | 商品ID | number | 是 | 要删除的商品ID | + +- 请求数据样例: + +```json +{ + "id": 2 +} +``` + +#### 3.4.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +## 4、交易管理 + +### 4.1、创建订单 + +#### 4.1.1基本信息 + +- 请求路径URL:`order/create` +- 请求方式:`POST` +- 接口描述:该接口用于创建新订单 + +#### 4.1.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:---------|:-------|:-------|:---------|-------:| + +- 请求数据样例: + +```json +{ +} +``` + +#### 4.1.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 4.2、获取订单列表 + +#### 4.2.1基本信息 + +- 请求路径URL:`order/list` +- 请求方式:`GET` +- 接口描述:该接口用于获取用户的订单列表 + +#### 4.2.2请求参数 +无 + +#### 4.2.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 4.3、获取订单详情 + +#### 4.3.1基本信息 + +- 请求路径URL:`order/detail/{id}` +- 请求方式:`GET` +- 接口描述:该接口用于获取指定订单的详细信息 + +#### 4.3.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: +无 +- 请求数据样例: +无 + +#### 4.3.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:------------|:-------|:---------|:----------------| +| **code** | number | 必须 | 响应码,0 -成功,1 -失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据 | + +- 响应数据样例: + +```json +{ + "code": 0, + "message'": "操作成功", + "data": null +} +``` + +### 4.4、取消订单 + +#### 4.4.1基本信息 + +- 请求路径URL:`/order/cancel/{id}` +- 请求方式:`DELETE` +- 接口描述:该接口用于取消指定订单。通过订单ID(`id`)来唯一标识待取消的订单。如果订单状态允许取消(例如未支付或待发货),则可以成功取消订单。 + +#### 4.4.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:------------|:------------|:--------|:-----------:|:------------| +| **id** | 订单ID | number | 是 | 订单的唯一标识符,用于指定需要取消的订单。 | + +> 注:`id`是URL路径的一部分,不是请求体中的参数。 + +- 请求数据样例: +无 + +#### 4.4.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:---------|:-----------:|:----------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据,通常为空 | + +- 响应数据样例: +```json +//取消订单成功 +{ + "code": 0, + "message": "订单取消成功", + "data": null +} +``` + +```json +// 取消订单失败(例如订单已发货或已完成) +{ + "code": 1, + "message": "订单无法取消,订单已发货", + "data": null +} +``` + +## 5、管理员管理 + +### 5.1、管理员登录 + +#### 5.1.1基本信息 + +- 请求路径URL:`/admin/login` +- 请求方式:`POST` +- 接口描述:管理员登录接口,用于验证管理员身份并返回登录信息。 + +#### 5.1.2请求参数 + +- 请求参数格式:`application/x-www-form-urlencoded` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:--------:|:-----------:|:------------------| +| **username** | 用户名 | string | 是 | 管理员的用户名,5-16位 | +| **password** | 密码 | string | 是 | 管理员的密码,5-16位 | + +- 请求数据样例: +```json +username=sunhehe&password=123456 +``` + +#### 5.1.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:--------|:-----------:|:------------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息,登录成功或失败的描述 | +| **data** | object | 非必须 | 包含管理员的登录令牌等信息 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "登录成功", + "data": { + "token": "abcd1234xyz", + "adminId": "admin_001", + "role": "super_admin" + } +} +``` + +### 5.2、用户管理 + +#### 5.2.1基本信息 + +- 请求路径URL:`/admin/user/list` +- 请求方式:`GET` +- 接口描述:管理员查看用户列表。 + +#### 5.2.2请求参数 + +- 请求参数格式:`application/x-www-form-urlencoded` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:--------:|:-----------:|:-------------| +| **page** | 页码 | number | 否 | 默认为1,分页 | +| **size** | 每页数量 | number | 否 | 默认为10,分页 | + +- 请求数据样例: + +#### 5.2.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:-----------:|:----------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object[] | 必须 | 用户列表数据 | +| **data[]** | object | 必须 | 每个用户的详细信息 | +| **data[].id**| string | 必须 | 用户ID | +| **data[].username** | string | 必须 | 用户名 | +| **data[].email** | string | 非必须 | 用户邮箱 | +| **data[].status** | string | 非必须 | 用户状态 (active/inactive) | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "操作成功", + "data": [ + { + "id": "user_001", + "username": "john_doe", + "email": "john.doe@example.com", + "status": "active" + }, + { + "id": "user_002", + "username": "jane_smith", + "email": "jane.smith@example.com", + "status": "inactive" + } + ] +} +``` + + +### 5.3、商品管理 + +#### 5.3.1基本信息 + +- 请求路径URL:`/admin/product/list` +- 请求方式:`GET` +- 接口描述:管理员查看所有商品信息。 + +#### 5.3.2请求参数 + +- 请求参数格式:`application/x-www-form-urlencoded` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:--------:|:-----------:|:--------------| +| **page** | 页码 | number | 否 | 默认为1,分页 | +| **size** | 每页数量 | number | 否 | 默认为10,分页 | +- 请求数据样例: + +#### 5.3.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:-----------:|:----------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object[] | 必须 | 商品列表数据 | +| **data[]** | object | 必须 | 每个商品的详细信息 | +| **data[].id**| string | 必须 | 商品ID | +| **data[].name** | string | 必须 | 商品名称 | +| **data[].price** | number | 必须 | 商品价格 | +| **data[].quantity** | number | 必须 | 商品库存数量 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "操作成功", + "data": [ + { + "id": "prod_001", + "name": "二手笔记本电脑", + "price": 2999.99, + "quantity": 10 + }, + { + "id": "prod_002", + "name": "二手手机", + "price": 1599.99, + "quantity": 25 + } + ] +} +``` + +### 5.4、订单管理 + +#### 5.4.1基本信息 + +- 请求路径URL:`/admin/order/list` +- 请求方式:`GET` +- 接口描述:管理员查看所有订单信息。 + +#### 5.4.2请求参数 + +- 请求参数格式:`application/x-www-form-urlencoded` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:--------:|:-----------:|:--------------| +| **page** | 页码 | number | 否 | 默认为1,分页 | +| **size** | 每页数量 | number | 否 | 默认为10,分页 | + +- 请求数据样例: + +#### 5.4.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:-----------:|:----------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object[] | 必须 | 订单列表数据 | +| **data[]** | object | 必须 | 每个订单的详细信息 | +| **data[].orderId** | string | 必须 | 订单ID | +| **data[].userId** | string | 必须 | 用户ID | +| **data[].productId** | string | 必须 | 商品ID | +| **data[].quantity** | number | 必须 | 商品数量 | +| **data[].status** | string | 必须 | 订单状态 (pending/paid/shipped) | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "操作成功", + "data": [ + { + "orderId": "order_001", + "userId": "user_001", + "productId": "prod_001", + "quantity": 1, + "status": "paid" + }, + { + "orderId": "order_002", + "userId": "user_002", + "productId": "prod_002", + "quantity": 2, + "status": "shipped" + } + ] +} +``` + +### 5.5、退出模块 + +#### 5.5.1基本信息 + +- 请求路径URL:`/admin/logout` +- 请求方式:`POST` +- 接口描述:管理员退出登录接口,用于清除 + +#### 5.5.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:-------------|:----------|:--------:|:-----------:|:--------------| +| **token** | 登录令牌 | string | 是 | 管理员登录时获取的token,用于身份验证 | + +- 请求数据样例: +无 + +#### 5.5.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:---------|:-----------:|:------------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "退出登录成功" +} +``` + +## 6、其他接口 + +### 6.1、搜索商品 + +#### 6.1.1基本信息 + +- 请求路径URL:`/product/search` +- 请求方式:`GET` +- 接口描述:该接口用于根据关键词搜索商品。可以根据商品名称、分类、描述等信息进行模糊查询。 + +#### 6.1.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:--------------|:-------------------------|:---------|:-----------:|:-----------------------------------------| +| **keyword** | 搜索关键词(商品名称、描述等) | string | 是 | 用于搜索商品的关键词,支持模糊查询。 | +| **category** | 商品分类 | string | 否 | 可选,指定商品类别进行筛选,若不提供则不筛选类别。 | +| **page** | 页码(分页查询) | number | 否 | 默认值为1,表示第一页。 | +| **pageSize** | 每页显示的商品数量 | number | 否 | 默认值为20,最大值为100,表示每页显示的商品数。 | + +- 请求数据样例: +```json +{ + "keyword": "手机", + "category": "电子产品", + "page": 1, + "pageSize": 20 +} +``` + +#### 6.1.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:---------|:-----------:|:----------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 必须 | 返回的数据,包含商品列表信息 | +| **total** | number | 必须 | 符合条件的商品总数 | +| **page** | number | 必须 | 当前页码 | +| **pageSize** | number | 必须 | 每页商品数 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "操作成功", + "data": [ + { + "productId": 12345, + "name": "二手iPhone 12", + "category": "电子产品", + "price": 3000, + "description": "几乎全新,屏幕完好,原装配件", + "imageUrl": "http://example.com/iphone12.jpg", + "sellerId": 67890, + "sellerName": "张三" + }, + { + "productId": 67890, + "name": "二手MacBook Pro", + "category": "电子产品", + "price": 4500, + "description": "配置高,性能稳定,电池寿命长", + "imageUrl": "http://example.com/macbookpro.jpg", + "sellerId": 12345, + "sellerName": "李四" + } + ], + "total": 50, + "page": 1, + "pageSize": 20 +} +``` + +### 6.2、用户反馈 + +#### 6.2.1基本信息 + +- 请求路径URL:`/feedback/submit` +- 请求方式:`POST` +- 接口描述:该接口用于提交用户反馈,用户可以通过此接口提交对平台的建议、问题或其他反馈。 + +#### 6.2.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:--------------|:----------------------------|:---------|:-----------:|:--------------------------------------| +| **userId** | 用户ID | number | 是 | 提交反馈的用户的ID,用于标识反馈来源。 | +| **content** | 反馈内容 | string | 是 | 用户提交的反馈内容,字数限制为500个字符。 | +| **contactInfo**| 联系方式(可选) | string | 否 | 可选,用户希望被平台联系的方式(如电话、邮箱等)。 | + +- 请求数据样例: + +```json +{ + "userId": 12345, + "content": "平台的商品搜索功能有些慢,希望能够优化。", + "contactInfo": "example@example.com" +} +``` + +#### 6.2.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:---------|:-----------:|:----------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 非必须 | 返回的数据,通常为空 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "反馈提交成功", + "data": null +} +``` + +### 6.3、获取商品详情 + +#### 6.3.1基本信息 + +- 请求路径URL:`/product/{productId}` +- 请求方式:`GET` +- 接口描述:该接口用于获取某个商品的详细信息。 + +#### 6.3.2请求参数 + +- 请求参数格式:`application/json` +- 请求参数说明: + +| **参数名称** | **说明** | **类型** | **是否必须** | **备注** | +|:------------|:------------------|:--------|:-----------:|:-------------| +| **productId** | 商品ID | number | 是 | 商品的唯一标识符 | + +- 请求数据样例 +```json +{ + "productId": 12345 +} +``` + +#### 6.3.3响应数据 + +- 响应数据类型:`application/json` +- 响应参数说明: + +| **名称** | **类型** | **是否必须** | **备注** | +|:-------------|:---------|:-----------:|:----------------------------| +| **code** | number | 必须 | 响应码,0 - 成功,1 - 失败 | +| **message** | string | 非必须 | 提示信息 | +| **data** | object | 必须 | 返回商品的详细信息 | + +- 响应数据样例: +```json +{ + "code": 0, + "message": "操作成功", + "data": { + "productId": 12345, + "name": "二手iPhone 12", + "category": "电子产品", + "price": 3000, + "description": "几乎全新,屏幕完好,原装配件", + "imageUrl": "http://example.com/iphone12.jpg", + "sellerId": 67890, + "sellerName": "张三", + "contactInfo": "example@example.com", + "location": "北京市", + "createTime": "2024-11-01T12:00:00" + } +} +``` diff --git a/lesson1_vite/.gitignore b/front_page/.gitignore similarity index 100% rename from lesson1_vite/.gitignore rename to front_page/.gitignore diff --git a/lesson1_vite/.vscode/extensions.json b/front_page/.vscode/extensions.json similarity index 100% rename from lesson1_vite/.vscode/extensions.json rename to front_page/.vscode/extensions.json diff --git a/lesson1_vite/README.md b/front_page/README.md similarity index 100% rename from lesson1_vite/README.md rename to front_page/README.md diff --git a/lesson1_vite/index.html b/front_page/index.html similarity index 100% rename from lesson1_vite/index.html rename to front_page/index.html diff --git a/lesson1_vite/node_modules/.bin/esbuild b/front_page/node_modules/.bin/esbuild similarity index 100% rename from lesson1_vite/node_modules/.bin/esbuild rename to front_page/node_modules/.bin/esbuild diff --git a/lesson1_vite/node_modules/.bin/esbuild.cmd b/front_page/node_modules/.bin/esbuild.cmd similarity index 100% rename from lesson1_vite/node_modules/.bin/esbuild.cmd rename to front_page/node_modules/.bin/esbuild.cmd diff --git a/lesson1_vite/node_modules/.bin/nanoid b/front_page/node_modules/.bin/nanoid similarity index 100% rename from lesson1_vite/node_modules/.bin/nanoid rename to front_page/node_modules/.bin/nanoid diff --git a/lesson1_vite/node_modules/.bin/nanoid.cmd b/front_page/node_modules/.bin/nanoid.cmd similarity index 100% rename from lesson1_vite/node_modules/.bin/nanoid.cmd rename to front_page/node_modules/.bin/nanoid.cmd diff --git a/lesson1_vite/node_modules/.bin/parser b/front_page/node_modules/.bin/parser similarity index 100% rename from lesson1_vite/node_modules/.bin/parser rename to front_page/node_modules/.bin/parser diff --git a/lesson1_vite/node_modules/.bin/parser.cmd b/front_page/node_modules/.bin/parser.cmd similarity index 100% rename from lesson1_vite/node_modules/.bin/parser.cmd rename to front_page/node_modules/.bin/parser.cmd diff --git a/lesson1_vite/node_modules/.bin/rollup b/front_page/node_modules/.bin/rollup similarity index 100% rename from lesson1_vite/node_modules/.bin/rollup rename to front_page/node_modules/.bin/rollup diff --git a/lesson1_vite/node_modules/.bin/rollup.cmd b/front_page/node_modules/.bin/rollup.cmd similarity index 100% rename from lesson1_vite/node_modules/.bin/rollup.cmd rename to front_page/node_modules/.bin/rollup.cmd diff --git a/lesson1_vite/node_modules/.bin/vite b/front_page/node_modules/.bin/vite similarity index 100% rename from lesson1_vite/node_modules/.bin/vite rename to front_page/node_modules/.bin/vite diff --git a/lesson1_vite/node_modules/.bin/vite.cmd b/front_page/node_modules/.bin/vite.cmd similarity index 100% rename from lesson1_vite/node_modules/.bin/vite.cmd rename to front_page/node_modules/.bin/vite.cmd diff --git a/lesson1_vite/node_modules/.yarn-integrity b/front_page/node_modules/.yarn-integrity similarity index 100% rename from lesson1_vite/node_modules/.yarn-integrity rename to front_page/node_modules/.yarn-integrity diff --git a/lesson1_vite/node_modules/@babel/helper-string-parser/LICENSE b/front_page/node_modules/@babel/helper-string-parser/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-string-parser/LICENSE rename to front_page/node_modules/@babel/helper-string-parser/LICENSE diff --git a/lesson1_vite/node_modules/@babel/helper-string-parser/README.md b/front_page/node_modules/@babel/helper-string-parser/README.md similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-string-parser/README.md rename to front_page/node_modules/@babel/helper-string-parser/README.md diff --git a/lesson1_vite/node_modules/@babel/helper-string-parser/lib/index.js b/front_page/node_modules/@babel/helper-string-parser/lib/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-string-parser/lib/index.js rename to front_page/node_modules/@babel/helper-string-parser/lib/index.js diff --git a/lesson1_vite/node_modules/@babel/helper-string-parser/lib/index.js.map b/front_page/node_modules/@babel/helper-string-parser/lib/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-string-parser/lib/index.js.map rename to front_page/node_modules/@babel/helper-string-parser/lib/index.js.map diff --git a/lesson1_vite/node_modules/@babel/helper-string-parser/package.json b/front_page/node_modules/@babel/helper-string-parser/package.json similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-string-parser/package.json rename to front_page/node_modules/@babel/helper-string-parser/package.json diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/LICENSE b/front_page/node_modules/@babel/helper-validator-identifier/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/LICENSE rename to front_page/node_modules/@babel/helper-validator-identifier/LICENSE diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/README.md b/front_page/node_modules/@babel/helper-validator-identifier/README.md similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/README.md rename to front_page/node_modules/@babel/helper-validator-identifier/README.md diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/front_page/node_modules/@babel/helper-validator-identifier/lib/identifier.js similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/identifier.js rename to front_page/node_modules/@babel/helper-validator-identifier/lib/identifier.js diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/front_page/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map rename to front_page/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/index.js b/front_page/node_modules/@babel/helper-validator-identifier/lib/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/index.js rename to front_page/node_modules/@babel/helper-validator-identifier/lib/index.js diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/front_page/node_modules/@babel/helper-validator-identifier/lib/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/index.js.map rename to front_page/node_modules/@babel/helper-validator-identifier/lib/index.js.map diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/front_page/node_modules/@babel/helper-validator-identifier/lib/keyword.js similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/keyword.js rename to front_page/node_modules/@babel/helper-validator-identifier/lib/keyword.js diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/front_page/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map rename to front_page/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/package.json b/front_page/node_modules/@babel/helper-validator-identifier/package.json similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/package.json rename to front_page/node_modules/@babel/helper-validator-identifier/package.json diff --git a/lesson1_vite/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/front_page/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js similarity index 100% rename from lesson1_vite/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js rename to front_page/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js diff --git a/lesson1_vite/node_modules/@babel/parser/CHANGELOG.md b/front_page/node_modules/@babel/parser/CHANGELOG.md similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/CHANGELOG.md rename to front_page/node_modules/@babel/parser/CHANGELOG.md diff --git a/lesson1_vite/node_modules/@babel/parser/LICENSE b/front_page/node_modules/@babel/parser/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/LICENSE rename to front_page/node_modules/@babel/parser/LICENSE diff --git a/lesson1_vite/node_modules/@babel/parser/README.md b/front_page/node_modules/@babel/parser/README.md similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/README.md rename to front_page/node_modules/@babel/parser/README.md diff --git a/lesson1_vite/node_modules/@babel/parser/bin/babel-parser.js b/front_page/node_modules/@babel/parser/bin/babel-parser.js similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/bin/babel-parser.js rename to front_page/node_modules/@babel/parser/bin/babel-parser.js diff --git a/lesson1_vite/node_modules/@babel/parser/index.cjs b/front_page/node_modules/@babel/parser/index.cjs similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/index.cjs rename to front_page/node_modules/@babel/parser/index.cjs diff --git a/lesson1_vite/node_modules/@babel/parser/lib/index.js b/front_page/node_modules/@babel/parser/lib/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/lib/index.js rename to front_page/node_modules/@babel/parser/lib/index.js diff --git a/lesson1_vite/node_modules/@babel/parser/lib/index.js.map b/front_page/node_modules/@babel/parser/lib/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/lib/index.js.map rename to front_page/node_modules/@babel/parser/lib/index.js.map diff --git a/lesson1_vite/node_modules/@babel/parser/package.json b/front_page/node_modules/@babel/parser/package.json similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/package.json rename to front_page/node_modules/@babel/parser/package.json diff --git a/lesson1_vite/node_modules/@babel/parser/typings/babel-parser.d.ts b/front_page/node_modules/@babel/parser/typings/babel-parser.d.ts similarity index 100% rename from lesson1_vite/node_modules/@babel/parser/typings/babel-parser.d.ts rename to front_page/node_modules/@babel/parser/typings/babel-parser.d.ts diff --git a/lesson1_vite/node_modules/@babel/types/LICENSE b/front_page/node_modules/@babel/types/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@babel/types/LICENSE rename to front_page/node_modules/@babel/types/LICENSE diff --git a/lesson1_vite/node_modules/@babel/types/README.md b/front_page/node_modules/@babel/types/README.md similarity index 100% rename from lesson1_vite/node_modules/@babel/types/README.md rename to front_page/node_modules/@babel/types/README.md diff --git a/lesson1_vite/node_modules/@babel/types/lib/asserts/assertNode.js b/front_page/node_modules/@babel/types/lib/asserts/assertNode.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/asserts/assertNode.js rename to front_page/node_modules/@babel/types/lib/asserts/assertNode.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/asserts/assertNode.js.map b/front_page/node_modules/@babel/types/lib/asserts/assertNode.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/asserts/assertNode.js.map rename to front_page/node_modules/@babel/types/lib/asserts/assertNode.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/asserts/generated/index.js b/front_page/node_modules/@babel/types/lib/asserts/generated/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/asserts/generated/index.js rename to front_page/node_modules/@babel/types/lib/asserts/generated/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/asserts/generated/index.js.map b/front_page/node_modules/@babel/types/lib/asserts/generated/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/asserts/generated/index.js.map rename to front_page/node_modules/@babel/types/lib/asserts/generated/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/ast-types/generated/index.js b/front_page/node_modules/@babel/types/lib/ast-types/generated/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/ast-types/generated/index.js rename to front_page/node_modules/@babel/types/lib/ast-types/generated/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/ast-types/generated/index.js.map b/front_page/node_modules/@babel/types/lib/ast-types/generated/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/ast-types/generated/index.js.map rename to front_page/node_modules/@babel/types/lib/ast-types/generated/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js b/front_page/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js rename to front_page/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map b/front_page/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map rename to front_page/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js b/front_page/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js rename to front_page/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map b/front_page/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map rename to front_page/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/generated/index.js b/front_page/node_modules/@babel/types/lib/builders/generated/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/generated/index.js rename to front_page/node_modules/@babel/types/lib/builders/generated/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/generated/index.js.map b/front_page/node_modules/@babel/types/lib/builders/generated/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/generated/index.js.map rename to front_page/node_modules/@babel/types/lib/builders/generated/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/generated/uppercase.js b/front_page/node_modules/@babel/types/lib/builders/generated/uppercase.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/generated/uppercase.js rename to front_page/node_modules/@babel/types/lib/builders/generated/uppercase.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/generated/uppercase.js.map b/front_page/node_modules/@babel/types/lib/builders/generated/uppercase.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/generated/uppercase.js.map rename to front_page/node_modules/@babel/types/lib/builders/generated/uppercase.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/productions.js b/front_page/node_modules/@babel/types/lib/builders/productions.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/productions.js rename to front_page/node_modules/@babel/types/lib/builders/productions.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/productions.js.map b/front_page/node_modules/@babel/types/lib/builders/productions.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/productions.js.map rename to front_page/node_modules/@babel/types/lib/builders/productions.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/react/buildChildren.js b/front_page/node_modules/@babel/types/lib/builders/react/buildChildren.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/react/buildChildren.js rename to front_page/node_modules/@babel/types/lib/builders/react/buildChildren.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/react/buildChildren.js.map b/front_page/node_modules/@babel/types/lib/builders/react/buildChildren.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/react/buildChildren.js.map rename to front_page/node_modules/@babel/types/lib/builders/react/buildChildren.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js b/front_page/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js rename to front_page/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map b/front_page/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map rename to front_page/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/validateNode.js b/front_page/node_modules/@babel/types/lib/builders/validateNode.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/validateNode.js rename to front_page/node_modules/@babel/types/lib/builders/validateNode.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/builders/validateNode.js.map b/front_page/node_modules/@babel/types/lib/builders/validateNode.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/builders/validateNode.js.map rename to front_page/node_modules/@babel/types/lib/builders/validateNode.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/clone.js b/front_page/node_modules/@babel/types/lib/clone/clone.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/clone.js rename to front_page/node_modules/@babel/types/lib/clone/clone.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/clone.js.map b/front_page/node_modules/@babel/types/lib/clone/clone.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/clone.js.map rename to front_page/node_modules/@babel/types/lib/clone/clone.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeep.js b/front_page/node_modules/@babel/types/lib/clone/cloneDeep.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeep.js rename to front_page/node_modules/@babel/types/lib/clone/cloneDeep.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeep.js.map b/front_page/node_modules/@babel/types/lib/clone/cloneDeep.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeep.js.map rename to front_page/node_modules/@babel/types/lib/clone/cloneDeep.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js b/front_page/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js rename to front_page/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map b/front_page/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map rename to front_page/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneNode.js b/front_page/node_modules/@babel/types/lib/clone/cloneNode.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneNode.js rename to front_page/node_modules/@babel/types/lib/clone/cloneNode.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneNode.js.map b/front_page/node_modules/@babel/types/lib/clone/cloneNode.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneNode.js.map rename to front_page/node_modules/@babel/types/lib/clone/cloneNode.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js b/front_page/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js rename to front_page/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map b/front_page/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map rename to front_page/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/addComment.js b/front_page/node_modules/@babel/types/lib/comments/addComment.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/addComment.js rename to front_page/node_modules/@babel/types/lib/comments/addComment.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/addComment.js.map b/front_page/node_modules/@babel/types/lib/comments/addComment.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/addComment.js.map rename to front_page/node_modules/@babel/types/lib/comments/addComment.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/addComments.js b/front_page/node_modules/@babel/types/lib/comments/addComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/addComments.js rename to front_page/node_modules/@babel/types/lib/comments/addComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/addComments.js.map b/front_page/node_modules/@babel/types/lib/comments/addComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/addComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/addComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritInnerComments.js b/front_page/node_modules/@babel/types/lib/comments/inheritInnerComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritInnerComments.js rename to front_page/node_modules/@babel/types/lib/comments/inheritInnerComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map b/front_page/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritLeadingComments.js b/front_page/node_modules/@babel/types/lib/comments/inheritLeadingComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritLeadingComments.js rename to front_page/node_modules/@babel/types/lib/comments/inheritLeadingComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map b/front_page/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritTrailingComments.js b/front_page/node_modules/@babel/types/lib/comments/inheritTrailingComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritTrailingComments.js rename to front_page/node_modules/@babel/types/lib/comments/inheritTrailingComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map b/front_page/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritsComments.js b/front_page/node_modules/@babel/types/lib/comments/inheritsComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritsComments.js rename to front_page/node_modules/@babel/types/lib/comments/inheritsComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/inheritsComments.js.map b/front_page/node_modules/@babel/types/lib/comments/inheritsComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/inheritsComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/inheritsComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/removeComments.js b/front_page/node_modules/@babel/types/lib/comments/removeComments.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/removeComments.js rename to front_page/node_modules/@babel/types/lib/comments/removeComments.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/comments/removeComments.js.map b/front_page/node_modules/@babel/types/lib/comments/removeComments.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/comments/removeComments.js.map rename to front_page/node_modules/@babel/types/lib/comments/removeComments.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/constants/generated/index.js b/front_page/node_modules/@babel/types/lib/constants/generated/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/constants/generated/index.js rename to front_page/node_modules/@babel/types/lib/constants/generated/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/constants/generated/index.js.map b/front_page/node_modules/@babel/types/lib/constants/generated/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/constants/generated/index.js.map rename to front_page/node_modules/@babel/types/lib/constants/generated/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/constants/index.js b/front_page/node_modules/@babel/types/lib/constants/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/constants/index.js rename to front_page/node_modules/@babel/types/lib/constants/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/constants/index.js.map b/front_page/node_modules/@babel/types/lib/constants/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/constants/index.js.map rename to front_page/node_modules/@babel/types/lib/constants/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/ensureBlock.js b/front_page/node_modules/@babel/types/lib/converters/ensureBlock.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/ensureBlock.js rename to front_page/node_modules/@babel/types/lib/converters/ensureBlock.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/ensureBlock.js.map b/front_page/node_modules/@babel/types/lib/converters/ensureBlock.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/ensureBlock.js.map rename to front_page/node_modules/@babel/types/lib/converters/ensureBlock.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js b/front_page/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js rename to front_page/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map b/front_page/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map rename to front_page/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js b/front_page/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js rename to front_page/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map b/front_page/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map rename to front_page/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toBlock.js b/front_page/node_modules/@babel/types/lib/converters/toBlock.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toBlock.js rename to front_page/node_modules/@babel/types/lib/converters/toBlock.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toBlock.js.map b/front_page/node_modules/@babel/types/lib/converters/toBlock.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toBlock.js.map rename to front_page/node_modules/@babel/types/lib/converters/toBlock.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toComputedKey.js b/front_page/node_modules/@babel/types/lib/converters/toComputedKey.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toComputedKey.js rename to front_page/node_modules/@babel/types/lib/converters/toComputedKey.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toComputedKey.js.map b/front_page/node_modules/@babel/types/lib/converters/toComputedKey.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toComputedKey.js.map rename to front_page/node_modules/@babel/types/lib/converters/toComputedKey.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toExpression.js b/front_page/node_modules/@babel/types/lib/converters/toExpression.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toExpression.js rename to front_page/node_modules/@babel/types/lib/converters/toExpression.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toExpression.js.map b/front_page/node_modules/@babel/types/lib/converters/toExpression.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toExpression.js.map rename to front_page/node_modules/@babel/types/lib/converters/toExpression.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toIdentifier.js b/front_page/node_modules/@babel/types/lib/converters/toIdentifier.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toIdentifier.js rename to front_page/node_modules/@babel/types/lib/converters/toIdentifier.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toIdentifier.js.map b/front_page/node_modules/@babel/types/lib/converters/toIdentifier.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toIdentifier.js.map rename to front_page/node_modules/@babel/types/lib/converters/toIdentifier.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toKeyAlias.js b/front_page/node_modules/@babel/types/lib/converters/toKeyAlias.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toKeyAlias.js rename to front_page/node_modules/@babel/types/lib/converters/toKeyAlias.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toKeyAlias.js.map b/front_page/node_modules/@babel/types/lib/converters/toKeyAlias.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toKeyAlias.js.map rename to front_page/node_modules/@babel/types/lib/converters/toKeyAlias.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toSequenceExpression.js b/front_page/node_modules/@babel/types/lib/converters/toSequenceExpression.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toSequenceExpression.js rename to front_page/node_modules/@babel/types/lib/converters/toSequenceExpression.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map b/front_page/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map rename to front_page/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toStatement.js b/front_page/node_modules/@babel/types/lib/converters/toStatement.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toStatement.js rename to front_page/node_modules/@babel/types/lib/converters/toStatement.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/toStatement.js.map b/front_page/node_modules/@babel/types/lib/converters/toStatement.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/toStatement.js.map rename to front_page/node_modules/@babel/types/lib/converters/toStatement.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/valueToNode.js b/front_page/node_modules/@babel/types/lib/converters/valueToNode.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/valueToNode.js rename to front_page/node_modules/@babel/types/lib/converters/valueToNode.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/converters/valueToNode.js.map b/front_page/node_modules/@babel/types/lib/converters/valueToNode.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/converters/valueToNode.js.map rename to front_page/node_modules/@babel/types/lib/converters/valueToNode.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/core.js b/front_page/node_modules/@babel/types/lib/definitions/core.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/core.js rename to front_page/node_modules/@babel/types/lib/definitions/core.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/core.js.map b/front_page/node_modules/@babel/types/lib/definitions/core.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/core.js.map rename to front_page/node_modules/@babel/types/lib/definitions/core.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/deprecated-aliases.js b/front_page/node_modules/@babel/types/lib/definitions/deprecated-aliases.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/deprecated-aliases.js rename to front_page/node_modules/@babel/types/lib/definitions/deprecated-aliases.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map b/front_page/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map rename to front_page/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/experimental.js b/front_page/node_modules/@babel/types/lib/definitions/experimental.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/experimental.js rename to front_page/node_modules/@babel/types/lib/definitions/experimental.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/experimental.js.map b/front_page/node_modules/@babel/types/lib/definitions/experimental.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/experimental.js.map rename to front_page/node_modules/@babel/types/lib/definitions/experimental.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/flow.js b/front_page/node_modules/@babel/types/lib/definitions/flow.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/flow.js rename to front_page/node_modules/@babel/types/lib/definitions/flow.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/flow.js.map b/front_page/node_modules/@babel/types/lib/definitions/flow.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/flow.js.map rename to front_page/node_modules/@babel/types/lib/definitions/flow.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/index.js b/front_page/node_modules/@babel/types/lib/definitions/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/index.js rename to front_page/node_modules/@babel/types/lib/definitions/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/index.js.map b/front_page/node_modules/@babel/types/lib/definitions/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/index.js.map rename to front_page/node_modules/@babel/types/lib/definitions/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/jsx.js b/front_page/node_modules/@babel/types/lib/definitions/jsx.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/jsx.js rename to front_page/node_modules/@babel/types/lib/definitions/jsx.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/jsx.js.map b/front_page/node_modules/@babel/types/lib/definitions/jsx.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/jsx.js.map rename to front_page/node_modules/@babel/types/lib/definitions/jsx.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/misc.js b/front_page/node_modules/@babel/types/lib/definitions/misc.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/misc.js rename to front_page/node_modules/@babel/types/lib/definitions/misc.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/misc.js.map b/front_page/node_modules/@babel/types/lib/definitions/misc.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/misc.js.map rename to front_page/node_modules/@babel/types/lib/definitions/misc.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/placeholders.js b/front_page/node_modules/@babel/types/lib/definitions/placeholders.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/placeholders.js rename to front_page/node_modules/@babel/types/lib/definitions/placeholders.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/placeholders.js.map b/front_page/node_modules/@babel/types/lib/definitions/placeholders.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/placeholders.js.map rename to front_page/node_modules/@babel/types/lib/definitions/placeholders.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/typescript.js b/front_page/node_modules/@babel/types/lib/definitions/typescript.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/typescript.js rename to front_page/node_modules/@babel/types/lib/definitions/typescript.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/typescript.js.map b/front_page/node_modules/@babel/types/lib/definitions/typescript.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/typescript.js.map rename to front_page/node_modules/@babel/types/lib/definitions/typescript.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/utils.js b/front_page/node_modules/@babel/types/lib/definitions/utils.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/utils.js rename to front_page/node_modules/@babel/types/lib/definitions/utils.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/definitions/utils.js.map b/front_page/node_modules/@babel/types/lib/definitions/utils.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/definitions/utils.js.map rename to front_page/node_modules/@babel/types/lib/definitions/utils.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/index-legacy.d.ts b/front_page/node_modules/@babel/types/lib/index-legacy.d.ts similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/index-legacy.d.ts rename to front_page/node_modules/@babel/types/lib/index-legacy.d.ts diff --git a/lesson1_vite/node_modules/@babel/types/lib/index.d.ts b/front_page/node_modules/@babel/types/lib/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/index.d.ts rename to front_page/node_modules/@babel/types/lib/index.d.ts diff --git a/lesson1_vite/node_modules/@babel/types/lib/index.js b/front_page/node_modules/@babel/types/lib/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/index.js rename to front_page/node_modules/@babel/types/lib/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/index.js.flow b/front_page/node_modules/@babel/types/lib/index.js.flow similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/index.js.flow rename to front_page/node_modules/@babel/types/lib/index.js.flow diff --git a/lesson1_vite/node_modules/@babel/types/lib/index.js.map b/front_page/node_modules/@babel/types/lib/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/index.js.map rename to front_page/node_modules/@babel/types/lib/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js b/front_page/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js rename to front_page/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map b/front_page/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map rename to front_page/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js b/front_page/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js rename to front_page/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map b/front_page/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map rename to front_page/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/inherits.js b/front_page/node_modules/@babel/types/lib/modifications/inherits.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/inherits.js rename to front_page/node_modules/@babel/types/lib/modifications/inherits.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/inherits.js.map b/front_page/node_modules/@babel/types/lib/modifications/inherits.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/inherits.js.map rename to front_page/node_modules/@babel/types/lib/modifications/inherits.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js b/front_page/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js rename to front_page/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map b/front_page/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map rename to front_page/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/removeProperties.js b/front_page/node_modules/@babel/types/lib/modifications/removeProperties.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/removeProperties.js rename to front_page/node_modules/@babel/types/lib/modifications/removeProperties.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/removeProperties.js.map b/front_page/node_modules/@babel/types/lib/modifications/removeProperties.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/removeProperties.js.map rename to front_page/node_modules/@babel/types/lib/modifications/removeProperties.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js b/front_page/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js rename to front_page/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map b/front_page/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map rename to front_page/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js b/front_page/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js rename to front_page/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map b/front_page/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map rename to front_page/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js b/front_page/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js rename to front_page/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map b/front_page/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map rename to front_page/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/front_page/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js rename to front_page/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map b/front_page/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map rename to front_page/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getFunctionName.js b/front_page/node_modules/@babel/types/lib/retrievers/getFunctionName.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getFunctionName.js rename to front_page/node_modules/@babel/types/lib/retrievers/getFunctionName.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map b/front_page/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map rename to front_page/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js b/front_page/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js rename to front_page/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map b/front_page/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map rename to front_page/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/traverse/traverse.js b/front_page/node_modules/@babel/types/lib/traverse/traverse.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/traverse/traverse.js rename to front_page/node_modules/@babel/types/lib/traverse/traverse.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/traverse/traverse.js.map b/front_page/node_modules/@babel/types/lib/traverse/traverse.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/traverse/traverse.js.map rename to front_page/node_modules/@babel/types/lib/traverse/traverse.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/traverse/traverseFast.js b/front_page/node_modules/@babel/types/lib/traverse/traverseFast.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/traverse/traverseFast.js rename to front_page/node_modules/@babel/types/lib/traverse/traverseFast.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/traverse/traverseFast.js.map b/front_page/node_modules/@babel/types/lib/traverse/traverseFast.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/traverse/traverseFast.js.map rename to front_page/node_modules/@babel/types/lib/traverse/traverseFast.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/deprecationWarning.js b/front_page/node_modules/@babel/types/lib/utils/deprecationWarning.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/deprecationWarning.js rename to front_page/node_modules/@babel/types/lib/utils/deprecationWarning.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/deprecationWarning.js.map b/front_page/node_modules/@babel/types/lib/utils/deprecationWarning.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/deprecationWarning.js.map rename to front_page/node_modules/@babel/types/lib/utils/deprecationWarning.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/inherit.js b/front_page/node_modules/@babel/types/lib/utils/inherit.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/inherit.js rename to front_page/node_modules/@babel/types/lib/utils/inherit.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/inherit.js.map b/front_page/node_modules/@babel/types/lib/utils/inherit.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/inherit.js.map rename to front_page/node_modules/@babel/types/lib/utils/inherit.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js b/front_page/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js rename to front_page/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map b/front_page/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map rename to front_page/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/shallowEqual.js b/front_page/node_modules/@babel/types/lib/utils/shallowEqual.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/shallowEqual.js rename to front_page/node_modules/@babel/types/lib/utils/shallowEqual.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/utils/shallowEqual.js.map b/front_page/node_modules/@babel/types/lib/utils/shallowEqual.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/utils/shallowEqual.js.map rename to front_page/node_modules/@babel/types/lib/utils/shallowEqual.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js b/front_page/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js rename to front_page/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map b/front_page/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map rename to front_page/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/generated/index.js b/front_page/node_modules/@babel/types/lib/validators/generated/index.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/generated/index.js rename to front_page/node_modules/@babel/types/lib/validators/generated/index.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/generated/index.js.map b/front_page/node_modules/@babel/types/lib/validators/generated/index.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/generated/index.js.map rename to front_page/node_modules/@babel/types/lib/validators/generated/index.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/is.js b/front_page/node_modules/@babel/types/lib/validators/is.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/is.js rename to front_page/node_modules/@babel/types/lib/validators/is.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/is.js.map b/front_page/node_modules/@babel/types/lib/validators/is.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/is.js.map rename to front_page/node_modules/@babel/types/lib/validators/is.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isBinding.js b/front_page/node_modules/@babel/types/lib/validators/isBinding.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isBinding.js rename to front_page/node_modules/@babel/types/lib/validators/isBinding.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isBinding.js.map b/front_page/node_modules/@babel/types/lib/validators/isBinding.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isBinding.js.map rename to front_page/node_modules/@babel/types/lib/validators/isBinding.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isBlockScoped.js b/front_page/node_modules/@babel/types/lib/validators/isBlockScoped.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isBlockScoped.js rename to front_page/node_modules/@babel/types/lib/validators/isBlockScoped.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isBlockScoped.js.map b/front_page/node_modules/@babel/types/lib/validators/isBlockScoped.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isBlockScoped.js.map rename to front_page/node_modules/@babel/types/lib/validators/isBlockScoped.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isImmutable.js b/front_page/node_modules/@babel/types/lib/validators/isImmutable.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isImmutable.js rename to front_page/node_modules/@babel/types/lib/validators/isImmutable.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isImmutable.js.map b/front_page/node_modules/@babel/types/lib/validators/isImmutable.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isImmutable.js.map rename to front_page/node_modules/@babel/types/lib/validators/isImmutable.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isLet.js b/front_page/node_modules/@babel/types/lib/validators/isLet.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isLet.js rename to front_page/node_modules/@babel/types/lib/validators/isLet.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isLet.js.map b/front_page/node_modules/@babel/types/lib/validators/isLet.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isLet.js.map rename to front_page/node_modules/@babel/types/lib/validators/isLet.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isNode.js b/front_page/node_modules/@babel/types/lib/validators/isNode.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isNode.js rename to front_page/node_modules/@babel/types/lib/validators/isNode.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isNode.js.map b/front_page/node_modules/@babel/types/lib/validators/isNode.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isNode.js.map rename to front_page/node_modules/@babel/types/lib/validators/isNode.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isNodesEquivalent.js b/front_page/node_modules/@babel/types/lib/validators/isNodesEquivalent.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isNodesEquivalent.js rename to front_page/node_modules/@babel/types/lib/validators/isNodesEquivalent.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map b/front_page/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map rename to front_page/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isPlaceholderType.js b/front_page/node_modules/@babel/types/lib/validators/isPlaceholderType.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isPlaceholderType.js rename to front_page/node_modules/@babel/types/lib/validators/isPlaceholderType.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map b/front_page/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map rename to front_page/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isReferenced.js b/front_page/node_modules/@babel/types/lib/validators/isReferenced.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isReferenced.js rename to front_page/node_modules/@babel/types/lib/validators/isReferenced.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isReferenced.js.map b/front_page/node_modules/@babel/types/lib/validators/isReferenced.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isReferenced.js.map rename to front_page/node_modules/@babel/types/lib/validators/isReferenced.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isScope.js b/front_page/node_modules/@babel/types/lib/validators/isScope.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isScope.js rename to front_page/node_modules/@babel/types/lib/validators/isScope.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isScope.js.map b/front_page/node_modules/@babel/types/lib/validators/isScope.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isScope.js.map rename to front_page/node_modules/@babel/types/lib/validators/isScope.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isSpecifierDefault.js b/front_page/node_modules/@babel/types/lib/validators/isSpecifierDefault.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isSpecifierDefault.js rename to front_page/node_modules/@babel/types/lib/validators/isSpecifierDefault.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map b/front_page/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map rename to front_page/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isType.js b/front_page/node_modules/@babel/types/lib/validators/isType.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isType.js rename to front_page/node_modules/@babel/types/lib/validators/isType.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isType.js.map b/front_page/node_modules/@babel/types/lib/validators/isType.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isType.js.map rename to front_page/node_modules/@babel/types/lib/validators/isType.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isValidES3Identifier.js b/front_page/node_modules/@babel/types/lib/validators/isValidES3Identifier.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isValidES3Identifier.js rename to front_page/node_modules/@babel/types/lib/validators/isValidES3Identifier.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map b/front_page/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map rename to front_page/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isValidIdentifier.js b/front_page/node_modules/@babel/types/lib/validators/isValidIdentifier.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isValidIdentifier.js rename to front_page/node_modules/@babel/types/lib/validators/isValidIdentifier.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map b/front_page/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map rename to front_page/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isVar.js b/front_page/node_modules/@babel/types/lib/validators/isVar.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isVar.js rename to front_page/node_modules/@babel/types/lib/validators/isVar.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/isVar.js.map b/front_page/node_modules/@babel/types/lib/validators/isVar.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/isVar.js.map rename to front_page/node_modules/@babel/types/lib/validators/isVar.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/matchesPattern.js b/front_page/node_modules/@babel/types/lib/validators/matchesPattern.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/matchesPattern.js rename to front_page/node_modules/@babel/types/lib/validators/matchesPattern.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/matchesPattern.js.map b/front_page/node_modules/@babel/types/lib/validators/matchesPattern.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/matchesPattern.js.map rename to front_page/node_modules/@babel/types/lib/validators/matchesPattern.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/react/isCompatTag.js b/front_page/node_modules/@babel/types/lib/validators/react/isCompatTag.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/react/isCompatTag.js rename to front_page/node_modules/@babel/types/lib/validators/react/isCompatTag.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map b/front_page/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map rename to front_page/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/react/isReactComponent.js b/front_page/node_modules/@babel/types/lib/validators/react/isReactComponent.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/react/isReactComponent.js rename to front_page/node_modules/@babel/types/lib/validators/react/isReactComponent.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map b/front_page/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map rename to front_page/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/validate.js b/front_page/node_modules/@babel/types/lib/validators/validate.js similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/validate.js rename to front_page/node_modules/@babel/types/lib/validators/validate.js diff --git a/lesson1_vite/node_modules/@babel/types/lib/validators/validate.js.map b/front_page/node_modules/@babel/types/lib/validators/validate.js.map similarity index 100% rename from lesson1_vite/node_modules/@babel/types/lib/validators/validate.js.map rename to front_page/node_modules/@babel/types/lib/validators/validate.js.map diff --git a/lesson1_vite/node_modules/@babel/types/package.json b/front_page/node_modules/@babel/types/package.json similarity index 100% rename from lesson1_vite/node_modules/@babel/types/package.json rename to front_page/node_modules/@babel/types/package.json diff --git a/lesson1_vite/node_modules/@babel/types/tsconfig.json b/front_page/node_modules/@babel/types/tsconfig.json similarity index 100% rename from lesson1_vite/node_modules/@babel/types/tsconfig.json rename to front_page/node_modules/@babel/types/tsconfig.json diff --git a/lesson1_vite/node_modules/@babel/types/tsconfig.tsbuildinfo b/front_page/node_modules/@babel/types/tsconfig.tsbuildinfo similarity index 100% rename from lesson1_vite/node_modules/@babel/types/tsconfig.tsbuildinfo rename to front_page/node_modules/@babel/types/tsconfig.tsbuildinfo diff --git a/lesson1_vite/node_modules/@esbuild/win32-x64/README.md b/front_page/node_modules/@esbuild/win32-x64/README.md similarity index 100% rename from lesson1_vite/node_modules/@esbuild/win32-x64/README.md rename to front_page/node_modules/@esbuild/win32-x64/README.md diff --git a/lesson1_vite/node_modules/@esbuild/win32-x64/esbuild.exe b/front_page/node_modules/@esbuild/win32-x64/esbuild.exe similarity index 100% rename from lesson1_vite/node_modules/@esbuild/win32-x64/esbuild.exe rename to front_page/node_modules/@esbuild/win32-x64/esbuild.exe diff --git a/lesson1_vite/node_modules/@esbuild/win32-x64/package.json b/front_page/node_modules/@esbuild/win32-x64/package.json similarity index 100% rename from lesson1_vite/node_modules/@esbuild/win32-x64/package.json rename to front_page/node_modules/@esbuild/win32-x64/package.json diff --git a/lesson1_vite/node_modules/@jridgewell/sourcemap-codec/LICENSE b/front_page/node_modules/@jridgewell/sourcemap-codec/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@jridgewell/sourcemap-codec/LICENSE rename to front_page/node_modules/@jridgewell/sourcemap-codec/LICENSE diff --git a/lesson1_vite/node_modules/@jridgewell/sourcemap-codec/README.md b/front_page/node_modules/@jridgewell/sourcemap-codec/README.md similarity index 100% rename from lesson1_vite/node_modules/@jridgewell/sourcemap-codec/README.md rename to front_page/node_modules/@jridgewell/sourcemap-codec/README.md diff --git a/lesson1_vite/node_modules/@jridgewell/sourcemap-codec/package.json b/front_page/node_modules/@jridgewell/sourcemap-codec/package.json similarity index 100% rename from lesson1_vite/node_modules/@jridgewell/sourcemap-codec/package.json rename to front_page/node_modules/@jridgewell/sourcemap-codec/package.json diff --git a/lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/README.md b/front_page/node_modules/@rollup/rollup-win32-x64-msvc/README.md similarity index 100% rename from lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/README.md rename to front_page/node_modules/@rollup/rollup-win32-x64-msvc/README.md diff --git a/lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/package.json b/front_page/node_modules/@rollup/rollup-win32-x64-msvc/package.json similarity index 100% rename from lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/package.json rename to front_page/node_modules/@rollup/rollup-win32-x64-msvc/package.json diff --git a/lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node b/front_page/node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node similarity index 100% rename from lesson1_vite/node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node rename to front_page/node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node diff --git a/lesson1_vite/node_modules/@types/estree/LICENSE b/front_page/node_modules/@types/estree/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@types/estree/LICENSE rename to front_page/node_modules/@types/estree/LICENSE diff --git a/lesson1_vite/node_modules/@types/estree/README.md b/front_page/node_modules/@types/estree/README.md similarity index 100% rename from lesson1_vite/node_modules/@types/estree/README.md rename to front_page/node_modules/@types/estree/README.md diff --git a/lesson1_vite/node_modules/@types/estree/flow.d.ts b/front_page/node_modules/@types/estree/flow.d.ts similarity index 100% rename from lesson1_vite/node_modules/@types/estree/flow.d.ts rename to front_page/node_modules/@types/estree/flow.d.ts diff --git a/lesson1_vite/node_modules/@types/estree/index.d.ts b/front_page/node_modules/@types/estree/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/@types/estree/index.d.ts rename to front_page/node_modules/@types/estree/index.d.ts diff --git a/lesson1_vite/node_modules/@types/estree/package.json b/front_page/node_modules/@types/estree/package.json similarity index 100% rename from lesson1_vite/node_modules/@types/estree/package.json rename to front_page/node_modules/@types/estree/package.json diff --git a/lesson1_vite/node_modules/@vitejs/plugin-vue/LICENSE b/front_page/node_modules/@vitejs/plugin-vue/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vitejs/plugin-vue/LICENSE rename to front_page/node_modules/@vitejs/plugin-vue/LICENSE diff --git a/lesson1_vite/node_modules/@vitejs/plugin-vue/README.md b/front_page/node_modules/@vitejs/plugin-vue/README.md similarity index 100% rename from lesson1_vite/node_modules/@vitejs/plugin-vue/README.md rename to front_page/node_modules/@vitejs/plugin-vue/README.md diff --git a/lesson1_vite/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite b/front_page/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite similarity index 100% rename from lesson1_vite/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite rename to front_page/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite diff --git a/lesson1_vite/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite.cmd b/front_page/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite.cmd similarity index 100% rename from lesson1_vite/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite.cmd rename to front_page/node_modules/@vitejs/plugin-vue/node_modules/.bin/vite.cmd diff --git a/lesson1_vite/node_modules/@vitejs/plugin-vue/package.json b/front_page/node_modules/@vitejs/plugin-vue/package.json similarity index 100% rename from lesson1_vite/node_modules/@vitejs/plugin-vue/package.json rename to front_page/node_modules/@vitejs/plugin-vue/package.json diff --git a/lesson1_vite/node_modules/@vue/compiler-core/LICENSE b/front_page/node_modules/@vue/compiler-core/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/LICENSE rename to front_page/node_modules/@vue/compiler-core/LICENSE diff --git a/lesson1_vite/node_modules/@vue/compiler-core/README.md b/front_page/node_modules/@vue/compiler-core/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/README.md rename to front_page/node_modules/@vue/compiler-core/README.md diff --git a/lesson1_vite/node_modules/@vue/compiler-core/index.js b/front_page/node_modules/@vue/compiler-core/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/index.js rename to front_page/node_modules/@vue/compiler-core/index.js diff --git a/lesson1_vite/node_modules/@vue/compiler-core/node_modules/.bin/parser b/front_page/node_modules/@vue/compiler-core/node_modules/.bin/parser similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/node_modules/.bin/parser rename to front_page/node_modules/@vue/compiler-core/node_modules/.bin/parser diff --git a/lesson1_vite/node_modules/@vue/compiler-core/node_modules/.bin/parser.cmd b/front_page/node_modules/@vue/compiler-core/node_modules/.bin/parser.cmd similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/node_modules/.bin/parser.cmd rename to front_page/node_modules/@vue/compiler-core/node_modules/.bin/parser.cmd diff --git a/lesson1_vite/node_modules/@vue/compiler-core/package.json b/front_page/node_modules/@vue/compiler-core/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-core/package.json rename to front_page/node_modules/@vue/compiler-core/package.json diff --git a/lesson1_vite/node_modules/@vue/compiler-dom/LICENSE b/front_page/node_modules/@vue/compiler-dom/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-dom/LICENSE rename to front_page/node_modules/@vue/compiler-dom/LICENSE diff --git a/lesson1_vite/node_modules/@vue/compiler-dom/README.md b/front_page/node_modules/@vue/compiler-dom/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-dom/README.md rename to front_page/node_modules/@vue/compiler-dom/README.md diff --git a/lesson1_vite/node_modules/@vue/compiler-dom/index.js b/front_page/node_modules/@vue/compiler-dom/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-dom/index.js rename to front_page/node_modules/@vue/compiler-dom/index.js diff --git a/lesson1_vite/node_modules/@vue/compiler-dom/package.json b/front_page/node_modules/@vue/compiler-dom/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-dom/package.json rename to front_page/node_modules/@vue/compiler-dom/package.json diff --git a/lesson1_vite/node_modules/@vue/compiler-sfc/LICENSE b/front_page/node_modules/@vue/compiler-sfc/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-sfc/LICENSE rename to front_page/node_modules/@vue/compiler-sfc/LICENSE diff --git a/lesson1_vite/node_modules/@vue/compiler-sfc/README.md b/front_page/node_modules/@vue/compiler-sfc/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-sfc/README.md rename to front_page/node_modules/@vue/compiler-sfc/README.md diff --git a/lesson1_vite/node_modules/@vue/compiler-sfc/node_modules/.bin/parser b/front_page/node_modules/@vue/compiler-sfc/node_modules/.bin/parser similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-sfc/node_modules/.bin/parser rename to front_page/node_modules/@vue/compiler-sfc/node_modules/.bin/parser diff --git a/lesson1_vite/node_modules/@vue/compiler-sfc/node_modules/.bin/parser.cmd b/front_page/node_modules/@vue/compiler-sfc/node_modules/.bin/parser.cmd similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-sfc/node_modules/.bin/parser.cmd rename to front_page/node_modules/@vue/compiler-sfc/node_modules/.bin/parser.cmd diff --git a/lesson1_vite/node_modules/@vue/compiler-sfc/package.json b/front_page/node_modules/@vue/compiler-sfc/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-sfc/package.json rename to front_page/node_modules/@vue/compiler-sfc/package.json diff --git a/lesson1_vite/node_modules/@vue/compiler-ssr/LICENSE b/front_page/node_modules/@vue/compiler-ssr/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-ssr/LICENSE rename to front_page/node_modules/@vue/compiler-ssr/LICENSE diff --git a/lesson1_vite/node_modules/@vue/compiler-ssr/README.md b/front_page/node_modules/@vue/compiler-ssr/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-ssr/README.md rename to front_page/node_modules/@vue/compiler-ssr/README.md diff --git a/lesson1_vite/node_modules/@vue/compiler-ssr/package.json b/front_page/node_modules/@vue/compiler-ssr/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/compiler-ssr/package.json rename to front_page/node_modules/@vue/compiler-ssr/package.json diff --git a/lesson1_vite/node_modules/@vue/reactivity/LICENSE b/front_page/node_modules/@vue/reactivity/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/reactivity/LICENSE rename to front_page/node_modules/@vue/reactivity/LICENSE diff --git a/lesson1_vite/node_modules/@vue/reactivity/README.md b/front_page/node_modules/@vue/reactivity/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/reactivity/README.md rename to front_page/node_modules/@vue/reactivity/README.md diff --git a/lesson1_vite/node_modules/@vue/reactivity/index.js b/front_page/node_modules/@vue/reactivity/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/reactivity/index.js rename to front_page/node_modules/@vue/reactivity/index.js diff --git a/lesson1_vite/node_modules/@vue/reactivity/package.json b/front_page/node_modules/@vue/reactivity/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/reactivity/package.json rename to front_page/node_modules/@vue/reactivity/package.json diff --git a/lesson1_vite/node_modules/@vue/runtime-core/LICENSE b/front_page/node_modules/@vue/runtime-core/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-core/LICENSE rename to front_page/node_modules/@vue/runtime-core/LICENSE diff --git a/lesson1_vite/node_modules/@vue/runtime-core/README.md b/front_page/node_modules/@vue/runtime-core/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-core/README.md rename to front_page/node_modules/@vue/runtime-core/README.md diff --git a/lesson1_vite/node_modules/@vue/runtime-core/index.js b/front_page/node_modules/@vue/runtime-core/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-core/index.js rename to front_page/node_modules/@vue/runtime-core/index.js diff --git a/lesson1_vite/node_modules/@vue/runtime-core/package.json b/front_page/node_modules/@vue/runtime-core/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-core/package.json rename to front_page/node_modules/@vue/runtime-core/package.json diff --git a/lesson1_vite/node_modules/@vue/runtime-dom/LICENSE b/front_page/node_modules/@vue/runtime-dom/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-dom/LICENSE rename to front_page/node_modules/@vue/runtime-dom/LICENSE diff --git a/lesson1_vite/node_modules/@vue/runtime-dom/README.md b/front_page/node_modules/@vue/runtime-dom/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-dom/README.md rename to front_page/node_modules/@vue/runtime-dom/README.md diff --git a/lesson1_vite/node_modules/@vue/runtime-dom/index.js b/front_page/node_modules/@vue/runtime-dom/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-dom/index.js rename to front_page/node_modules/@vue/runtime-dom/index.js diff --git a/lesson1_vite/node_modules/@vue/runtime-dom/package.json b/front_page/node_modules/@vue/runtime-dom/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/runtime-dom/package.json rename to front_page/node_modules/@vue/runtime-dom/package.json diff --git a/lesson1_vite/node_modules/@vue/server-renderer/LICENSE b/front_page/node_modules/@vue/server-renderer/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/server-renderer/LICENSE rename to front_page/node_modules/@vue/server-renderer/LICENSE diff --git a/lesson1_vite/node_modules/@vue/server-renderer/README.md b/front_page/node_modules/@vue/server-renderer/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/server-renderer/README.md rename to front_page/node_modules/@vue/server-renderer/README.md diff --git a/lesson1_vite/node_modules/@vue/server-renderer/index.js b/front_page/node_modules/@vue/server-renderer/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/server-renderer/index.js rename to front_page/node_modules/@vue/server-renderer/index.js diff --git a/lesson1_vite/node_modules/@vue/server-renderer/package.json b/front_page/node_modules/@vue/server-renderer/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/server-renderer/package.json rename to front_page/node_modules/@vue/server-renderer/package.json diff --git a/lesson1_vite/node_modules/@vue/shared/LICENSE b/front_page/node_modules/@vue/shared/LICENSE similarity index 100% rename from lesson1_vite/node_modules/@vue/shared/LICENSE rename to front_page/node_modules/@vue/shared/LICENSE diff --git a/lesson1_vite/node_modules/@vue/shared/README.md b/front_page/node_modules/@vue/shared/README.md similarity index 100% rename from lesson1_vite/node_modules/@vue/shared/README.md rename to front_page/node_modules/@vue/shared/README.md diff --git a/lesson1_vite/node_modules/@vue/shared/index.js b/front_page/node_modules/@vue/shared/index.js similarity index 100% rename from lesson1_vite/node_modules/@vue/shared/index.js rename to front_page/node_modules/@vue/shared/index.js diff --git a/lesson1_vite/node_modules/@vue/shared/package.json b/front_page/node_modules/@vue/shared/package.json similarity index 100% rename from lesson1_vite/node_modules/@vue/shared/package.json rename to front_page/node_modules/@vue/shared/package.json diff --git a/lesson1_vite/node_modules/csstype/LICENSE b/front_page/node_modules/csstype/LICENSE similarity index 100% rename from lesson1_vite/node_modules/csstype/LICENSE rename to front_page/node_modules/csstype/LICENSE diff --git a/lesson1_vite/node_modules/csstype/README.md b/front_page/node_modules/csstype/README.md similarity index 100% rename from lesson1_vite/node_modules/csstype/README.md rename to front_page/node_modules/csstype/README.md diff --git a/lesson1_vite/node_modules/csstype/index.d.ts b/front_page/node_modules/csstype/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/csstype/index.d.ts rename to front_page/node_modules/csstype/index.d.ts diff --git a/lesson1_vite/node_modules/csstype/index.js.flow b/front_page/node_modules/csstype/index.js.flow similarity index 100% rename from lesson1_vite/node_modules/csstype/index.js.flow rename to front_page/node_modules/csstype/index.js.flow diff --git a/lesson1_vite/node_modules/csstype/package.json b/front_page/node_modules/csstype/package.json similarity index 100% rename from lesson1_vite/node_modules/csstype/package.json rename to front_page/node_modules/csstype/package.json diff --git a/lesson1_vite/node_modules/entities/LICENSE b/front_page/node_modules/entities/LICENSE similarity index 100% rename from lesson1_vite/node_modules/entities/LICENSE rename to front_page/node_modules/entities/LICENSE diff --git a/lesson1_vite/node_modules/entities/lib/decode.d.ts b/front_page/node_modules/entities/lib/decode.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode.d.ts rename to front_page/node_modules/entities/lib/decode.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/decode.d.ts.map b/front_page/node_modules/entities/lib/decode.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode.d.ts.map rename to front_page/node_modules/entities/lib/decode.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/decode.js b/front_page/node_modules/entities/lib/decode.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode.js rename to front_page/node_modules/entities/lib/decode.js diff --git a/lesson1_vite/node_modules/entities/lib/decode.js.map b/front_page/node_modules/entities/lib/decode.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode.js.map rename to front_page/node_modules/entities/lib/decode.js.map diff --git a/lesson1_vite/node_modules/entities/lib/decode_codepoint.d.ts b/front_page/node_modules/entities/lib/decode_codepoint.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode_codepoint.d.ts rename to front_page/node_modules/entities/lib/decode_codepoint.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/decode_codepoint.d.ts.map b/front_page/node_modules/entities/lib/decode_codepoint.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode_codepoint.d.ts.map rename to front_page/node_modules/entities/lib/decode_codepoint.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/decode_codepoint.js b/front_page/node_modules/entities/lib/decode_codepoint.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode_codepoint.js rename to front_page/node_modules/entities/lib/decode_codepoint.js diff --git a/lesson1_vite/node_modules/entities/lib/decode_codepoint.js.map b/front_page/node_modules/entities/lib/decode_codepoint.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/decode_codepoint.js.map rename to front_page/node_modules/entities/lib/decode_codepoint.js.map diff --git a/lesson1_vite/node_modules/entities/lib/encode.d.ts b/front_page/node_modules/entities/lib/encode.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/encode.d.ts rename to front_page/node_modules/entities/lib/encode.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/encode.d.ts.map b/front_page/node_modules/entities/lib/encode.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/encode.d.ts.map rename to front_page/node_modules/entities/lib/encode.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/encode.js b/front_page/node_modules/entities/lib/encode.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/encode.js rename to front_page/node_modules/entities/lib/encode.js diff --git a/lesson1_vite/node_modules/entities/lib/encode.js.map b/front_page/node_modules/entities/lib/encode.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/encode.js.map rename to front_page/node_modules/entities/lib/encode.js.map diff --git a/lesson1_vite/node_modules/entities/lib/escape.d.ts b/front_page/node_modules/entities/lib/escape.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/escape.d.ts rename to front_page/node_modules/entities/lib/escape.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/escape.d.ts.map b/front_page/node_modules/entities/lib/escape.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/escape.d.ts.map rename to front_page/node_modules/entities/lib/escape.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/escape.js b/front_page/node_modules/entities/lib/escape.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/escape.js rename to front_page/node_modules/entities/lib/escape.js diff --git a/lesson1_vite/node_modules/entities/lib/escape.js.map b/front_page/node_modules/entities/lib/escape.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/escape.js.map rename to front_page/node_modules/entities/lib/escape.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode.d.ts b/front_page/node_modules/entities/lib/esm/decode.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode.d.ts rename to front_page/node_modules/entities/lib/esm/decode.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode.d.ts.map b/front_page/node_modules/entities/lib/esm/decode.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode.d.ts.map rename to front_page/node_modules/entities/lib/esm/decode.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode.js b/front_page/node_modules/entities/lib/esm/decode.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode.js rename to front_page/node_modules/entities/lib/esm/decode.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode.js.map b/front_page/node_modules/entities/lib/esm/decode.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode.js.map rename to front_page/node_modules/entities/lib/esm/decode.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.d.ts b/front_page/node_modules/entities/lib/esm/decode_codepoint.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.d.ts rename to front_page/node_modules/entities/lib/esm/decode_codepoint.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.d.ts.map b/front_page/node_modules/entities/lib/esm/decode_codepoint.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.d.ts.map rename to front_page/node_modules/entities/lib/esm/decode_codepoint.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.js b/front_page/node_modules/entities/lib/esm/decode_codepoint.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.js rename to front_page/node_modules/entities/lib/esm/decode_codepoint.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.js.map b/front_page/node_modules/entities/lib/esm/decode_codepoint.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/decode_codepoint.js.map rename to front_page/node_modules/entities/lib/esm/decode_codepoint.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/encode.d.ts b/front_page/node_modules/entities/lib/esm/encode.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/encode.d.ts rename to front_page/node_modules/entities/lib/esm/encode.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/encode.d.ts.map b/front_page/node_modules/entities/lib/esm/encode.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/encode.d.ts.map rename to front_page/node_modules/entities/lib/esm/encode.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/encode.js b/front_page/node_modules/entities/lib/esm/encode.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/encode.js rename to front_page/node_modules/entities/lib/esm/encode.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/encode.js.map b/front_page/node_modules/entities/lib/esm/encode.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/encode.js.map rename to front_page/node_modules/entities/lib/esm/encode.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/escape.d.ts b/front_page/node_modules/entities/lib/esm/escape.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/escape.d.ts rename to front_page/node_modules/entities/lib/esm/escape.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/escape.d.ts.map b/front_page/node_modules/entities/lib/esm/escape.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/escape.d.ts.map rename to front_page/node_modules/entities/lib/esm/escape.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/escape.js b/front_page/node_modules/entities/lib/esm/escape.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/escape.js rename to front_page/node_modules/entities/lib/esm/escape.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/escape.js.map b/front_page/node_modules/entities/lib/esm/escape.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/escape.js.map rename to front_page/node_modules/entities/lib/esm/escape.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.d.ts b/front_page/node_modules/entities/lib/esm/generated/decode-data-html.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.d.ts rename to front_page/node_modules/entities/lib/esm/generated/decode-data-html.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map b/front_page/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map rename to front_page/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.js b/front_page/node_modules/entities/lib/esm/generated/decode-data-html.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.js rename to front_page/node_modules/entities/lib/esm/generated/decode-data-html.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.js.map b/front_page/node_modules/entities/lib/esm/generated/decode-data-html.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-html.js.map rename to front_page/node_modules/entities/lib/esm/generated/decode-data-html.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts b/front_page/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts rename to front_page/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map b/front_page/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map rename to front_page/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.js b/front_page/node_modules/entities/lib/esm/generated/decode-data-xml.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.js rename to front_page/node_modules/entities/lib/esm/generated/decode-data-xml.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.js.map b/front_page/node_modules/entities/lib/esm/generated/decode-data-xml.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/decode-data-xml.js.map rename to front_page/node_modules/entities/lib/esm/generated/decode-data-xml.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.d.ts b/front_page/node_modules/entities/lib/esm/generated/encode-html.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.d.ts rename to front_page/node_modules/entities/lib/esm/generated/encode-html.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.d.ts.map b/front_page/node_modules/entities/lib/esm/generated/encode-html.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.d.ts.map rename to front_page/node_modules/entities/lib/esm/generated/encode-html.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.js b/front_page/node_modules/entities/lib/esm/generated/encode-html.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.js rename to front_page/node_modules/entities/lib/esm/generated/encode-html.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.js.map b/front_page/node_modules/entities/lib/esm/generated/encode-html.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/generated/encode-html.js.map rename to front_page/node_modules/entities/lib/esm/generated/encode-html.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/index.d.ts b/front_page/node_modules/entities/lib/esm/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/index.d.ts rename to front_page/node_modules/entities/lib/esm/index.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/esm/index.d.ts.map b/front_page/node_modules/entities/lib/esm/index.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/index.d.ts.map rename to front_page/node_modules/entities/lib/esm/index.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/index.js b/front_page/node_modules/entities/lib/esm/index.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/index.js rename to front_page/node_modules/entities/lib/esm/index.js diff --git a/lesson1_vite/node_modules/entities/lib/esm/index.js.map b/front_page/node_modules/entities/lib/esm/index.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/index.js.map rename to front_page/node_modules/entities/lib/esm/index.js.map diff --git a/lesson1_vite/node_modules/entities/lib/esm/package.json b/front_page/node_modules/entities/lib/esm/package.json similarity index 100% rename from lesson1_vite/node_modules/entities/lib/esm/package.json rename to front_page/node_modules/entities/lib/esm/package.json diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-html.d.ts b/front_page/node_modules/entities/lib/generated/decode-data-html.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-html.d.ts rename to front_page/node_modules/entities/lib/generated/decode-data-html.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-html.d.ts.map b/front_page/node_modules/entities/lib/generated/decode-data-html.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-html.d.ts.map rename to front_page/node_modules/entities/lib/generated/decode-data-html.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-html.js b/front_page/node_modules/entities/lib/generated/decode-data-html.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-html.js rename to front_page/node_modules/entities/lib/generated/decode-data-html.js diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-html.js.map b/front_page/node_modules/entities/lib/generated/decode-data-html.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-html.js.map rename to front_page/node_modules/entities/lib/generated/decode-data-html.js.map diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.d.ts b/front_page/node_modules/entities/lib/generated/decode-data-xml.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.d.ts rename to front_page/node_modules/entities/lib/generated/decode-data-xml.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.d.ts.map b/front_page/node_modules/entities/lib/generated/decode-data-xml.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.d.ts.map rename to front_page/node_modules/entities/lib/generated/decode-data-xml.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.js b/front_page/node_modules/entities/lib/generated/decode-data-xml.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.js rename to front_page/node_modules/entities/lib/generated/decode-data-xml.js diff --git a/lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.js.map b/front_page/node_modules/entities/lib/generated/decode-data-xml.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/decode-data-xml.js.map rename to front_page/node_modules/entities/lib/generated/decode-data-xml.js.map diff --git a/lesson1_vite/node_modules/entities/lib/generated/encode-html.d.ts b/front_page/node_modules/entities/lib/generated/encode-html.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/encode-html.d.ts rename to front_page/node_modules/entities/lib/generated/encode-html.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/generated/encode-html.d.ts.map b/front_page/node_modules/entities/lib/generated/encode-html.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/encode-html.d.ts.map rename to front_page/node_modules/entities/lib/generated/encode-html.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/generated/encode-html.js b/front_page/node_modules/entities/lib/generated/encode-html.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/encode-html.js rename to front_page/node_modules/entities/lib/generated/encode-html.js diff --git a/lesson1_vite/node_modules/entities/lib/generated/encode-html.js.map b/front_page/node_modules/entities/lib/generated/encode-html.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/generated/encode-html.js.map rename to front_page/node_modules/entities/lib/generated/encode-html.js.map diff --git a/lesson1_vite/node_modules/entities/lib/index.d.ts b/front_page/node_modules/entities/lib/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/entities/lib/index.d.ts rename to front_page/node_modules/entities/lib/index.d.ts diff --git a/lesson1_vite/node_modules/entities/lib/index.d.ts.map b/front_page/node_modules/entities/lib/index.d.ts.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/index.d.ts.map rename to front_page/node_modules/entities/lib/index.d.ts.map diff --git a/lesson1_vite/node_modules/entities/lib/index.js b/front_page/node_modules/entities/lib/index.js similarity index 100% rename from lesson1_vite/node_modules/entities/lib/index.js rename to front_page/node_modules/entities/lib/index.js diff --git a/lesson1_vite/node_modules/entities/lib/index.js.map b/front_page/node_modules/entities/lib/index.js.map similarity index 100% rename from lesson1_vite/node_modules/entities/lib/index.js.map rename to front_page/node_modules/entities/lib/index.js.map diff --git a/lesson1_vite/node_modules/entities/package.json b/front_page/node_modules/entities/package.json similarity index 100% rename from lesson1_vite/node_modules/entities/package.json rename to front_page/node_modules/entities/package.json diff --git a/lesson1_vite/node_modules/entities/readme.md b/front_page/node_modules/entities/readme.md similarity index 100% rename from lesson1_vite/node_modules/entities/readme.md rename to front_page/node_modules/entities/readme.md diff --git a/lesson1_vite/node_modules/esbuild/LICENSE.md b/front_page/node_modules/esbuild/LICENSE.md similarity index 100% rename from lesson1_vite/node_modules/esbuild/LICENSE.md rename to front_page/node_modules/esbuild/LICENSE.md diff --git a/lesson1_vite/node_modules/esbuild/README.md b/front_page/node_modules/esbuild/README.md similarity index 100% rename from lesson1_vite/node_modules/esbuild/README.md rename to front_page/node_modules/esbuild/README.md diff --git a/lesson1_vite/node_modules/esbuild/bin/esbuild b/front_page/node_modules/esbuild/bin/esbuild similarity index 100% rename from lesson1_vite/node_modules/esbuild/bin/esbuild rename to front_page/node_modules/esbuild/bin/esbuild diff --git a/lesson1_vite/node_modules/esbuild/install.js b/front_page/node_modules/esbuild/install.js similarity index 100% rename from lesson1_vite/node_modules/esbuild/install.js rename to front_page/node_modules/esbuild/install.js diff --git a/lesson1_vite/node_modules/esbuild/lib/main.d.ts b/front_page/node_modules/esbuild/lib/main.d.ts similarity index 100% rename from lesson1_vite/node_modules/esbuild/lib/main.d.ts rename to front_page/node_modules/esbuild/lib/main.d.ts diff --git a/lesson1_vite/node_modules/esbuild/lib/main.js b/front_page/node_modules/esbuild/lib/main.js similarity index 100% rename from lesson1_vite/node_modules/esbuild/lib/main.js rename to front_page/node_modules/esbuild/lib/main.js diff --git a/lesson1_vite/node_modules/esbuild/package.json b/front_page/node_modules/esbuild/package.json similarity index 100% rename from lesson1_vite/node_modules/esbuild/package.json rename to front_page/node_modules/esbuild/package.json diff --git a/lesson1_vite/node_modules/estree-walker/CHANGELOG.md b/front_page/node_modules/estree-walker/CHANGELOG.md similarity index 100% rename from lesson1_vite/node_modules/estree-walker/CHANGELOG.md rename to front_page/node_modules/estree-walker/CHANGELOG.md diff --git a/lesson1_vite/node_modules/estree-walker/LICENSE b/front_page/node_modules/estree-walker/LICENSE similarity index 100% rename from lesson1_vite/node_modules/estree-walker/LICENSE rename to front_page/node_modules/estree-walker/LICENSE diff --git a/lesson1_vite/node_modules/estree-walker/README.md b/front_page/node_modules/estree-walker/README.md similarity index 100% rename from lesson1_vite/node_modules/estree-walker/README.md rename to front_page/node_modules/estree-walker/README.md diff --git a/lesson1_vite/node_modules/estree-walker/package.json b/front_page/node_modules/estree-walker/package.json similarity index 100% rename from lesson1_vite/node_modules/estree-walker/package.json rename to front_page/node_modules/estree-walker/package.json diff --git a/lesson1_vite/node_modules/estree-walker/src/async.js b/front_page/node_modules/estree-walker/src/async.js similarity index 100% rename from lesson1_vite/node_modules/estree-walker/src/async.js rename to front_page/node_modules/estree-walker/src/async.js diff --git a/lesson1_vite/node_modules/estree-walker/src/index.js b/front_page/node_modules/estree-walker/src/index.js similarity index 100% rename from lesson1_vite/node_modules/estree-walker/src/index.js rename to front_page/node_modules/estree-walker/src/index.js diff --git a/lesson1_vite/node_modules/estree-walker/src/package.json b/front_page/node_modules/estree-walker/src/package.json similarity index 100% rename from lesson1_vite/node_modules/estree-walker/src/package.json rename to front_page/node_modules/estree-walker/src/package.json diff --git a/lesson1_vite/node_modules/estree-walker/src/sync.js b/front_page/node_modules/estree-walker/src/sync.js similarity index 100% rename from lesson1_vite/node_modules/estree-walker/src/sync.js rename to front_page/node_modules/estree-walker/src/sync.js diff --git a/lesson1_vite/node_modules/estree-walker/src/walker.js b/front_page/node_modules/estree-walker/src/walker.js similarity index 100% rename from lesson1_vite/node_modules/estree-walker/src/walker.js rename to front_page/node_modules/estree-walker/src/walker.js diff --git a/lesson1_vite/node_modules/estree-walker/types/async.d.ts b/front_page/node_modules/estree-walker/types/async.d.ts similarity index 100% rename from lesson1_vite/node_modules/estree-walker/types/async.d.ts rename to front_page/node_modules/estree-walker/types/async.d.ts diff --git a/lesson1_vite/node_modules/estree-walker/types/index.d.ts b/front_page/node_modules/estree-walker/types/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/estree-walker/types/index.d.ts rename to front_page/node_modules/estree-walker/types/index.d.ts diff --git a/lesson1_vite/node_modules/estree-walker/types/sync.d.ts b/front_page/node_modules/estree-walker/types/sync.d.ts similarity index 100% rename from lesson1_vite/node_modules/estree-walker/types/sync.d.ts rename to front_page/node_modules/estree-walker/types/sync.d.ts diff --git a/lesson1_vite/node_modules/estree-walker/types/tsconfig.tsbuildinfo b/front_page/node_modules/estree-walker/types/tsconfig.tsbuildinfo similarity index 100% rename from lesson1_vite/node_modules/estree-walker/types/tsconfig.tsbuildinfo rename to front_page/node_modules/estree-walker/types/tsconfig.tsbuildinfo diff --git a/lesson1_vite/node_modules/estree-walker/types/walker.d.ts b/front_page/node_modules/estree-walker/types/walker.d.ts similarity index 100% rename from lesson1_vite/node_modules/estree-walker/types/walker.d.ts rename to front_page/node_modules/estree-walker/types/walker.d.ts diff --git a/lesson1_vite/node_modules/magic-string/LICENSE b/front_page/node_modules/magic-string/LICENSE similarity index 100% rename from lesson1_vite/node_modules/magic-string/LICENSE rename to front_page/node_modules/magic-string/LICENSE diff --git a/lesson1_vite/node_modules/magic-string/README.md b/front_page/node_modules/magic-string/README.md similarity index 100% rename from lesson1_vite/node_modules/magic-string/README.md rename to front_page/node_modules/magic-string/README.md diff --git a/lesson1_vite/node_modules/magic-string/package.json b/front_page/node_modules/magic-string/package.json similarity index 100% rename from lesson1_vite/node_modules/magic-string/package.json rename to front_page/node_modules/magic-string/package.json diff --git a/lesson1_vite/node_modules/nanoid/LICENSE b/front_page/node_modules/nanoid/LICENSE similarity index 100% rename from lesson1_vite/node_modules/nanoid/LICENSE rename to front_page/node_modules/nanoid/LICENSE diff --git a/lesson1_vite/node_modules/nanoid/README.md b/front_page/node_modules/nanoid/README.md similarity index 100% rename from lesson1_vite/node_modules/nanoid/README.md rename to front_page/node_modules/nanoid/README.md diff --git a/lesson1_vite/node_modules/nanoid/async/index.browser.cjs b/front_page/node_modules/nanoid/async/index.browser.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.browser.cjs rename to front_page/node_modules/nanoid/async/index.browser.cjs diff --git a/lesson1_vite/node_modules/nanoid/async/index.browser.js b/front_page/node_modules/nanoid/async/index.browser.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.browser.js rename to front_page/node_modules/nanoid/async/index.browser.js diff --git a/lesson1_vite/node_modules/nanoid/async/index.cjs b/front_page/node_modules/nanoid/async/index.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.cjs rename to front_page/node_modules/nanoid/async/index.cjs diff --git a/lesson1_vite/node_modules/nanoid/async/index.d.ts b/front_page/node_modules/nanoid/async/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.d.ts rename to front_page/node_modules/nanoid/async/index.d.ts diff --git a/lesson1_vite/node_modules/nanoid/async/index.js b/front_page/node_modules/nanoid/async/index.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.js rename to front_page/node_modules/nanoid/async/index.js diff --git a/lesson1_vite/node_modules/nanoid/async/index.native.js b/front_page/node_modules/nanoid/async/index.native.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/index.native.js rename to front_page/node_modules/nanoid/async/index.native.js diff --git a/lesson1_vite/node_modules/nanoid/async/package.json b/front_page/node_modules/nanoid/async/package.json similarity index 100% rename from lesson1_vite/node_modules/nanoid/async/package.json rename to front_page/node_modules/nanoid/async/package.json diff --git a/lesson1_vite/node_modules/nanoid/bin/nanoid.cjs b/front_page/node_modules/nanoid/bin/nanoid.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/bin/nanoid.cjs rename to front_page/node_modules/nanoid/bin/nanoid.cjs diff --git a/lesson1_vite/node_modules/nanoid/index.browser.cjs b/front_page/node_modules/nanoid/index.browser.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.browser.cjs rename to front_page/node_modules/nanoid/index.browser.cjs diff --git a/lesson1_vite/node_modules/nanoid/index.browser.js b/front_page/node_modules/nanoid/index.browser.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.browser.js rename to front_page/node_modules/nanoid/index.browser.js diff --git a/lesson1_vite/node_modules/nanoid/index.cjs b/front_page/node_modules/nanoid/index.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.cjs rename to front_page/node_modules/nanoid/index.cjs diff --git a/lesson1_vite/node_modules/nanoid/index.d.cts b/front_page/node_modules/nanoid/index.d.cts similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.d.cts rename to front_page/node_modules/nanoid/index.d.cts diff --git a/lesson1_vite/node_modules/nanoid/index.d.ts b/front_page/node_modules/nanoid/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.d.ts rename to front_page/node_modules/nanoid/index.d.ts diff --git a/lesson1_vite/node_modules/nanoid/index.js b/front_page/node_modules/nanoid/index.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/index.js rename to front_page/node_modules/nanoid/index.js diff --git a/lesson1_vite/node_modules/nanoid/nanoid.js b/front_page/node_modules/nanoid/nanoid.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/nanoid.js rename to front_page/node_modules/nanoid/nanoid.js diff --git a/lesson1_vite/node_modules/nanoid/non-secure/index.cjs b/front_page/node_modules/nanoid/non-secure/index.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/non-secure/index.cjs rename to front_page/node_modules/nanoid/non-secure/index.cjs diff --git a/lesson1_vite/node_modules/nanoid/non-secure/index.d.ts b/front_page/node_modules/nanoid/non-secure/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/nanoid/non-secure/index.d.ts rename to front_page/node_modules/nanoid/non-secure/index.d.ts diff --git a/lesson1_vite/node_modules/nanoid/non-secure/index.js b/front_page/node_modules/nanoid/non-secure/index.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/non-secure/index.js rename to front_page/node_modules/nanoid/non-secure/index.js diff --git a/lesson1_vite/node_modules/nanoid/non-secure/package.json b/front_page/node_modules/nanoid/non-secure/package.json similarity index 100% rename from lesson1_vite/node_modules/nanoid/non-secure/package.json rename to front_page/node_modules/nanoid/non-secure/package.json diff --git a/lesson1_vite/node_modules/nanoid/package.json b/front_page/node_modules/nanoid/package.json similarity index 100% rename from lesson1_vite/node_modules/nanoid/package.json rename to front_page/node_modules/nanoid/package.json diff --git a/lesson1_vite/node_modules/nanoid/url-alphabet/index.cjs b/front_page/node_modules/nanoid/url-alphabet/index.cjs similarity index 100% rename from lesson1_vite/node_modules/nanoid/url-alphabet/index.cjs rename to front_page/node_modules/nanoid/url-alphabet/index.cjs diff --git a/lesson1_vite/node_modules/nanoid/url-alphabet/index.js b/front_page/node_modules/nanoid/url-alphabet/index.js similarity index 100% rename from lesson1_vite/node_modules/nanoid/url-alphabet/index.js rename to front_page/node_modules/nanoid/url-alphabet/index.js diff --git a/lesson1_vite/node_modules/nanoid/url-alphabet/package.json b/front_page/node_modules/nanoid/url-alphabet/package.json similarity index 100% rename from lesson1_vite/node_modules/nanoid/url-alphabet/package.json rename to front_page/node_modules/nanoid/url-alphabet/package.json diff --git a/lesson1_vite/node_modules/picocolors/LICENSE b/front_page/node_modules/picocolors/LICENSE similarity index 100% rename from lesson1_vite/node_modules/picocolors/LICENSE rename to front_page/node_modules/picocolors/LICENSE diff --git a/lesson1_vite/node_modules/picocolors/README.md b/front_page/node_modules/picocolors/README.md similarity index 100% rename from lesson1_vite/node_modules/picocolors/README.md rename to front_page/node_modules/picocolors/README.md diff --git a/lesson1_vite/node_modules/picocolors/package.json b/front_page/node_modules/picocolors/package.json similarity index 100% rename from lesson1_vite/node_modules/picocolors/package.json rename to front_page/node_modules/picocolors/package.json diff --git a/lesson1_vite/node_modules/picocolors/picocolors.browser.js b/front_page/node_modules/picocolors/picocolors.browser.js similarity index 100% rename from lesson1_vite/node_modules/picocolors/picocolors.browser.js rename to front_page/node_modules/picocolors/picocolors.browser.js diff --git a/lesson1_vite/node_modules/picocolors/picocolors.d.ts b/front_page/node_modules/picocolors/picocolors.d.ts similarity index 100% rename from lesson1_vite/node_modules/picocolors/picocolors.d.ts rename to front_page/node_modules/picocolors/picocolors.d.ts diff --git a/lesson1_vite/node_modules/picocolors/picocolors.js b/front_page/node_modules/picocolors/picocolors.js similarity index 100% rename from lesson1_vite/node_modules/picocolors/picocolors.js rename to front_page/node_modules/picocolors/picocolors.js diff --git a/lesson1_vite/node_modules/picocolors/types.ts b/front_page/node_modules/picocolors/types.ts similarity index 100% rename from lesson1_vite/node_modules/picocolors/types.ts rename to front_page/node_modules/picocolors/types.ts diff --git a/lesson1_vite/node_modules/postcss/LICENSE b/front_page/node_modules/postcss/LICENSE similarity index 100% rename from lesson1_vite/node_modules/postcss/LICENSE rename to front_page/node_modules/postcss/LICENSE diff --git a/lesson1_vite/node_modules/postcss/README.md b/front_page/node_modules/postcss/README.md similarity index 100% rename from lesson1_vite/node_modules/postcss/README.md rename to front_page/node_modules/postcss/README.md diff --git a/lesson1_vite/node_modules/postcss/lib/at-rule.d.ts b/front_page/node_modules/postcss/lib/at-rule.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/at-rule.d.ts rename to front_page/node_modules/postcss/lib/at-rule.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/at-rule.js b/front_page/node_modules/postcss/lib/at-rule.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/at-rule.js rename to front_page/node_modules/postcss/lib/at-rule.js diff --git a/lesson1_vite/node_modules/postcss/lib/comment.d.ts b/front_page/node_modules/postcss/lib/comment.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/comment.d.ts rename to front_page/node_modules/postcss/lib/comment.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/comment.js b/front_page/node_modules/postcss/lib/comment.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/comment.js rename to front_page/node_modules/postcss/lib/comment.js diff --git a/lesson1_vite/node_modules/postcss/lib/container.d.ts b/front_page/node_modules/postcss/lib/container.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/container.d.ts rename to front_page/node_modules/postcss/lib/container.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/container.js b/front_page/node_modules/postcss/lib/container.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/container.js rename to front_page/node_modules/postcss/lib/container.js diff --git a/lesson1_vite/node_modules/postcss/lib/css-syntax-error.d.ts b/front_page/node_modules/postcss/lib/css-syntax-error.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/css-syntax-error.d.ts rename to front_page/node_modules/postcss/lib/css-syntax-error.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/css-syntax-error.js b/front_page/node_modules/postcss/lib/css-syntax-error.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/css-syntax-error.js rename to front_page/node_modules/postcss/lib/css-syntax-error.js diff --git a/lesson1_vite/node_modules/postcss/lib/declaration.d.ts b/front_page/node_modules/postcss/lib/declaration.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/declaration.d.ts rename to front_page/node_modules/postcss/lib/declaration.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/declaration.js b/front_page/node_modules/postcss/lib/declaration.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/declaration.js rename to front_page/node_modules/postcss/lib/declaration.js diff --git a/lesson1_vite/node_modules/postcss/lib/document.d.ts b/front_page/node_modules/postcss/lib/document.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/document.d.ts rename to front_page/node_modules/postcss/lib/document.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/document.js b/front_page/node_modules/postcss/lib/document.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/document.js rename to front_page/node_modules/postcss/lib/document.js diff --git a/lesson1_vite/node_modules/postcss/lib/fromJSON.d.ts b/front_page/node_modules/postcss/lib/fromJSON.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/fromJSON.d.ts rename to front_page/node_modules/postcss/lib/fromJSON.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/fromJSON.js b/front_page/node_modules/postcss/lib/fromJSON.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/fromJSON.js rename to front_page/node_modules/postcss/lib/fromJSON.js diff --git a/lesson1_vite/node_modules/postcss/lib/input.d.ts b/front_page/node_modules/postcss/lib/input.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/input.d.ts rename to front_page/node_modules/postcss/lib/input.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/input.js b/front_page/node_modules/postcss/lib/input.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/input.js rename to front_page/node_modules/postcss/lib/input.js diff --git a/lesson1_vite/node_modules/postcss/lib/lazy-result.d.ts b/front_page/node_modules/postcss/lib/lazy-result.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/lazy-result.d.ts rename to front_page/node_modules/postcss/lib/lazy-result.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/lazy-result.js b/front_page/node_modules/postcss/lib/lazy-result.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/lazy-result.js rename to front_page/node_modules/postcss/lib/lazy-result.js diff --git a/lesson1_vite/node_modules/postcss/lib/list.d.ts b/front_page/node_modules/postcss/lib/list.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/list.d.ts rename to front_page/node_modules/postcss/lib/list.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/list.js b/front_page/node_modules/postcss/lib/list.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/list.js rename to front_page/node_modules/postcss/lib/list.js diff --git a/lesson1_vite/node_modules/postcss/lib/map-generator.js b/front_page/node_modules/postcss/lib/map-generator.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/map-generator.js rename to front_page/node_modules/postcss/lib/map-generator.js diff --git a/lesson1_vite/node_modules/postcss/lib/no-work-result.d.ts b/front_page/node_modules/postcss/lib/no-work-result.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/no-work-result.d.ts rename to front_page/node_modules/postcss/lib/no-work-result.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/no-work-result.js b/front_page/node_modules/postcss/lib/no-work-result.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/no-work-result.js rename to front_page/node_modules/postcss/lib/no-work-result.js diff --git a/lesson1_vite/node_modules/postcss/lib/node.d.ts b/front_page/node_modules/postcss/lib/node.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/node.d.ts rename to front_page/node_modules/postcss/lib/node.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/node.js b/front_page/node_modules/postcss/lib/node.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/node.js rename to front_page/node_modules/postcss/lib/node.js diff --git a/lesson1_vite/node_modules/postcss/lib/parse.d.ts b/front_page/node_modules/postcss/lib/parse.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/parse.d.ts rename to front_page/node_modules/postcss/lib/parse.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/parse.js b/front_page/node_modules/postcss/lib/parse.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/parse.js rename to front_page/node_modules/postcss/lib/parse.js diff --git a/lesson1_vite/node_modules/postcss/lib/parser.js b/front_page/node_modules/postcss/lib/parser.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/parser.js rename to front_page/node_modules/postcss/lib/parser.js diff --git a/lesson1_vite/node_modules/postcss/lib/postcss.d.mts b/front_page/node_modules/postcss/lib/postcss.d.mts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/postcss.d.mts rename to front_page/node_modules/postcss/lib/postcss.d.mts diff --git a/lesson1_vite/node_modules/postcss/lib/postcss.d.ts b/front_page/node_modules/postcss/lib/postcss.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/postcss.d.ts rename to front_page/node_modules/postcss/lib/postcss.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/postcss.js b/front_page/node_modules/postcss/lib/postcss.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/postcss.js rename to front_page/node_modules/postcss/lib/postcss.js diff --git a/lesson1_vite/node_modules/postcss/lib/postcss.mjs b/front_page/node_modules/postcss/lib/postcss.mjs similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/postcss.mjs rename to front_page/node_modules/postcss/lib/postcss.mjs diff --git a/lesson1_vite/node_modules/postcss/lib/previous-map.d.ts b/front_page/node_modules/postcss/lib/previous-map.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/previous-map.d.ts rename to front_page/node_modules/postcss/lib/previous-map.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/previous-map.js b/front_page/node_modules/postcss/lib/previous-map.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/previous-map.js rename to front_page/node_modules/postcss/lib/previous-map.js diff --git a/lesson1_vite/node_modules/postcss/lib/processor.d.ts b/front_page/node_modules/postcss/lib/processor.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/processor.d.ts rename to front_page/node_modules/postcss/lib/processor.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/processor.js b/front_page/node_modules/postcss/lib/processor.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/processor.js rename to front_page/node_modules/postcss/lib/processor.js diff --git a/lesson1_vite/node_modules/postcss/lib/result.d.ts b/front_page/node_modules/postcss/lib/result.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/result.d.ts rename to front_page/node_modules/postcss/lib/result.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/result.js b/front_page/node_modules/postcss/lib/result.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/result.js rename to front_page/node_modules/postcss/lib/result.js diff --git a/lesson1_vite/node_modules/postcss/lib/root.d.ts b/front_page/node_modules/postcss/lib/root.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/root.d.ts rename to front_page/node_modules/postcss/lib/root.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/root.js b/front_page/node_modules/postcss/lib/root.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/root.js rename to front_page/node_modules/postcss/lib/root.js diff --git a/lesson1_vite/node_modules/postcss/lib/rule.d.ts b/front_page/node_modules/postcss/lib/rule.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/rule.d.ts rename to front_page/node_modules/postcss/lib/rule.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/rule.js b/front_page/node_modules/postcss/lib/rule.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/rule.js rename to front_page/node_modules/postcss/lib/rule.js diff --git a/lesson1_vite/node_modules/postcss/lib/stringifier.d.ts b/front_page/node_modules/postcss/lib/stringifier.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/stringifier.d.ts rename to front_page/node_modules/postcss/lib/stringifier.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/stringifier.js b/front_page/node_modules/postcss/lib/stringifier.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/stringifier.js rename to front_page/node_modules/postcss/lib/stringifier.js diff --git a/lesson1_vite/node_modules/postcss/lib/stringify.d.ts b/front_page/node_modules/postcss/lib/stringify.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/stringify.d.ts rename to front_page/node_modules/postcss/lib/stringify.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/stringify.js b/front_page/node_modules/postcss/lib/stringify.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/stringify.js rename to front_page/node_modules/postcss/lib/stringify.js diff --git a/lesson1_vite/node_modules/postcss/lib/symbols.js b/front_page/node_modules/postcss/lib/symbols.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/symbols.js rename to front_page/node_modules/postcss/lib/symbols.js diff --git a/lesson1_vite/node_modules/postcss/lib/terminal-highlight.js b/front_page/node_modules/postcss/lib/terminal-highlight.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/terminal-highlight.js rename to front_page/node_modules/postcss/lib/terminal-highlight.js diff --git a/lesson1_vite/node_modules/postcss/lib/tokenize.js b/front_page/node_modules/postcss/lib/tokenize.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/tokenize.js rename to front_page/node_modules/postcss/lib/tokenize.js diff --git a/lesson1_vite/node_modules/postcss/lib/warn-once.js b/front_page/node_modules/postcss/lib/warn-once.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/warn-once.js rename to front_page/node_modules/postcss/lib/warn-once.js diff --git a/lesson1_vite/node_modules/postcss/lib/warning.d.ts b/front_page/node_modules/postcss/lib/warning.d.ts similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/warning.d.ts rename to front_page/node_modules/postcss/lib/warning.d.ts diff --git a/lesson1_vite/node_modules/postcss/lib/warning.js b/front_page/node_modules/postcss/lib/warning.js similarity index 100% rename from lesson1_vite/node_modules/postcss/lib/warning.js rename to front_page/node_modules/postcss/lib/warning.js diff --git a/lesson1_vite/node_modules/postcss/node_modules/.bin/nanoid b/front_page/node_modules/postcss/node_modules/.bin/nanoid similarity index 100% rename from lesson1_vite/node_modules/postcss/node_modules/.bin/nanoid rename to front_page/node_modules/postcss/node_modules/.bin/nanoid diff --git a/lesson1_vite/node_modules/postcss/node_modules/.bin/nanoid.cmd b/front_page/node_modules/postcss/node_modules/.bin/nanoid.cmd similarity index 100% rename from lesson1_vite/node_modules/postcss/node_modules/.bin/nanoid.cmd rename to front_page/node_modules/postcss/node_modules/.bin/nanoid.cmd diff --git a/lesson1_vite/node_modules/postcss/package.json b/front_page/node_modules/postcss/package.json similarity index 100% rename from lesson1_vite/node_modules/postcss/package.json rename to front_page/node_modules/postcss/package.json diff --git a/lesson1_vite/node_modules/rollup/LICENSE.md b/front_page/node_modules/rollup/LICENSE.md similarity index 100% rename from lesson1_vite/node_modules/rollup/LICENSE.md rename to front_page/node_modules/rollup/LICENSE.md diff --git a/lesson1_vite/node_modules/rollup/README.md b/front_page/node_modules/rollup/README.md similarity index 100% rename from lesson1_vite/node_modules/rollup/README.md rename to front_page/node_modules/rollup/README.md diff --git a/lesson1_vite/node_modules/rollup/package.json b/front_page/node_modules/rollup/package.json similarity index 100% rename from lesson1_vite/node_modules/rollup/package.json rename to front_page/node_modules/rollup/package.json diff --git a/lesson1_vite/node_modules/source-map-js/LICENSE b/front_page/node_modules/source-map-js/LICENSE similarity index 100% rename from lesson1_vite/node_modules/source-map-js/LICENSE rename to front_page/node_modules/source-map-js/LICENSE diff --git a/lesson1_vite/node_modules/source-map-js/README.md b/front_page/node_modules/source-map-js/README.md similarity index 100% rename from lesson1_vite/node_modules/source-map-js/README.md rename to front_page/node_modules/source-map-js/README.md diff --git a/lesson1_vite/node_modules/source-map-js/lib/array-set.js b/front_page/node_modules/source-map-js/lib/array-set.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/array-set.js rename to front_page/node_modules/source-map-js/lib/array-set.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/base64-vlq.js b/front_page/node_modules/source-map-js/lib/base64-vlq.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/base64-vlq.js rename to front_page/node_modules/source-map-js/lib/base64-vlq.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/base64.js b/front_page/node_modules/source-map-js/lib/base64.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/base64.js rename to front_page/node_modules/source-map-js/lib/base64.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/binary-search.js b/front_page/node_modules/source-map-js/lib/binary-search.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/binary-search.js rename to front_page/node_modules/source-map-js/lib/binary-search.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/mapping-list.js b/front_page/node_modules/source-map-js/lib/mapping-list.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/mapping-list.js rename to front_page/node_modules/source-map-js/lib/mapping-list.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/quick-sort.js b/front_page/node_modules/source-map-js/lib/quick-sort.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/quick-sort.js rename to front_page/node_modules/source-map-js/lib/quick-sort.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/source-map-consumer.js b/front_page/node_modules/source-map-js/lib/source-map-consumer.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/source-map-consumer.js rename to front_page/node_modules/source-map-js/lib/source-map-consumer.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/source-map-generator.js b/front_page/node_modules/source-map-js/lib/source-map-generator.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/source-map-generator.js rename to front_page/node_modules/source-map-js/lib/source-map-generator.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/source-node.js b/front_page/node_modules/source-map-js/lib/source-node.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/source-node.js rename to front_page/node_modules/source-map-js/lib/source-node.js diff --git a/lesson1_vite/node_modules/source-map-js/lib/util.js b/front_page/node_modules/source-map-js/lib/util.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/lib/util.js rename to front_page/node_modules/source-map-js/lib/util.js diff --git a/lesson1_vite/node_modules/source-map-js/package.json b/front_page/node_modules/source-map-js/package.json similarity index 100% rename from lesson1_vite/node_modules/source-map-js/package.json rename to front_page/node_modules/source-map-js/package.json diff --git a/lesson1_vite/node_modules/source-map-js/source-map.d.ts b/front_page/node_modules/source-map-js/source-map.d.ts similarity index 100% rename from lesson1_vite/node_modules/source-map-js/source-map.d.ts rename to front_page/node_modules/source-map-js/source-map.d.ts diff --git a/lesson1_vite/node_modules/source-map-js/source-map.js b/front_page/node_modules/source-map-js/source-map.js similarity index 100% rename from lesson1_vite/node_modules/source-map-js/source-map.js rename to front_page/node_modules/source-map-js/source-map.js diff --git a/lesson1_vite/node_modules/to-fast-properties/index.js b/front_page/node_modules/to-fast-properties/index.js similarity index 100% rename from lesson1_vite/node_modules/to-fast-properties/index.js rename to front_page/node_modules/to-fast-properties/index.js diff --git a/lesson1_vite/node_modules/to-fast-properties/license b/front_page/node_modules/to-fast-properties/license similarity index 100% rename from lesson1_vite/node_modules/to-fast-properties/license rename to front_page/node_modules/to-fast-properties/license diff --git a/lesson1_vite/node_modules/to-fast-properties/package.json b/front_page/node_modules/to-fast-properties/package.json similarity index 100% rename from lesson1_vite/node_modules/to-fast-properties/package.json rename to front_page/node_modules/to-fast-properties/package.json diff --git a/lesson1_vite/node_modules/to-fast-properties/readme.md b/front_page/node_modules/to-fast-properties/readme.md similarity index 100% rename from lesson1_vite/node_modules/to-fast-properties/readme.md rename to front_page/node_modules/to-fast-properties/readme.md diff --git a/lesson1_vite/node_modules/vite/LICENSE.md b/front_page/node_modules/vite/LICENSE.md similarity index 100% rename from lesson1_vite/node_modules/vite/LICENSE.md rename to front_page/node_modules/vite/LICENSE.md diff --git a/lesson1_vite/node_modules/vite/README.md b/front_page/node_modules/vite/README.md similarity index 100% rename from lesson1_vite/node_modules/vite/README.md rename to front_page/node_modules/vite/README.md diff --git a/lesson1_vite/node_modules/vite/bin/openChrome.applescript b/front_page/node_modules/vite/bin/openChrome.applescript similarity index 100% rename from lesson1_vite/node_modules/vite/bin/openChrome.applescript rename to front_page/node_modules/vite/bin/openChrome.applescript diff --git a/lesson1_vite/node_modules/vite/bin/vite.js b/front_page/node_modules/vite/bin/vite.js similarity index 100% rename from lesson1_vite/node_modules/vite/bin/vite.js rename to front_page/node_modules/vite/bin/vite.js diff --git a/lesson1_vite/node_modules/vite/client.d.ts b/front_page/node_modules/vite/client.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/client.d.ts rename to front_page/node_modules/vite/client.d.ts diff --git a/lesson1_vite/node_modules/vite/index.cjs b/front_page/node_modules/vite/index.cjs similarity index 100% rename from lesson1_vite/node_modules/vite/index.cjs rename to front_page/node_modules/vite/index.cjs diff --git a/lesson1_vite/node_modules/vite/index.d.cts b/front_page/node_modules/vite/index.d.cts similarity index 100% rename from lesson1_vite/node_modules/vite/index.d.cts rename to front_page/node_modules/vite/index.d.cts diff --git a/lesson1_vite/node_modules/vite/node_modules/.bin/esbuild b/front_page/node_modules/vite/node_modules/.bin/esbuild similarity index 100% rename from lesson1_vite/node_modules/vite/node_modules/.bin/esbuild rename to front_page/node_modules/vite/node_modules/.bin/esbuild diff --git a/lesson1_vite/node_modules/vite/node_modules/.bin/esbuild.cmd b/front_page/node_modules/vite/node_modules/.bin/esbuild.cmd similarity index 100% rename from lesson1_vite/node_modules/vite/node_modules/.bin/esbuild.cmd rename to front_page/node_modules/vite/node_modules/.bin/esbuild.cmd diff --git a/lesson1_vite/node_modules/vite/node_modules/.bin/rollup b/front_page/node_modules/vite/node_modules/.bin/rollup similarity index 100% rename from lesson1_vite/node_modules/vite/node_modules/.bin/rollup rename to front_page/node_modules/vite/node_modules/.bin/rollup diff --git a/lesson1_vite/node_modules/vite/node_modules/.bin/rollup.cmd b/front_page/node_modules/vite/node_modules/.bin/rollup.cmd similarity index 100% rename from lesson1_vite/node_modules/vite/node_modules/.bin/rollup.cmd rename to front_page/node_modules/vite/node_modules/.bin/rollup.cmd diff --git a/lesson1_vite/node_modules/vite/package.json b/front_page/node_modules/vite/package.json similarity index 100% rename from lesson1_vite/node_modules/vite/package.json rename to front_page/node_modules/vite/package.json diff --git a/lesson1_vite/node_modules/vite/types/customEvent.d.ts b/front_page/node_modules/vite/types/customEvent.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/customEvent.d.ts rename to front_page/node_modules/vite/types/customEvent.d.ts diff --git a/lesson1_vite/node_modules/vite/types/hmrPayload.d.ts b/front_page/node_modules/vite/types/hmrPayload.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/hmrPayload.d.ts rename to front_page/node_modules/vite/types/hmrPayload.d.ts diff --git a/lesson1_vite/node_modules/vite/types/hot.d.ts b/front_page/node_modules/vite/types/hot.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/hot.d.ts rename to front_page/node_modules/vite/types/hot.d.ts diff --git a/lesson1_vite/node_modules/vite/types/import-meta.d.ts b/front_page/node_modules/vite/types/import-meta.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/import-meta.d.ts rename to front_page/node_modules/vite/types/import-meta.d.ts diff --git a/lesson1_vite/node_modules/vite/types/importGlob.d.ts b/front_page/node_modules/vite/types/importGlob.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/importGlob.d.ts rename to front_page/node_modules/vite/types/importGlob.d.ts diff --git a/lesson1_vite/node_modules/vite/types/importMeta.d.ts b/front_page/node_modules/vite/types/importMeta.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/importMeta.d.ts rename to front_page/node_modules/vite/types/importMeta.d.ts diff --git a/lesson1_vite/node_modules/vite/types/metadata.d.ts b/front_page/node_modules/vite/types/metadata.d.ts similarity index 100% rename from lesson1_vite/node_modules/vite/types/metadata.d.ts rename to front_page/node_modules/vite/types/metadata.d.ts diff --git a/lesson1_vite/node_modules/vite/types/package.json b/front_page/node_modules/vite/types/package.json similarity index 100% rename from lesson1_vite/node_modules/vite/types/package.json rename to front_page/node_modules/vite/types/package.json diff --git a/lesson1_vite/node_modules/vue/LICENSE b/front_page/node_modules/vue/LICENSE similarity index 100% rename from lesson1_vite/node_modules/vue/LICENSE rename to front_page/node_modules/vue/LICENSE diff --git a/lesson1_vite/node_modules/vue/README.md b/front_page/node_modules/vue/README.md similarity index 100% rename from lesson1_vite/node_modules/vue/README.md rename to front_page/node_modules/vue/README.md diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.browser.js b/front_page/node_modules/vue/compiler-sfc/index.browser.js similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.browser.js rename to front_page/node_modules/vue/compiler-sfc/index.browser.js diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.browser.mjs b/front_page/node_modules/vue/compiler-sfc/index.browser.mjs similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.browser.mjs rename to front_page/node_modules/vue/compiler-sfc/index.browser.mjs diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.d.mts b/front_page/node_modules/vue/compiler-sfc/index.d.mts similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.d.mts rename to front_page/node_modules/vue/compiler-sfc/index.d.mts diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.d.ts b/front_page/node_modules/vue/compiler-sfc/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.d.ts rename to front_page/node_modules/vue/compiler-sfc/index.d.ts diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.js b/front_page/node_modules/vue/compiler-sfc/index.js similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.js rename to front_page/node_modules/vue/compiler-sfc/index.js diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/index.mjs b/front_page/node_modules/vue/compiler-sfc/index.mjs similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/index.mjs rename to front_page/node_modules/vue/compiler-sfc/index.mjs diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/package.json b/front_page/node_modules/vue/compiler-sfc/package.json similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/package.json rename to front_page/node_modules/vue/compiler-sfc/package.json diff --git a/lesson1_vite/node_modules/vue/compiler-sfc/register-ts.js b/front_page/node_modules/vue/compiler-sfc/register-ts.js similarity index 100% rename from lesson1_vite/node_modules/vue/compiler-sfc/register-ts.js rename to front_page/node_modules/vue/compiler-sfc/register-ts.js diff --git a/lesson1_vite/node_modules/vue/index.js b/front_page/node_modules/vue/index.js similarity index 100% rename from lesson1_vite/node_modules/vue/index.js rename to front_page/node_modules/vue/index.js diff --git a/lesson1_vite/node_modules/vue/index.mjs b/front_page/node_modules/vue/index.mjs similarity index 100% rename from lesson1_vite/node_modules/vue/index.mjs rename to front_page/node_modules/vue/index.mjs diff --git a/lesson1_vite/node_modules/vue/jsx-runtime/index.d.ts b/front_page/node_modules/vue/jsx-runtime/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/vue/jsx-runtime/index.d.ts rename to front_page/node_modules/vue/jsx-runtime/index.d.ts diff --git a/lesson1_vite/node_modules/vue/jsx-runtime/index.js b/front_page/node_modules/vue/jsx-runtime/index.js similarity index 100% rename from lesson1_vite/node_modules/vue/jsx-runtime/index.js rename to front_page/node_modules/vue/jsx-runtime/index.js diff --git a/lesson1_vite/node_modules/vue/jsx-runtime/index.mjs b/front_page/node_modules/vue/jsx-runtime/index.mjs similarity index 100% rename from lesson1_vite/node_modules/vue/jsx-runtime/index.mjs rename to front_page/node_modules/vue/jsx-runtime/index.mjs diff --git a/lesson1_vite/node_modules/vue/jsx-runtime/package.json b/front_page/node_modules/vue/jsx-runtime/package.json similarity index 100% rename from lesson1_vite/node_modules/vue/jsx-runtime/package.json rename to front_page/node_modules/vue/jsx-runtime/package.json diff --git a/lesson1_vite/node_modules/vue/jsx.d.ts b/front_page/node_modules/vue/jsx.d.ts similarity index 100% rename from lesson1_vite/node_modules/vue/jsx.d.ts rename to front_page/node_modules/vue/jsx.d.ts diff --git a/lesson1_vite/node_modules/vue/package.json b/front_page/node_modules/vue/package.json similarity index 100% rename from lesson1_vite/node_modules/vue/package.json rename to front_page/node_modules/vue/package.json diff --git a/lesson1_vite/node_modules/vue/server-renderer/index.d.mts b/front_page/node_modules/vue/server-renderer/index.d.mts similarity index 100% rename from lesson1_vite/node_modules/vue/server-renderer/index.d.mts rename to front_page/node_modules/vue/server-renderer/index.d.mts diff --git a/lesson1_vite/node_modules/vue/server-renderer/index.d.ts b/front_page/node_modules/vue/server-renderer/index.d.ts similarity index 100% rename from lesson1_vite/node_modules/vue/server-renderer/index.d.ts rename to front_page/node_modules/vue/server-renderer/index.d.ts diff --git a/lesson1_vite/node_modules/vue/server-renderer/index.js b/front_page/node_modules/vue/server-renderer/index.js similarity index 100% rename from lesson1_vite/node_modules/vue/server-renderer/index.js rename to front_page/node_modules/vue/server-renderer/index.js diff --git a/lesson1_vite/node_modules/vue/server-renderer/index.mjs b/front_page/node_modules/vue/server-renderer/index.mjs similarity index 100% rename from lesson1_vite/node_modules/vue/server-renderer/index.mjs rename to front_page/node_modules/vue/server-renderer/index.mjs diff --git a/lesson1_vite/node_modules/vue/server-renderer/package.json b/front_page/node_modules/vue/server-renderer/package.json similarity index 100% rename from lesson1_vite/node_modules/vue/server-renderer/package.json rename to front_page/node_modules/vue/server-renderer/package.json diff --git a/lesson1_vite/package.json b/front_page/package.json similarity index 100% rename from lesson1_vite/package.json rename to front_page/package.json diff --git a/lesson1_vite/public/vite.svg b/front_page/public/vite.svg similarity index 100% rename from lesson1_vite/public/vite.svg rename to front_page/public/vite.svg diff --git a/lesson1_vite/src/App.vue b/front_page/src/App.vue similarity index 100% rename from lesson1_vite/src/App.vue rename to front_page/src/App.vue diff --git a/lesson1_vite/src/assets/vue.svg b/front_page/src/assets/vue.svg similarity index 100% rename from lesson1_vite/src/assets/vue.svg rename to front_page/src/assets/vue.svg diff --git a/lesson1_vite/src/components/HelloWorld.vue b/front_page/src/components/HelloWorld.vue similarity index 100% rename from lesson1_vite/src/components/HelloWorld.vue rename to front_page/src/components/HelloWorld.vue diff --git a/lesson1_vite/src/main.js b/front_page/src/main.js similarity index 100% rename from lesson1_vite/src/main.js rename to front_page/src/main.js diff --git a/lesson1_vite/src/style.css b/front_page/src/style.css similarity index 100% rename from lesson1_vite/src/style.css rename to front_page/src/style.css diff --git a/lesson1_vite/vite.config.js b/front_page/vite.config.js similarity index 100% rename from lesson1_vite/vite.config.js rename to front_page/vite.config.js diff --git a/lesson1_vite/yarn.lock b/front_page/yarn.lock similarity index 100% rename from lesson1_vite/yarn.lock rename to front_page/yarn.lock diff --git a/trading_platform/.gitattributes b/trading_platform/.gitattributes new file mode 100644 index 0000000..3b41682 --- /dev/null +++ b/trading_platform/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/trading_platform/.gitignore b/trading_platform/.gitignore new file mode 100644 index 0000000..3f1f3e8 --- /dev/null +++ b/trading_platform/.gitignore @@ -0,0 +1,34 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ +.idea/ diff --git a/trading_platform/.mvn/wrapper/maven-wrapper.properties b/trading_platform/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/trading_platform/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/trading_platform/mvnw b/trading_platform/mvnw new file mode 100644 index 0000000..19529dd --- /dev/null +++ b/trading_platform/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/trading_platform/mvnw.cmd b/trading_platform/mvnw.cmd new file mode 100644 index 0000000..249bdf3 --- /dev/null +++ b/trading_platform/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/trading_platform/pom.xml b/trading_platform/pom.xml new file mode 100644 index 0000000..8a7948d --- /dev/null +++ b/trading_platform/pom.xml @@ -0,0 +1,98 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.5 + + + com + trading_platform + 0.0.1-SNAPSHOT + trading_platform + Demo project for Spring Boot + + + + + + + + + + + + + + + 17 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.mysql + mysql-connector-j + runtime + + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.3 + + + + + org.projectlombok + lombok + true + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-validation + + + + + com.auth0 + java-jwt + 4.4.0 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/trading_platform/src/main/java/com/trading_platform/TradingPlatformApplication.java b/trading_platform/src/main/java/com/trading_platform/TradingPlatformApplication.java new file mode 100644 index 0000000..5f00c81 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/TradingPlatformApplication.java @@ -0,0 +1,13 @@ +package com.trading_platform; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class TradingPlatformApplication { + + public static void main(String[] args) { + SpringApplication.run(TradingPlatformApplication.class, args); + } + +} diff --git a/trading_platform/src/main/java/com/trading_platform/config/WebConfig.java b/trading_platform/src/main/java/com/trading_platform/config/WebConfig.java new file mode 100644 index 0000000..0b4ed19 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/config/WebConfig.java @@ -0,0 +1,39 @@ +package com.trading_platform.config; + +import com.trading_platform.interceptors.LoginInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 配置类,用于配置Web相关的组件 + */ +@Configuration +public class WebConfig implements WebMvcConfigurer { + + // 登录拦截器,用于拦截未登录的请求 + private final LoginInterceptor loginInterceptor; + + /** + * 构造方法,用于注入LoginInterceptor + * + * @param loginInterceptor 登录拦截器 + */ + @Autowired + public WebConfig(LoginInterceptor loginInterceptor) { + this.loginInterceptor = loginInterceptor; + } + + /** + * 添加拦截器,用于配置登录拦截器不拦截的路径 + * + * @param registry 拦截器注册器 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 登录和注册路径不进行拦截,以允许未登录用户访问这些路径 + registry.addInterceptor(loginInterceptor).excludePathPatterns("/user/login", "/user/register"); + } +} + diff --git a/trading_platform/src/main/java/com/trading_platform/controller/UsersController.java b/trading_platform/src/main/java/com/trading_platform/controller/UsersController.java new file mode 100644 index 0000000..2f26833 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/controller/UsersController.java @@ -0,0 +1,97 @@ +package com.trading_platform.controller; + +import com.trading_platform.entity.Result; +import com.trading_platform.entity.Users; +import com.trading_platform.service.UsersService; +import com.trading_platform.utils.JwtUtil; +import com.trading_platform.utils.Sha256Util; +import jakarta.validation.constraints.Pattern; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +/** + * UserController类负责处理与用户相关的HTTP请求 + * 它作为前端控制器,将请求委托给UserService进行处理 + */ +@RestController +@RequestMapping("/user") +@Validated +/** + * UserController类负责处理与用户相关的控制逻辑 + * 它充当了用户界面层和业务逻辑层之间的桥梁 + */ +public class UsersController { + + // usersService用于执行与用户相关的业务逻辑 + private final UsersService usersService; + + /** + * 通过构造函数注入UsersService实例 + * + * @param usersService 一个实现了用户业务逻辑的UsersService接口实例 + * 通过构造函数注入,使得UserController可以使用UsersService提供的方法 + * 这种依赖注入的方式有助于提高代码的可测试性和可维护性 + */ + @Autowired + public UsersController(UsersService usersService) { + this.usersService = usersService; + } + + + /** + * 处理用户注册请求 + * + * @param username 用户名 + * @param password 密码 + * @return 注册结果 + */ + @RequestMapping("/register") + public Result register(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password) { + //查询是否已存在该用户 + Users user = usersService.findByUsername(username); + if (user != null) { + //用户已存在,返回错误信息 + return Result.error("用户已存在"); + } else { + //注册新用户 + usersService.register(username, password); + //注册成功,返回成功信息 + return Result.success(); + } + } + + /** + * 处理用户登录请求 + * + * @param username 用户名,长度为5-16个字符,不能包含空格 + * @param password 密码,长度为5-16个字符,不能包含空格 + * @return 登录结果,包括错误信息或成功信息及JWT令牌 + */ + @PostMapping("/login") + public Result login(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password) { + // 根据用户名查询用户信息 + Users loginUser = usersService.findByUsername(username); + // 如果用户信息为空,说明用户名错误 + if (loginUser == null) { + return Result.error("用户名错误"); + } + + // 比较密码,使用MD5加密后的密码与数据库中存储的密码进行比较 + if (Sha256Util.getSHA256String(password).equals(loginUser.getPassword())) { + // 如果密码正确,返回成功信息及JWT令牌 + Map claims = new HashMap<>(); + claims.put("id", loginUser.getUserId()); + claims.put("username", loginUser.getUsername()); + String token = JwtUtil.genToken(claims); + return Result.success(token); + } + // 如果密码错误,返回错误信息 + return Result.success("密码错误"); + } +} diff --git a/trading_platform/src/main/java/com/trading_platform/entity/Result.java b/trading_platform/src/main/java/com/trading_platform/entity/Result.java new file mode 100644 index 0000000..6e0b12c --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/entity/Result.java @@ -0,0 +1,48 @@ +package com.trading_platform.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +//统一响应结果 +@NoArgsConstructor +@AllArgsConstructor +@Data +public class Result { + private Integer code; //业务状态码 0-成功 1-失败 + private String message; //提示信息 + private T data;//响应数据 + + /** + * 快速返回操作成功响应结果(带响应数据) + * + * @param 泛型参数,表示返回数据的类型 + * @param data 返回的数据内容 + * @return 包含成功操作信息和数据的Result对象 + */ + public static Result success(E data) { + return new Result<>(0, "操作成功", data); + } + + /** + * 快速返回操作成功响应结果 + * 此方法用于创建一个表示操作成功的Result对象它主要用于简化操作成功情况下的响应结果构建 + * 不需要详细说明成功操作的细节,因为方法名称已经清晰地表达了其意图 + * + * @return Result 一个表示操作成功的Result对象,其中代码为0,消息为"操作成功",数据为null + */ + public static Result success() { + return new Result(0, "操作成功", null); + } + + /** + * 创建一个表示错误的Result对象 + * 此方法用于简化错误信息的封装过程,将常用的错误状态代码和空数据统一设置 + * + * @param message 错误信息,用于描述具体的错误情况 + * @return 返回一个Result对象,其中包含错误状态代码、错误信息和空数据 + */ + public static Result error(String message) { + return new Result(1, message, null); + } +} diff --git a/trading_platform/src/main/java/com/trading_platform/entity/Users.java b/trading_platform/src/main/java/com/trading_platform/entity/Users.java new file mode 100644 index 0000000..ca79053 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/entity/Users.java @@ -0,0 +1,19 @@ +package com.trading_platform.entity; + +import lombok.Data; + +@Data +public class Users { + private int userId; // 用户id + private String headPicUrl; // 用户头像 + private String nickName; // 用户昵称 + private String username; // 用户名 + private String mobile; // 手机号 + private String password; // 密码 + private String sex; // 性别 + private String email; // 邮箱 + private String address; // 地址 + private String status; // 状态 + private String createTime; // 创建时间 + private String updateTime; // 更新时间 +} diff --git a/trading_platform/src/main/java/com/trading_platform/exception/GlobalExceptionHandler.java b/trading_platform/src/main/java/com/trading_platform/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..4f8357a --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/exception/GlobalExceptionHandler.java @@ -0,0 +1,31 @@ +package com.trading_platform.exception; + +import com.trading_platform.entity.Result; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +/** + * 全局异常处理类 + * 用于捕获全局异常并返回统一的错误响应 + */ +@RestControllerAdvice +public class GlobalExceptionHandler { + + /** + * 处理所有类型的异常 + * + * @param e 异常对象 + * @return 返回包含错误信息的Result对象 + */ + @ExceptionHandler(Exception.class) + public Result handleException(Exception e) { + // 打印异常堆栈跟踪信息,以便于调试和日志记录 + e.printStackTrace(); + + // 构建并返回错误结果 + // 如果异常消息非空,则使用异常消息,否则使用默认的“操作失败”消息 + return Result.error(StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作失败"); + } +} + diff --git a/trading_platform/src/main/java/com/trading_platform/interceptors/LoginInterceptor.java b/trading_platform/src/main/java/com/trading_platform/interceptors/LoginInterceptor.java new file mode 100644 index 0000000..c63b9ca --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/interceptors/LoginInterceptor.java @@ -0,0 +1,37 @@ +package com.trading_platform.interceptors; + +import com.trading_platform.utils.JwtUtil; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import java.util.Map; + +@Component +public class LoginInterceptor implements HandlerInterceptor { + /** + * 在请求处理之前进行拦截处理 + * + * @param request 请求对象,用于获取请求头中的Authorization信息 + * @param response 响应对象,用于设置响应状态码 + * @param handler 处理请求的处理器对象 + * @return 如果验证通过,则返回true继续执行下一个拦截器或处理器,否则返回false中断执行 + * @throws Exception 如果在处理过程中发生异常,则抛出异常 + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 从请求头中获取Authorization信息 + String token = request.getHeader("Authorization"); + try { + // 解析令牌,验证其有效性 + Map claims = JwtUtil.parseToken(token); + // 如果令牌有效,继续执行下一个拦截器或处理器 + return true; + } catch (Exception e) { + // 如果令牌无效或解析出错,设置响应状态码为401未授权,并中断执行 + response.setStatus(401); + return false; + } + } +} diff --git a/trading_platform/src/main/java/com/trading_platform/mapper/UsersMapper.java b/trading_platform/src/main/java/com/trading_platform/mapper/UsersMapper.java new file mode 100644 index 0000000..2bb250e --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/mapper/UsersMapper.java @@ -0,0 +1,38 @@ +package com.trading_platform.mapper; + +import com.trading_platform.entity.Users; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Select; +import java.util.Optional; + +/** + * 用户映射器接口,用于定义用户相关数据库操作 + * 使用MyBatis的@Mapper注解标识这是一个MyBatis映射器接口 + */ +@Mapper +public interface UsersMapper { + + /** + * 根据用户名查询用户信息 + * + * @param username 用户名,用于查询用户信息 + * @return 返回一个Optional封装的Users对象,如果用户不存在,则返回Optional.empty() + */ + @Select("SELECT * FROM users WHERE username=#{username}") + Optional findByUsername(String username); + + /** + * 向数据库中插入一个新用户 + * + * @param user 要插入的用户对象,包含用户的所有信息 + * 使用MyBatis的@Insert注解定义插入操作的SQL语句 + * 使用@Options注解配置插入操作生成的主键返回到user对象的id属性 + */ + @Insert("INSERT INTO users (headPicUrl, nickName, username, mobile, password, sex, email, address, status, create_time, update_time) " + + "VALUES (#{headPicUrl}, #{nickName}, #{username}, #{mobile}, #{password}, #{sex}, #{email}, #{address}, #{status}, #{createTime}, #{updateTime})") + @Options(useGeneratedKeys = true, keyProperty = "id") + void addUser(Users user); +} + diff --git a/trading_platform/src/main/java/com/trading_platform/service/UsersService.java b/trading_platform/src/main/java/com/trading_platform/service/UsersService.java new file mode 100644 index 0000000..51ed37c --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/service/UsersService.java @@ -0,0 +1,26 @@ +package com.trading_platform.service; + +import com.trading_platform.entity.Users; + +/** + * UsersService接口定义了用户服务的标准操作 + * 它提供了用户查询和注册的功能 + */ +public interface UsersService { + /** + * 根据用户名查找用户信息 + * + * @param username 用户名,用于查询用户信息 + * @return 返回用户对象如果找到,否则返回null + */ + Users findByUsername(String username); + + /** + * 注册新用户 + * + * @param username 用户名,新用户的唯一标识 + * @param password 密码,用于用户身份验证 + */ + void register(String username, String password); +} + diff --git a/trading_platform/src/main/java/com/trading_platform/service/impl/UsersServiceImpl.java b/trading_platform/src/main/java/com/trading_platform/service/impl/UsersServiceImpl.java new file mode 100644 index 0000000..d01b130 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/service/impl/UsersServiceImpl.java @@ -0,0 +1,46 @@ +package com.trading_platform.service.impl; + +import com.trading_platform.entity.Users; +import com.trading_platform.mapper.UsersMapper; +import com.trading_platform.service.UsersService; +import com.trading_platform.utils.Sha256Util; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UsersServiceImpl implements UsersService { + /** + * 用户服务实现类,提供用户相关的业务操作 + */ + + // 用户映射器,用于执行与用户相关的数据库操作 + private final UsersMapper usersMapper; + + @Autowired + public UsersServiceImpl(UsersMapper usersMapper) { + // 构造方法注入UsersMapper + this.usersMapper = usersMapper; + } + + @Override + public Users findByUsername(String username) { + // 根据用户名查询用户信息 + // 参数username:要查询的用户名 + // 返回:用户对象,如果找不到则返回null + return usersMapper.findByUsername(username).orElse(null); + } + + @Override + public void register(String username, String password) { + // 注册新用户 + // 参数username:用户的用户名 + // 参数password:用户的明文密码 + String sha256String = Sha256Util.getSHA256String(password); + Users user = new Users(); + user.setUsername(username); + user.setPassword(sha256String); + // 其他字段可以根据需要设置 + usersMapper.addUser(user); + } +} + diff --git a/trading_platform/src/main/java/com/trading_platform/utils/JwtUtil.java b/trading_platform/src/main/java/com/trading_platform/utils/JwtUtil.java new file mode 100644 index 0000000..02b2ebd --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/utils/JwtUtil.java @@ -0,0 +1,49 @@ +package com.trading_platform.utils; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; + +import java.util.Date; +import java.util.Map; + +public class JwtUtil { + private static final String KEY = "itheima"; + + /** + * 生成JWT令牌 + * 此方法接收一个包含声明的Map对象,并基于这些声明生成一个JWT令牌 + * 令牌将在未来12小时内到期 + * + * @param claims 一个包含各种声明(claims)的Map对象,这些声明将被编码到JWT中 + * @return 返回生成的JWT令牌字符串 + */ + public static String genToken(Map claims) { + // 创建一个JWT,并添加自定义声明以及设置过期时间 + return JWT.create() + .withClaim("claims", claims) + .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 6060 * 12)) + .sign(Algorithm.HMAC256(KEY)); + } + + /** + * 解析令牌字符串并返回其中的声明信息 + * 该方法使用JWT库验证令牌的完整性,并提取其中的声明内容 + * + * @param token 令牌字符串,需要验证和解析的JWT令牌 + * @return 包含令牌声明信息的映射对象,键为声明的名称,值为声明的值 + */ + public static Map parseToken(String token) { + // 使用预定义的密钥验证JWT令牌,并构建验证器 + // 这里使用HMAC256算法进行签名验证 + return JWT.require(Algorithm.HMAC256(KEY)) + .build() + // 验证令牌的有效性,如果无效将抛出异常 + .verify(token) + // 获取声明信息,声明是JWT中携带的自定义数据 + .getClaim("claims") + // 将声明信息转换为映射对象并返回 + .asMap(); + + } + +} diff --git a/trading_platform/src/main/java/com/trading_platform/utils/Sha256Util.java b/trading_platform/src/main/java/com/trading_platform/utils/Sha256Util.java new file mode 100644 index 0000000..c680b50 --- /dev/null +++ b/trading_platform/src/main/java/com/trading_platform/utils/Sha256Util.java @@ -0,0 +1,67 @@ +package com.trading_platform.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Sha256Util { + private static final Logger logger = LoggerFactory.getLogger(Sha256Util.class); + protected static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + private static final ThreadLocal messageDigestThreadLocal = new ThreadLocal<>() { + @Override + protected MessageDigest initialValue() { + try { + return MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException e) { + logger.error("初始化失败,MessageDigest不支持SHA-256.", e); + return null; + } + } + }; + + /** + * 将字符串转换为SHA-256哈希值。 + * + * @param str 需要转换的字符串 + * @return SHA-256哈希值 + */ + public static String getSHA256String(String str) { + return getSHA256String(str.getBytes()); + } + + /** + * 将字节数组转换为SHA-256哈希值。 + * + * @param bytes 需要转换的字节数组 + * @return SHA-256哈希值 + */ + public static String getSHA256String(byte[] bytes) { + MessageDigest md = messageDigestThreadLocal.get(); + if (md == null) { + logger.error("MessageDigest 初始化失败,无法计算SHA-256哈希值。"); + return null; + } + md.reset(); // 重置MessageDigest + byte[] digest = md.digest(bytes); + StringBuilder sb = new StringBuilder(64); // 设置初始容量 + for (byte b : digest) { + sb.append(hexDigits[(b >> 4) & 0x0f]); + sb.append(hexDigits[b & 0x0f]); + } + return sb.toString(); + } + + /** + * 判断字符串的SHA-256校验码是否与一个已知的SHA-256码相匹配。 + * + * @param password 要校验的字符串 + * @param sha256PwdStr 已知的SHA-256校验码 + * @return 如果匹配返回true,否则返回false + */ + public static boolean checkSHA256(String password, String sha256PwdStr) { + String sha256Password = getSHA256String(password); + return sha256Password != null && sha256Password.equals(sha256PwdStr); + } +} diff --git a/trading_platform/src/main/resources/application.yml b/trading_platform/src/main/resources/application.yml new file mode 100644 index 0000000..b1f565d --- /dev/null +++ b/trading_platform/src/main/resources/application.yml @@ -0,0 +1,6 @@ +spring: + datasource: + name: localhost + url: jdbc:mysql://localhost:3306/secondhandtransactions?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai + username: root + password: 123456 \ No newline at end of file diff --git a/trading_platform/src/test/java/com/trading_platform/TradingPlatformApplicationTests.java b/trading_platform/src/test/java/com/trading_platform/TradingPlatformApplicationTests.java new file mode 100644 index 0000000..578fa16 --- /dev/null +++ b/trading_platform/src/test/java/com/trading_platform/TradingPlatformApplicationTests.java @@ -0,0 +1,13 @@ +package com.trading_platform; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class TradingPlatformApplicationTests { + + @Test + void contextLoads() { + } + +}