Skip to content

Commit beed419

Browse files
committed
[PW-11.6/ret] Add README.md file
Adding functional, structural description for this proj (what/how). Worth noting: - that this is a realization of the "Students Dashboard v2 CRM" app. core: B-3 / JS-BL
1 parent b3e5d51 commit beed419

File tree

4 files changed

+144
-3
lines changed

4 files changed

+144
-3
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Students-dashboard-CRM
2+
3+
### Описание проекта
4+
5+
Данный проект — это веб-приложение для управления данными о студентах. Приложение прошло две стадии реализации:
6+
7+
1. Изначально работало на локальном сервере с JSON-файлом.
8+
2. Перешло на удалённый сервер **Render**, обеспечивая постоянное хранение/обновление данных.
9+
3. Добавилась поддержка Session storage, позволяющая сохранять данные на клиенте между обновлениями страницы (для тестирования функциональности приложения, каждому).
10+
11+
Основной функционал включает в себя добавление, удаление, сортировку, фильтрацию и валидацию данных студентов.
12+
13+
[🔗 Демо-версия на GitHub Pages](https://matowdev.github.io/fullstack-js-by-skillbox/core-courses/3-js-basic-level/11-server-async-await/11-6-pw-11-server-async-await/students-db-client/)
14+
15+
---
16+
17+
### Функциональность
18+
19+
- **Добавление студентов** (через форму ввода с валидацией данных).
20+
- **Фильтрация студентов** (по Ф.И.О., факультету, году начала и окончания обучения).
21+
- **Сортировка студентов** по различным параметрам (Ф.И.О., факультет, дата рождения, годы обучения).
22+
- **Удаление студентов** (с подтверждением перед удалением).
23+
- **Динамическое обновление таблицы** (при изменениях в данных).
24+
- **Поддержка интерактивных тултипов** (для отображения информации).
25+
- **Отображение спиннера при загрузке данных с сервера** (спиннер при ожидании ответа сервера).
26+
- **Использование Session storage** для хранения данных (на клиенте).
27+
28+
---
29+
30+
### Внешний вид приложения
31+
32+
![Students-dashboard-CRM]()
33+
34+
---
35+
36+
### Используемые технологии и библиотеки
37+
38+
#### Front-end:
39+
40+
- **HTML, CSS, JavaScript** – основные технологии проекта.
41+
- **Bootstrap 5.3.3** – стилизация элементов и адаптивность.
42+
- **jQuery 3.7.1** – вспомогательные манипуляции с DOM.
43+
- **Tippy.js 6.3.7** – всплывающие подсказки для элементов интерфейса.
44+
- **Session Storage** – сохранение данных на клиенте между обновлениями страницы.
45+
46+
#### Back-end:
47+
48+
- **Node.js** – серверная часть для обработки запросов.
49+
- **REST API** – используется для взаимодействия между клиентом и сервером.
50+
- **JSON** – формат хранения данных о клиентах.
51+
- **Render** – платформа для хостинга серверной части (сервер переходит в "спящий" режим при простое, поэтому первая загрузка может занять несколько секунд).
52+
53+
---
54+
55+
### Структура проекта
56+
57+
#### Основные принципы кода:
58+
59+
- **Одна функция – одно действие**: каждая функция выполняет строго одну задачу.
60+
- **Чистый код**: все переменные и функции имеют понятные названия.
61+
- **Модульность**: код разделён на логические блоки.
62+
63+
#### Основные файлы и папки:
64+
65+
```
66+
project-root/
67+
│── students-db-client/ # Клиентская часть:
68+
│ ├── css/ # стили проекта
69+
│ ├── fonts/ # шрифты
70+
│ ├── images/ # изображения
71+
│ ├── js/ # логика приложения
72+
│ ├── libs/ # подключенные библиотеки
73+
│ ├── index.html # основная страница панели управления
74+
│── students-db-server/ # Серверная часть:
75+
│ ├── index.js # основная логика сервера
76+
│ ├── package.json # настройки и зависимости сервера
77+
│── README.md # Описание проекта
78+
```
79+
80+
---
81+
82+
### Основные файлы и их назначение
83+
84+
#### `index.html`
85+
86+
- Основная страница с панелью управления студентами.
87+
- Включает таблицу данных, форму фильтрации и добавления.
88+
89+
#### `index.js` (клиентская часть)
90+
91+
- Управляет логикой работы приложения.
92+
- Обрабатывает ввод данных, сортировку, фильтрацию и валидацию.
93+
- Выполняет запросы к серверу на Render для получения, обновления данных (при первичной загрузке/перезагрузке страницы).
94+
- Отрабатывает логику Session storage для хранения данных (на клиенте).
95+
96+
#### `index.js` (серверная часть)
97+
98+
- Обрабатывает REST API-запросы.
99+
- Хранит данные студентов на удалённом сервере Render.
100+
- Поддерживает `GET`, `POST`, `PATCH`, `DELETE` методы для работы с данными студентов.
101+
102+
#### Работа с API
103+
104+
Система взаимодействует с сервером через REST API, развернутый на Render:
105+
106+
- `GET https://students-dashboard-crm.onrender.com/api/students` – получение списка студентов.
107+
- `POST https://students-dashboard-crm.onrender.com/api/students` – добавление "нового" студента.
108+
- `DELETE https://students-dashboard-crm.onrender.com/api/students/{id}` – удаление студента.
109+
110+
---
111+
112+
### На что обратить внимание?
113+
114+
1. **Валидация данных** – проверка корректности введённых данных (Ф.И.О., дата рождения, годы обучения).
115+
2. **Адаптивность** – дизайн подстраивается под разные экраны.
116+
3. **Интерактивные элементы** – всплывающие подсказки, анимации, плавные переходы.
117+
4. **Спиннер загрузки** – отображается при получении данных с удалённого сервера (при "просыпании" Render-сервера).
118+
119+
---
120+
121+
### Запуск проекта
122+
123+
#### Клиентская часть:
124+
125+
```sh
126+
cd students-db-client
127+
open index.html
128+
```
129+
130+
#### Серверная часть:
131+
132+
```sh
133+
cd students-db-server
134+
node index.js
135+
```
136+
137+
---
138+
139+
### Заключение
140+
141+
**Students-dashboard-CRM** – это приложение, в котором реализована работа с динамическими таблицами, фильтрацией, сортировкой и взаимодействием с сервером через API. Перевод на **Render** позволил устранить необходимость локального сервера, обеспечив удобный доступ к данным из любой точки. Проект показывает практическое применение **async/await**, **fetch API** и базовой работы с Session storage/сервером в веб-приложениях.

core-courses/3-js-basic-level/11-server-async-await/11-6-pw-11-server-async-await/students-db-client/css/spinner.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
}
1313

1414
.spinner {
15-
width: 90px;
16-
height: 90px;
15+
width: 80px;
16+
height: 80px;
1717
border: 15px solid var(--light-blue);
1818
border-top-color: var(--specific-blue);
1919
border-radius: 50%;

core-courses/3-js-basic-level/11-server-async-await/11-6-pw-11-server-async-await/students-db-client/css/table.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
width: 100%;
2626
height: 245px;
2727
font-weight: var(--medium);
28-
font-size: 17px;
28+
font-size: 18px;
2929
color: var(--bootstrap-red);
3030
text-align: center;
3131
}
79 KB
Loading

0 commit comments

Comments
 (0)